How I wrote skills for makers, games, and councils!

1K Chess Bots

How to play ZX 1K chess for the ZX81... without a ZX81!?!?

Turing Machine Library


Control a virtual bee swarm with your hands. (In the browser)

The Amiga

A rough breakdown of everything I did on the Amiga: music, code, journalism, and fractals.

Directed Graphs

ZX Javascript

Implement games that look and feel like the ZX81 or Sinclair ZX Spectrum, in the browser.


Preserving the future

Twitter Bots

Stone Raider II

A Retro Remake


Virtual Reality in education

Dragon's Lair

Laserdisc games in the browser

BBC micro:bit

Some unique projects and insights on this programming platform for schools.

TAD Hack 2016

Developing two projects in a single weekend. Both prize winning!


Retro hacking

OpenGL 4 Javascript

An implementation of the OpenGL specification, without using WebGL, for use in web-based games and application.

Space Bounce

An HTML5 game to accompany my book

Slow scan webcam

Build up a single image over ten seconds. All movements will be detected.

Ada 99


Cross-platform programming before Java.


A software synthesizer, written in HTML5. For webkit browsers, like Chrome.

London Tube API

Geo data for all London stations.

Sinclair ZX Vega

Writing ZX Adventure


Create read-only APIs without almost 0 code, and 0 time!

TAD Hack


Voice-focused TODO list

Super Camtoy

Real-time image manipulation with WebRTC.

Jedi Forth

In Javascript. In 230 lines.

A proof of concept project, written on a lazy Sunday morning...


An Esoteric Language

Spoon is a programming language that uses only two characters - 1 and 0. You can hide code inside ASCII art, write painfully obfuscated code, or even switch the two symbols (of 1 & 0) to A and B, < and > or even 0 and 1!

HTML Parser

in C++

A full HTML parser written in C++ which builds every entity and element into an instance of its appropriate class. Pure OO class!


The Arduino Music System

Amstrong is a collection of routines to make the building and prototyping of musical instruments on the Arduino very much easier. It abstracts the hardware pins from their function and supports serial communications, allowing sounds to be played on remote hardware (PC or synthesizer) without additional coding.


Quantum Superpositions

QuBit is a library to support Quantum Superpositions in C++. This allows each CQuBit variable to hold a number of different values at the same time.


Interated Function System

Fixed Point

maths library

Written to accompany the Linux Magazine article, back in 2003, this is still a very usable GPL library.


A web server, data store, and processing language... all in 51K

MIDI Library

Steev's MIDI Library is a pure C library to handle the MIDI protocol, as well as providing code to read and write standards-compliant MIDI files. This provides code functionality for apps wishing to support MIDI file serialism, as well as write music apps that auto-compose music.

Bencode library

Pure and simple - read torrent files in Javascript.


in Java

This holds arbitrary precision fractional numbers held in numerator and denominator.


in Java

Handling serial data, one bit at a time.