Personal Projects

Personal Interests

I program for fun as well as for profit. My projects include fluid physics simulations, software synthesisers, fractal renderers, raytracers, chat-bots, Sudoku solvers, esoteric programming languages, IOCCC contest entries, steganography, and ways to turn Guitar Hero controllers into actual working instruments. The results of some of these can be seen below.

I have a keen interest in tabletop board/card/roleplaying games and am working on designing some of my own.

I play guitar, saxophone, synthesisers, and I sing, all fairly amateurishly. I've been in a number of bands and musical projects, and released two albums and two EPs over the years. I've recently developed an interest in electronics and have built a hardware analogue synthesiser.

I'm a fan of pyrotechnics, and have worked on several fireworks displays of varying scale and complexity.

Iā€™m the maintainer of the ā€œmathartā€ LiveJournal community, and when it was still active I was a moderator on the forums at

Fluid Simulation

I've been interested in realtime fluid simulation for a while now, since it seems to be the next frontier in game physics, and a task that's especially suited to the increasingly parallel nature of modern games consoles and graphics cards. I've tried various techniques to simulate and render them both on the CPU and GPU, and have some fun and workable simulations. The image above contains 10,000 fluid particles running at about 30 frames per second on a CPU.

Genetic Algorithms

Inspired by this blog post I attempted to write a genetic imaging algorithm of my own. The basic idea is to start with randomly-generate shapes, rate them according to some fitness function (in this case, their similarity to a target image), breed variations, and repeat. I tried various methods - rendering with circles vs triangles, full colour vs black and white, sexual vs asexual reproduction in each generation of the image algorithm. The results were quite interesting.


If the above image doesn't animate, try clicking on it.

An interest in fractals led me to become interested in ways to visualise four-dimensional objects. This is an animation of a tesseract (a four-dimensional hypercube). The image itself is raytraced, and the program itself produces the animated GIF file as an output, which turned out to be the most difficult part of the whole project - working with interesting and compressed file formats is another thing I enjoy.

Wada Basin

Wada basins are the patterns of reflection created when four reflective spheres are arranged together. This image was created by a raytracer I wrote.


A fireworks display I planned and fired myself. It's not perfect, but it was fun.