LazySorted
Programmers often sort an entire list when they really only want part of it, like the median. The problem with this is that the programmer ends up with O(n log n) runtimes, even if the optimal algorithm runs in linear time. LazySorted solves this problem: the LazySorted function is a drop-in replacement for the builtin sorted function, returning a Python object that's a partially and lazily sorted list. This allows the programmer to interact with it as though it were a sorted list, but achieve efficient runtimes anyway.
Writing this C-extension taught me about the CPython implementation of Python objects, and about how prefetching can greatly improve runtimes. In my case, I got a 2x speedup by adding one line of code. You can install LazySorted with
$ pip install lazysortedor
$ easy_install lazysorted
Numutil
numutil is a Python package that helps people parse strings like "five and a half", "1.3 million", and "123,456" into numbers, and pretty print floats, ints, and Fractions into strings of these forms. It's super simple, with just two functions: num2str and str2num. You can install it with
$ pip install numutilor
$ easy_install numutil
Causal Graphical Models
I worked with my teacher Mathias Drton on estimating causal networks. In layman's terms, it turns out that it actually is possible to measure some causal relationships from observational data, at least when there are three or more variables you're considering. The work we did on extending these models culminated in a recently published paper: PC Algorithm for Nonparanormal Graphical Models.
Markovian
Markovian is a computer program that plays chess passably well. I've written about how it works, and I've put the code up on github. I'd really recommend reading the article or asking me about it in person; there are some fascinating issues involved in chess programming and some very clever tricks, (none of which I came up with myself, I'm afraid).
Calculating My Latitude and Longitude
I once calculated the latitude and longitude of my house by measuring the time of noon and the angle of elevation to the sun at noon. I was off by a little under a hundred miles to the west, mostly due to the difficulty with measuring the argmax of a function compared to measuring the max.