These are some of my own projects. For more of my work and to see contributions I’ve made to other projects see


Waigo - a next-gen MVC framework for Node.js using ES6 generators.

Heartnotes - encrypted, cross-platform personal diary with cloud backup and sync.

Melkor - Git-backed Wiki engine with Markdown editing.

Ansijet - Ansible playbook automation server. Trigger playbooks through a REST API.

BrowserMail - a proof-of-concept IMAP email client written in Javascript, for the Chrome browser.

Clockmaker - flexible timer management API for Javascript.

Squel - a light-weight SQL query string builder for Javascript which can be used with node.js or in the browser.

Google-TTS - an API for the Google text-to-speech service.

Linear-algebra - an efficient linear-algebra implementation in Javascript. Designed for use in machine learning algorithms.

Weber - a tool to dynamically build and minify scripts, stylesheets and templates on-the-fly.

jQuery AJAX Progress plugin - a jQuery plugin which makes it easy to display a progress indicator (such as “Loading” text) for any AJAX request you make using jQuery.

LZW Async - an efficient asynchronous implementation of the LZW compression algorithm in Javascript.

Fast Levenshtein - an efficient Javascript implementation of the Levenshtein algorithm with asynchronous callback support.

OiS map - interactive map of police shootings in the USA.


Swapmem - a role to setup Swap space on a target Ubuntu system.


Redmine Updates Notifier plugin - a plugin for Redmine which pushes Redmine issue changes to a configurable external URL.


WP Flickr Embed - this plugin lets you insert your Flickr images into your posts.

Page Tagger - this plugin lets you tag your pages just like you do your blog posts.

PHP-in-Posts - this plugin lets you include PHP code inside your blog and comment posts.

RandomHello - this plugin provides methods to output ‘Hello’ in a random language.

Server-Info - this plugin displays information about the webserver on administration (and optionally, blog) pages.

TaoUtils - this plugin provides a few useful utility functions for use within your PHP scripts.


Bulk stock updater - this module allows you to bulk-edit Ubercart product stock levels on a single page.

Open Graph meta tags - this module allows you to add Open Graph meta tags to nodes.


CodeIgniter utilities - some useful libraries, helpers and utilities for the CodeIgniter MVC framework.


Common-Utils - a small collection of utility classes and methods.

3D graphics engine - a simple 3D graphics engine written in Java 1.5.