Free Software

My Projects

These are my own projects, in descending chronological order of release. I’ve only listed projects that have released something; I have several ‘on the boil’ as well (check my GitLab).

heroku-buildpack-common-lisp (Common Lisp)

A Heroku buildpack that uses Roswell to compile Common Lisp applications.

freebsd-setup (Shell)

A set of scripts and associated configuration files to take a vanilla installation of FreeBSD and turn it into a nice development environment.

arghspec (Ruby)

Electrocutes the user when RSpec specs fail, by setting an output on a Phidget I/O board momentarily high.

g3-setup (Shell)

A set of scripts and associated configuration files to take a vanilla installation of Ubuntu 10.04 LTS Server and turn it into a Lubuntu-based development environment. It targets Apple iMac G3s - that is, the old slot-loading PowerPC versions.

secret-santa (Ruby)

Secret Santa is a tool to randomly select Christmas gifts from eBay.

emacs-setup (Emacs Lisp)

My personal Emacs setup with a bunch of plugins including modes for Rails, CoffeeScript, Inform and more.


A set of scripts and associated configuration files to take a vanilla installation of Linux Mint and turn it into a nice development environment. See branches for supported versions; the current release version of Linux Mint is always supported by master.

MyFitnessData (Common Lisp)

I wanted to learn Common Lisp, so I built a command-line web scraper to extract raw weight data from the diet & fitness site I use, MyFitnessPal. It runs happily on Ubuntu and Microsoft Windows, & includes an installer for the latter.

eximo (C#)

Another quick scratch-an-itch app, Eximo looks in the trace log for binding errors, and displays them in the application window and on the Taskbar Notification Area.

olepop (C#)

VBA stores dates in a numerical format (equivalent to .NET’s OADate). olepop polls the clipboard, looking for numbers that could be OADates, or for colon-separated strings including a number (which is what you’ll get if you copy a date to the clipboard from the VBA debugger). It’ll then format the number as a short date, and pop it up from the taskbar. Handy if you’re debugging VBA.

nlog4vba (C#)

nlog4vba provides a simple Excel add-in that can be used to invoke NLog from within a VBA application. This allows for easy comparison of legacy VBA and modern .NET code.

invisio (C#)

invisio is a simple Windows Forms app to test web proxies with a variety of arguments. It’s a quick & dirty ‘scratch an itch’ app that took around an hour to put together.

Unfeature (Javascript)

Unfeature is a Greasemonkey script to clean up the the appearance of YouTube. I wrote it after getting sick of seeing plugs for sleazy or tasteless videos when viewing content I wanted to see. It’s now obsolete; the excellent AdBlock for Chrome does this and more.

Wuji (C#)

Wuji is a simple tool for Windows that runs scripts when keyboard shortcuts are pressed. The scripts themselves are written in C# courtesy Oleg Shilo’s excellent CsScript tool.

Incedo (Ruby)

Incedo monitors specified RSS feeds for key phrases, and sounds an alarm if it finds any. I wrote Incedo to monitor the CFA feed during fire season.

99 Bottles of Beer (Z80 Assembly)

My contribution to the 99 Bottles of Beer collection, written in Z80 Assembly for the Amstrad CPC.

NArg (C#)

NArg is a simple command-line parsing library for .NET. which I wrote while working on TraceTail.

TraceTail (C#)

TraceTail is similar to the UNIX ‘tail’ utility, except that it can be used to filter lines, and it writes to the system trace log on Windows.

Dougal (Perl)

Dougal is a ‘mail washer’ for POP3 email accounts; it deletes email based on configurable criteria. I wrote this back in the days before ubiquitous spam filters.

Count (C)

My first Free Software project, Count is a simple utility for counting the size of directories and files. It builds on any vaguely POSIX-compliant system (I had fun getting it running properly on Solaris).


These are projects I’ve co-created with friends & colleagues.

OBZVault (Java)

When I co-founded OffByZero with Armin, we producted an app called OBZVault. It’s a cross-platform encrypting text editor, designed to store secret information like passwords. We’ve since released it as Free Software under the LGPL.

Contributed To

These are other people’s projects to which I’ve contributed code. Contributions range from significant (e.g. adding Linux or FreeBSD support) to very minor (e.g. fixing typos in documentation).

node-cachedir (JavaScript)

Get a directory for your caching needs.

org-present (Emacs Lisp)

Ultra-minimalist presentation minor-mode for Emacs org-mode.

chromedriver-helper (Ruby)

Easy installation and use of chromedriver, the Chromium project’s selenium webdriver adapter.

AgUnit (C#)

AgUnit is a plugin for Jetbrains ReSharper (R#) that allows you to run and debug Silverlight unit tests from within Visual Studio.

NCoverCop (C#)

NCoverCop is a NAnt task that fails your build if your code coverage (as measured by NCover) drops. Very, very handy.

.NET FTP Client (C#)

As the name suggests, .NET FTP Client is just that - an FTP client library for .NET, which I used in one of my jobs to download client data in batches from their FTP server.

nokogiri (Ruby)

The well-known XML / HTML / etc. parser for Ruby that uses libxml under the hood for good performance.

cpc-sdcc-rom (C, Z80)

This is a project template to introduce developers to building ROMs for the Amstrad CPC, an 8-bit micro-computer that is quite popular in retro computing circles.

team_page (Ruby)

Rails 3 engine that lets you build a quick and dirty team page. Built for

ffaker (Ruby)

ffaker generates useful test data; very useful in conjunction with test factories.

sinatra-angular-sprockets-seed (Ruby, JavaScript)

This is a skeleton project demonstrating how to build an AngularJS project upon Ruby-based infrastructure.