I’ve written a variety of programs, in a variety of languages, in the years I’ve been programming. Several of them are here. You can find some more of my work (contributions to other projects, random little hacks, etc.) on GitHub.

Research Projects

These are active projects I am working on in the course of my research.

  • LensKit — recommender toolkit in Python.
  • binpickle — data serialization library leveraging Pythons Pickle Protocol 5 to support both compressed and memory-mapped (mutually exclusive) storage of NumPy arrays and similar dat structures. Useful for serializing SciKit-Learn models.
  • seedbank — initialize multiple Python random number generators with a single command.


Dormant Projects

I am not actively using any of these programs, but the code is available for those who might find it useful. They worked for the intended purpose last I used them, but are not seeing active development.

  • argparse4s — a Scala library for command line parsing, using argparse4j as its backend.
  • bogotest — C unit testing framework.
  • cson-sort
  • fand — a small C daemon for controlling fans via the Linux sysfs interface.
  • giftdraw — draw names for gift exchanges and e-mail each participant with their match.
  • Grapht — a dependency injection framework for Java. It was born as a means to configure LensKit recommender algorithms, as existing DI toolkits didn’t provide enough flexibility.
  • ra-suite — very old Perl script for storing reliable backups on unreliable media with par2. I don’t really recommend using it.
  • rstash — file transfer program mainly intended for push-based backups.
  • vim-oz — Vim syntax files for the Oz programming language.

Discontinued projects

I no longer use or work on these programs, and they are either incomplete or bitrot has rendered them nonfunctional. I leave them here in case someone finds the code useful for something, or has an interest in taking over the project.

  • HailWhale — Qt-based Twitter client, discontinued and woefully out of date with respect to API changes. No longer online due to BitBucket’s discontinuance of Mercurial support.