I enjoy programming and contribute to a variety of open source projects. Here are some of them:


  • mail archiving: systems to help with managing email attachments
  • rdifffs: a virtual filesystem for rdiff-backup repositories, written in Haskell
  • vcs-lint: a script to check for common problems with version control repositories (especially those of Debian packaging)
  • game-data-packager - program to generate and install .deb files of commercial Game data, to facilitate integration with the Debian package manager


These are things which, for one reason or another, are not currently being worked on.

  • debgtd: a Debian bug workflow tool
  • Some brainstorming on how to effectively manage digital photos (no answers yet, I'm afraid)
  • greasemonkey scripts for improving the usability of Debian mailing list archives
  • dsafilter: a mail filter for annotating Debian Security Advisories (DSAs) with personalised information (e.g. does this DSA affect you?)
  • wadc: a programming language for describing maps for the computer game Doom
  • twitter: A system and python script for backing up tweets


  • c++ lecture.pdf: I gave a C++ lecture to fellow students whilst at University. These are some notes my friend Dave made from the lecture.
  • doom: some C code for parsing Doom 'WAD' files, including a proof-of-concept virtual filesystem.
  • endian: some ruminations on the correct way to handle endian-ness in C
  • jonsubst.pl: a substitution filter for the irssi IRC client
  • c design patterns: the beginnings of a collection of "Design Patterns" common in C source code


There's a list of retired projects and half-coded ideas that I am unlikely to continue with at shelved.

Writing about software

Other pages:

Blog posts: