Free Software

Home Blog Resume Canary IF Photos Projects Software Thanks Writing

My Projects

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

99 Bottles of Beer (Z80 Assembly)

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

arghspec (Ruby)

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


A user script to allow easy downloads of BigPond Music tracks on operating systems other than MS Windows.

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).

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.

emacs-setup (Emacs Lisp)

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

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.

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. Note that I haven’t been maintaining this project since I switched back to GNU/Linux.

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.

heroku-buildpack-common-lisp (Common Lisp)

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

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.

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.


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. Note that I haven’t been maintaining this project since I switched back to GNU/Linux.

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.

NArg (C#)

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

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.

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.

org-present-remote (Emacs Lisp)

An Emacs plugin to provide Web-based remote control for org-present. I’ve also had this published this on melpa.


A very simple Octal reader macro in Common Lisp. Used as a learning exercise, & to demo reader macros to friends & colleagues.

rspec-rage (Ruby)

An RSpec formatter that rages against failure (FFFFFFUUUUUUUUUU….)

secret-santa (Ruby)

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

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.

ubuntu-setup (Shell)

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

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.

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.

youtube-crapfilter (JavaScript)

youtube-crapfilter is a Greasemonkey user script, designed to remove a lot of the noise and gratuitous NSFWity from YouTube.


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

OBZVault (Java)

When I co-founded OffByZero with Armin, we produced 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).

AgUnit (C#)

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

chromedriver-helper (Ruby)

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

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.

DuctTape (CoffeeScript)

A CoffeeScript REPL for the web.


EditorConfig plugin for emacs.

ffaker (Ruby)

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


Luminus is a Clojure micro-framework based on a set of lightweight libraries.

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.

node-cachedir (JavaScript)

Get a directory for your caching needs.

nokogiri (Ruby)

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

org-present (Emacs Lisp)

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

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

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

team_page (Ruby)

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

testem (JavaScript)

Test’em ‘Scripts! A test runner that makes Javascript unit testing fun.

yari (Emacs Lisp)

Yet another RI interface.