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:

  • HWadTools 2017-. Small little Doom utilities written in Haskell.
  • BadISO 2016-. Forthcoming tools for investigating corrupt ISO9660 images.
  • Chocolate Doom 2015-. A Doom engine that aims to accurately reproduce the experience of playing the original DOS game.
  • Just TODO it 2006-.a trivially simple TODO list manager.
  • WadC 2008-2017. A programming language for building maps for the computer game Doom
  • vcs-lint 2015. A script to check for common problems with version control repositories (especially those of Debian packaging)
  • dsafilter 2006-2012. a mail filter for annotating Debian Security Advisories (DSAs) with personalised information (e.g. does this DSA affect you?)
  • mail archiving 2011. Systems to help with managing email attachments
  • rdifffs 2010. A virtual filesystem for rdiff-backup repositories
  • greasemonkey 2007. scripts for improving the usability of Debian mailing list archives


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


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