Archived Projects
Certificate Transparency Monitor
Certificate Transparency is a system for monitoring and auditing publicly-trusted SSL certificates. I run a Certificate Transparency monitor, which checks that log servers are behaving correctly.
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).
Lightstone
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.
minecraft-installer
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.
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.