I enjoy programming and contribute to a variety of open source projects. You can try browsing the programming languages I use. Here's a list of some of my own programs:

  • dsafilter: a mail filter for annotating Debian Security Advisories (DSAs) with personalised information (e.g. does this DSA affect you?)
  • greasemonkey scripts for improving the usability of Debian mailing list archives
  • mail archiving: systems to help with managing email attachments
  • rdifffs: a virtual filesystem for rdiff-backup repositories
  • twitter: A system for backing up tweets
  • vcs-lint: a script to check for common problems with version control repositories (especially those of Debian packaging)
  • wadc: a programming language for describing maps for the computer game Doom


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


  • 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 (Perl)
  • c design patterns: the beginnings of a collection of "Design Patterns" common in C source code

Writing about software

Other pages:

Blog posts: