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


You can find all my NPM packages at

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.

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

Thinodium - a light-weight Object Document Mapper (ODM) for Node.js with pluggable adapters.

React.js plugins - a collection of React.js and React Native plugins I’ve written.

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.