As of September 2013, I am no longer taking on new clients except for projects estimated to be less than 30 billable hours.


As a consultant, I built full-stack software that used advanced analytics techniques. Deciding on a set of algorithms to tackle a problem was often only a tiny part of getting a working system running against real data.

Researchers typically didn't have the software engineering experience to build full-stack applications, while software engineers shied away from the hard math or didn't have experience with data-heavy workloads.

This is where I came in, I helped my clients start from wherever they were, with whatever technology they were using to get a functional analytics layer working. I often put together a simple database layer and user interface to get things moving for those who started from scratch.


I have done numerous projects over the years that explore what can be derived from companies' data and how to integrate that knowledge into intuitive human interfaces.

I have 15 years of hands-on software development experience including 6 years with Java and four with Python. I am also proficient in Ocaml, a functional language popular in academic circles, and have used Ruby for lightweight scripting. I normally develop on Linux platforms hosted on cloud providers AWS or DigitalOcean.

I've worked at the data mining group of the National Center for Supercomputing Applications both building big data infrastructure and working at the application layer to provide specific results to corporate partners.

Past Projects [0]

Nexlp (2013)

An e-Discovery startup in Chicago. Their core product uses a natural language processing toolkit from the University of Illinois and a graph database (Neo4j) to analyze sets of millions of emails at a time. The primary deliverable was a pattern detection module that combined frequent item set analysis and anomaly detection to generate patterns of the form "Bob emailed Sally late at night about Chicago 12 times during the week of Dec 4, 2006, but normally this occurred 0.03 times/week."

Past Projects [1]

rVibe (2013)

A boutique maker of training software for the pharmaceutical industry. Handled devOps for the company for nine months. Designed and implemented build tools and a performance benchmarking suite. Performed weekly deploys to production servers and adjusted agile release schedule and methodology as needed.

Past Projects [2]

Fuzzy economics project (2011/2012)

Privately funded by a (stealth) organization, this was a bleeding edge project to create a system for creating expansive yet detailed ontologies of hypotheses and their supporting evidence. Built the full stack prototype using Java EE with JSP and the JavaBayes toolkit for Bayesian Networks.

Services Offered [0]

Full-Stack Prototypes

I work with a non-technical client to build a full-stack prototype by myself or with other contractors. A good rule of thumb is that a "prototype" is something that works, has a minimal html/css interface, can accommodate less than 50 users, and performs nightly backups of user data. Anything more complex typically requires expanding the dev team to include people like javascript developers and database experts.

Time is reserved and billed in weekly chunks. Engagements are one to six months except for maintenance work for existing clients, which is billed hourly.

Services Offered [1]

Software Development Team Member (Analytics Focus)

I work with an existing software team to add analytics features to their application.

Time is reserved and billed in weekly chunks. Engagements are one to six months except for maintenance work for existing clients, which is billed hourly.

Services Offered [2]

Guidance and Analysis

Sometimes a competent development team just needs to be pointed in the right direction when getting started with an analytics feature. I can spend a few days doing a requirements gathering (with lots of hand holding and suggestions) and give my recommendation for an approach. I can optionally do an in-depth writeup of a concrete approach that has more of the details worked out.

Time is reserved and billed by the day. As little as a day or two can have benefits. If a custom machine learning algorithm needs to be developed, a writeup will likely take 2-3 weeks and should be considered semi-high risk.