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 my profiles on GitHub, BitBucket, and GitLab.

Research Projects

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

  • LensKit — recommender toolkit in Java.
  • 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.


  • Script repository — a bunch of scripts I’ve written for various purposes.
  • giftdraw — draw names for gift exchanges and e-mail each participant with their match.

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.
  • 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.