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 my own programs and some others which I've substantially contributed towards:


  • OpenJDK 2018-. OpenJDK, mostly (but not exclusively) the jdk8u, 11u and 17u backports
  • StrIoT 2017-. A purely-functional distributed stream processing system
  • Red Hat OpenJDK container images 2017-. Containerized versions of Red Hat Enterprise Linux's OpenJDK packages
  • WadC 2008-. A programming language for building maps for the computer game Doom


  • github2gogs 2018-. Short script to mirror a user's GitHub repositories to a private Gogs instance.
  • liquorice 2018-2020. Haskell eDSL/Library for algorithmic Doom map construction.
  • Just TODO it 2006-2018. A trivially simple TODO list manager.
  • HWadTools 2017-. Small little Doom utilities written in Haskell.
  • Punctual 2017. A simple shell prompt system.
  • 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.
  • InkFoundry. 2015. Tool to manipulate Doom COLORMAPs.
  • 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. "Detachment": 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


Blog posts: