Carl Dunham, Developer in Providence, RI, United States
Carl is available for hire
Hire Carl

Carl Dunham

Verified Expert  in Engineering

Python Developer

Providence, RI, United States
Toptal Member Since
March 6, 2014

Carl has a lifelong passion for building software, systems, and teams. He caught the bug in college, began working with a startup the summer before graduation, and hasn't stopped since. He loves learning new languages and technologies, and most of all, he like using them to build large, interesting things.


Node.js, AngularJS, JavaScript, PostgreSQL, Python
The Search Agency
Amazon Web Services (AWS), MySQL, PHP, JavaScript, HTML, Java, MongoDB, R...
Search 123
HTML, MySQL, Perl, JavaScript, Java




Preferred Environment

RStudio, Git, Atom, Linux, MacOS

The most amazing...

...system I've ever designed was a full-stack SaaS SEM bid management system that used predictive algorithms, models, and large data sets to optimize campaigns.

Work Experience

Senior Software Architect

2014 - PRESENT
  • Architected and developed an Identity-as-a-Service for consumers and IoT devices.
  • Applied symmetric and asymmetric cryptography techniques.
  • Wrote major sections of online donations platform used by political and non-profit organizations.
  • Built out IoT infrastructure for secure communication among edge devices, infrastructure servers, and users.
  • Engineered support and devops as needed.
Technologies: Node.js, AngularJS, JavaScript, PostgreSQL, Python

Founder and CTO

2002 - PRESENT
The Search Agency
  • Built and led the team that developed AdMax® platform, a data-driven decision support system for online marketing campaigns.
  • Developed core frameworks in Java and PHP for ORM, page formatting, concurrency control, and other platform services.
  • Led product development of AdMax local platform, including working with Tier I clients to manage requirements and system integration.
  • Performed data analysis using R and Python on large data sets to extract trend and performance insights.
  • Built location taxonomies from public and other data source in R and Python, including polygon to point-radius conversion algorithms and fine-grained population estimates.
  • Continue to serve as a member of the Board of Directors.
Technologies: Amazon Web Services (AWS), MySQL, PHP, JavaScript, HTML, Java, MongoDB, R, Python

Vice President, Technology

2002 - 2002
Search 123
  • Led team to develop next-generation performance-based search technology using aspects of targeted marketing and linguistic- and meaning-based search techniques.
Technologies: HTML, MySQL, Perl, JavaScript, Java

Managing Director, Simpli

2001 - 2001
United Online
  • Led teams of scientists and engineers to develop state-of-the-art microtargeting technology. Initial applications of the technology resulted in a 3x increase in click yield.
Technologies: HTML, MySQL, JavaScript, Java

Director of Software Development

1999 - 2001
  • Designed and coded features in Java, JavaScript, and HTML, working with Cognitive Scientists and Linguists to develop new search enhancement and targeted content technology.
  • Heavy use of corpus-based/statistical NLP techniques and neural network technology.
Technologies: HTML, MySQL, Perl, JavaScript, Java

Software Development Manager

1993 - 1999
American Power Conversion
  • Introduced several new products, including software that Microsoft included as the UPS monitoring component in Windows 2000.
  • Led redesign of core PowerChute product in Java. First deliverable was developed in half the time as the previous platform with a fraction of the defects.
  • Researched technology trends and assessed impact to APC's business. Wrote several analysis papers and presented quarterly overviews to CEO and executive management.
  • Led team developing award-winning SNMP network management solutions for APC devices. Products included server, workstation, and embedded hardware platforms.
  • Involved with the design and implementation of PowerChute plus for OS/2, Windows NT, and Unix. Improved graphical user interface design using XVT toolkit. System was written in C++.
Technologies: C++, Java


1989 - 1993
Self Employed
  • Developed financial systems, office management systems, and other small business applications mainly in FoxPro.
  • Designed and implemented networked workstations and servers.
Technologies: Visual FoxPro, C++, C

Software Engineer/User Interface Designer

1988 - 1989
Gateway Design Automation
  • Hired to design modern user interfaces for new product features and in upgrading existing ones.
  • Initiated implementation of portable library that would enforce proprietary look and feel while using familiar paradigms from each host platform.
Technologies: C++, C

Software Engineer

1985 - 1988
  • Member of a team designing and implementing User Interface Management System based on early version of X Window System (X6).
  • Involved with User Interface designs for M/CAE product.
Technologies: Shell, Lisp, C

Useful Cookery
Simple website to publish the "USENET Cookbook", an early version of crowdsourcing via a moderated newsgroup. Involved translating TROFF (typeset) files into MongoDB documents by way of JSON, and publishing them through a template-driven Python back-end.

A file from the Useful Cookery project. It read files that were part of the old USENET Cookbook and converted them into Python objects. I used it to load the files into MongoDB as documents and built a small website around them.

Climate Data Analysis
Using map-reduce on AWS to pull from a large meteorological data set and produce maps in R showing wind speed variability.

Patent: System and method for determining weighted average success probabilities of internet advertisements
A method and related system for determining the weighted average conversion (or click-through) probability (WACP) associated with an activity, such as an internet advertising bid activity. The method involves gathering information associated with prior actions relevant to future actions, such as bidding on internet advertisement placement, for example. The gathered information, such as clicks, impressions and conversions resulting from an advertisement placement, is used in an algorithm to calculate the WACP. The method may be carried out as part of a system including one or more computing devices and the execution of instructions embodied in computer-readable media. The algorithm may include the option of weighting the data used, such as by valuing recent data more than older data.

Patent: Method and system for attributing an online conversion to multiple influencers
A method is provided for identifying and crediting interactions leading to a conversion, comprising acts of for each of at least one defined time interval, defining a recency factor used to scale a credit amount given to an influencing event occurring during the defined time interval; identifying at least one influencing event that influenced a conversion event; for each of the at least one influencing events, identifying a defined time interval in which the influencing event occurred and accessing the recency factor for that defined time interval; and apportioning the credit amount given to the conversion event among the at least one influencing event according to the recency factor for each influencing event.

Patent: Cost-per-action search engine system, method and apparatus
Embodiments of the present invention are directed to a search engine system, method, and apparatus comprising a search engine, a participant management system, at least one storage database, a listing database, and at least one feedback mechanism. The search engine accepts input data and utilizes the input data to search for information related to the search terms. Upon retrieval of relevant information, the data analysis module organizes the data related to the search terms into a search results list. To determine the placement of listings upon a search request, the data analysis module determines the probability, for each relevant listing, that the user will ultimately complete the desired action if the listing is shown, wherein the probability of action is determined by a plurality of factors. This probability is then combined with the specific CPA for the advertiser. Transaction information derived from a search and click is returned through the feedback mechanism to the search engine for revised calculation of listing placement.


Python, R, Visual FoxPro, Ruby, Java, JavaScript, C++, HTML, PHP, Perl, C, Lisp, Julia


Django REST Framework, Bootstrap 3, AngularJS, Django, Flask, Ruby on Rails (RoR)


REST, Agile Software Development, Object-oriented Design (OOD), Concurrent Programming, MapReduce, Event-driven Programming, Design Patterns, Service-oriented Architecture (SOA)


Linux, Amazon Web Services (AWS), WordPress, MacOS, RStudio, Google App Engine


MongoDB, MySQL, PostgreSQL, NoSQL


Software Architecture, Scientific Computing, Machine Learning, System Architecture, Spatial Statistics

Libraries/APIs, jQuery, Restangular, Underscore.js, Node.js


Git, Emacs, Subversion (SVN), Shell, Atom, CVS

1995 - 1997

MBA Degree in Business

University of Rhode Island - Kingston, RI

1980 - 1985

Bachelor's Degree in Computer Science

Brown University - Providence, RI