Arc is a toy operating system for modern PCs with amd64 processors. It is written mostly in C11, with small amounts of Intel-style assembly where required. It can be loaded by any Multiboot 2-compliant boot loader, such as GNU GRUB.


A Swing component which roughly emulates a VT100-compatible terminal.


A program for performing file transfers over a local area network with zero configuration. It uses UDP multicast packets to automatically pair up the sender and receiver.

Laser Tag

A laser tag system based on an AVR microcontroller - specifically, the AVR Atmel ATmega328p. For prototyping I’m using an Arduino Uno board, but I plan to make a custom circuit board with the microcontroller placed directly on it. The software is written in C and does not use the Arduino/Wiring library - it uses AVR libc directly. This means the code has direct control over the timers, interrupts and other features of the microcontroller, which allows many improvements over existing AVR-based systems I have seen (e.g. the code is capable of simultaneous infrared reception and transmission).


An open-source implementation of the Minecraft server software. The project is now defunct, but development has been continued by the Glowstone project. In turn, Glowstone was used as the basis for the Spout project.


A package for Debian and Ubuntu that downloads and installs the official Minecraft client. It creates a menu item and depends on the relevant Java packages so that everything you need is installed automatically.

nginx Certificate Transparency module

A module which adds support for the TLS signed_certificate_timestamp extension to nginx, which is one of the mechanisms supported by Google’s Certificate Transparency project to deliver Signed Certificate Timestamps to TLS clients.

Stone Age Online

Stone Age Online is the code name for a work in progress 3D multiplayer game that I’m developing. It’s written in Java and (after a brief spell of using C++ with Ogre3D for the client) currently uses a custom rendering engine, although I am intending on porting it to jMonkeyEngine.


A program for looking up SSH public keys with LDAP. Inspired by, and (mostly) compatible with, Andrii Grytsenko’s openssh-ldap-publickey Perl script. It can be used with OpenSSH to fetch the authorized keys for a user from an LDAP directory, instead of the user’s ~/.ssh/authorized_keys file.

Tiny BASIC Compiler

A simple compiler for an extremely minimal dialect of BASIC called Tiny BASIC. It’s fairly dumb: it tokenizes and parses the source code into an abstract syntax tree, translates the abstract syntax tree into a stack-based intermediate representation and then turns that fairly directly into amd64 assembly.