Tristan Penman's Blog


This page includes a sampling of my open source projects, primarily those that I’ve written about on this page. I hope they may serve to educate, or to demonstrate interesting concepts.

I’ve included a bit of history for each.


An Asteroids clone written in C. This began as a less-is-more Asteroids clone that I wrote over the course of several weekends, while procrastinating over my studies.

My first port was to the web using Emscripten. I’ve written about that here. More recently, I’ve been porting it to the venerable Nintendo 64, an experience that I’ve written about here.



A web app for learning about graph-based search algorithms.

This app uses the 8-puzzle (a particular variation of the Sliding Puzzle) to visualise the behaviour of common graph-based search algorithms.

This was originally written while I was working as a tutor for RMIT’s Intro to Artificial Intelligence course. It replaced an aging Java Applet that frequently crashed on newer systems, and resulted in improved student outcomes for the relevant assignments.



A header-only JSON Schema Validation library for C++.

Valijson provides a straight-forward (though admittedly verbose) validation API that allows you to load JSON Schemas, and validate documents loaded by one of several supported parser libraries.

Validating JSON in C++ is a problem that I was first exposed to while working for one of my past employers. Although there were other JSON Schema validators out there, each was written to support a particular JSON parser. I thought it would be an interesting to experiment to build a validator that could work with any parser, using template meta-programming to abstract away the differences between parsers.

This has proven to be a successful experiment. Since first publishing the code in 2014 (with support for three parsers), at least another five have been added by contributors!