I maintain several packages in Debian, the universal operating system.


I’ve contributed a few patches to OpenBSD:


Lintex removes unneeded files after a (La)TeX run: .aux, .log, .dvi, etc, if their timestamp is more recent than the TeX file’s. Also removes the backup files created by your text editor. This keeps a directory containing multiple (La)TeX documents from becoming unmanageable. It is distributed under the GPLv2+ and is available via the lintex Debian package.


Slingshot is a two dimensional, turn based simulation-strategy game set in the gravity fields of several planets. It is a highly addictive game, and never the same from round to round due to its randomly generated playing fields.

It is a deceptively simple game, the goal is to shoot the other spacecraft through the field of planets, but their gravity makes it tricky. The effects of the gravity mean that although it is easy to learn how to play, and to enjoy playing, it could take a lifetime to thoroughly master.

I have yet to release my version of slingshot, see its homepage for the current fork. It is distributed under the GPLv2 and is available via the slingshot Debian package.


Turnin-NG is an assignment submission suite written in Python and composed of turnin and turnincfg. Students can use the turnin command to submit an assignment to a course. Professors and TAs (teaching assistants) can use turnincfg to manage submitted assignments, making them easier to grade. It is distributed under the GPLv2 and is available via the turnin-ng Debian package.

Turnin-NG is currently used by the Queen’s University School of Computing, amongst others.


Bibliosoph is a free and open-source technical reports manager powered by the CakePHP framework. Its main features allow grouping of papers written by the same authors under various aliases (ex: Smith, John E. writes papers under the names “John Edwin Smith”, “Smith, J.” and “J. E. Smith”), easy upload of the technical reports in PDF and PS format, the generation of BibTeX entries, sorting of papers, authors and aliases according to various criterion and a password protected admin interface.

Bibliosoph was previously used by the Queen’s University School of Computing on their Technical Reports website. It is distributed under the GNU AGPLv3+ and others.

ET—a simple equipment tracker

ET is a simple equipment tracker used by one or more administrative assistants at the Queen’s University School of Computing to track loaned laptops and projectors.

I am particularly proud of my PHP flatfile database manager

ET is distributed under a Pseudo-BSD license.


CEVote (Conseil Étudiant Vote) is a student council election manager, written in Django. It was a grade 11 project and was successfully used to elect my high school’s 2009-2010 student council.

It is probably not worth the effort trying to use, it depends on a terribly out of date Django version (whichever was current in January–June 2009, probably 1.0). I tried and failed to get it working. It is distributed under the AGPLv3+.


Having failed to get CEVote working for the 2010-2011 student council elections, I wrote CEVote-NG in two days as a replacement. I’m quite pleased with my progress, CEVote took me 3 months to write (I had never heard of the MVC paradigm before). CEVote-NG uses CakePHP as its framework.

Since CEVote-NG was pitched together in two days, it may be stylistically lacking and/or buggy. It was however successfully used to elect my high school’s 2010-2011 student council. We had about 12 desktops available for voting during lunch (~50 minutes) and ~200 students voted.

CEVote-NG is distributed under the AGPLv3+.