Source Code

I have a number of open source codebases, some newer and better maintained than others. Over time, I’ve gotten better at writing readme files that explain what a project does and how to run it.


  • Rusty Microphone - Signal processing to give real time feedback on music. Runs live on my website here.
  • QIF Preprocessor - QIF file preprocessor to decrease duplication when importing to gnucash. This is highly customized to my own use case. QIF files are a format that I can download my bank account transactions in, making it super simple to import my transactions into Gnucash. Unfortunately, Gnucash’s automatic categorization is thrown off by the nonsense that is put in the ‘description’ field, including the date of the transaction and different shops in the same chain spelling their names differently.


  • Nap Attack - A game about letting the pug sleep. Very much a work in progress, but runs both on desktop and in the web browser using WebAssembly.
  • Interactive Pacbot - A playable visualizer for the 2016 Entelect Challenge. Runs in the browser using PhasorJS, and can be played here.
  • RallyX - A clone of the arcade game RallyX. This was a university project I worked on in 2011, and I haven’t tried to compile it since.


  • South African ID Parser - A JavaScript library for parsing South African ID numbers. Can run both in the browser, for realtime feedback on forms, and in Node for server side validation. Also available on NPM.
  • Rust Git Hooks - A collection of Git hooks written in Rust.
  • Worthe Signals - Signal processing math implemented in Rust. This was a learning exercise on my side, and the code isn’t intended for use in production systems.


  • Dotfiles - My Linux configuration including my Emacs configuration.

Competitions and Challenges

Advent of Code

The Advent of Code is a programming advent calendar, with a new challenge each day leading up to Christmas. More details are available at

Entelect Challenge

The Entelect Challenge is a yearly AI programming competition, where you write a bot to play a game against the other competitors’ bots. More details are available at