Stuff I've made

I make way, way too many things. Here's a list of some of the ones that are particularly interesting or notable, though there are many other smaller ones. Not all of these projects are finished, and some have been since shut down.

Various PHP RFCs and patches

2013–2016 · C89, Automake · Not dead · Website · Repository

I've contributed various bug fixes, new features and other changes to PHP, specifically its interpreter (written in C) and language specification. The larger changes have involved going through the PHP RFC process.

The most notable of these changes has been PHP 7's Scalar Type Hints, whose RFC and implementation I wrote the initial versions of.

Other RFCs I created include Closure::call, ZPP Failure on Overflow, Integer Semantics, Null Coalesce Operator, Unicode Codepoint Escape Syntax, Void Return Type, Allow specifying keys in list(), and Warn about invalid strings in arithmetic.


2016 · PHP 7 · Not dead · Repository

A PHP program generating images from expressions, inspired by a Twitter bot that does the same. It contains a small parser for an infix mathematical expression language, an evaluator, and a PHP-targeting compiler.

Warring floodfill cellular automata

2015 · JavaScript, HTML5 canvas · Not dead · Website

Colours that live.

pet tha focks

2015 · Haskell, animated GIF · Not dead · Website · Repository

A tiny Tamagotchi-esque game about petting a fox, written in Haskell using the Haste Haskell-to-JavaScript compiler. The pixel art is my own.

ElePHPants Love Coffee

2015 · PHP 7, JavaScript, Zend Engine · Not dead · Repository

A PHP-to-JavaScript compiler written in PHP 7, which takes the naïve approach of taking Zend Engine opcodes as input and replacing them with their corresponding JavaScript with limited analysis. It is not in a very usable state, but it is a fun project.

2015 · C++ (emscripten), Batch · Not dead · Website

Windows 95 emulated in the browser, thanks to the wonderful work of Emscripten, DOSBox, Em-DOSBox and browser engine contributors. I only put up the site.


2015 · JavaScript (node.js), HTML, CSS · Defunct · Website · Repository

A recreation of everyone's favourite Douglas Crockford biographical source.


2015 · JavaScript · Not dead · Repository

A work-in-progress functional, strongly dynamically-typed, concatenative stack-oriented programming language.


2015 · C99 · Not dead · Repository

An incomplete C99 interpreter in C for my esoteric programming language, DevPerc. The original 2011 interpreter was written in Python.


2013 · JavaScript, HTML5 Canvas, PHP, HTML, CSS · Not dead · Website · Repository

A Nintendo 3DS single-page messaging web app made as a homage to the now-defunct Nintendo Letter Box (aka Swapnote). It allows users to draw notes on the touchscreen in multiple colours, send them to other users, and watch the drawing of those notes be replayed. The server-side portion is written in PHP 7 with SQLite. An interesting challenge of this project is that the 3DS is a very limited hardware platform with an old (2009) web browser rendering engine, so the application has to be quite lightweight, and message preview images have to be rendered server-side.

Various Gang Garrison 2 contributions

2011–2015 · Game Maker Language, C, PHP, HTML, CSS · Not dead · Website · Repository

Mostly behind-the-scenes stuff, including implementing a centralised game plugin distribution system, so players can automatically download plugins needed to play on particular game servers. As part of these contributions, I also wrote Faucet HTTP, a Game Maker Language HTTP/1.1 implementation!


2014 · JavaScript, THREE.js, WebSocket · Not dead · Repository

A Minecraft Classic client written in JavaScript using WebSocket and THREE.js.


2013 · JavaScript, node.js, WebSocket, HTML, CSS · Defunct · Website · Repository

A YouTube playlist-synchronising chatroom service written in JavaScript using node.js and WebSocket.


2013 · JavaScript, node.js, WebSocket, HTML, CSS · Defunct · Website · Repository

A multi-user visual chatroom formed as an offshoot of ponyplace, with user-uploadable 2D avatars, a world made up of infinitely-sized rooms decorated with user-generated content, having its own (non-turing-complete) scripting language. Written in JavaScript using node.js and WebSocket.


2012 · JavaScript, node.js, WebSocket, HTML, CSS · Defunct · Website · Repository

A multi-user visual chatroom with animated 2D avatars, shopping system, accounts, multiple rooms, customisation, etc. Written in JavaScript using node.js and WebSocket.


2011 · Python · Not dead · Website · Repository

An esoteric programming language.


2010 · C, WinSock · Defunct · Repository

A very poorly written (I was inexperienced) Minecraft Classic server written in C using WinSock and zlib.