Tristan Penman's Blog


I am a strong proponent of releasing personal projects as open source, especially when they serve to educate or demonstrate interesting concepts. This page lists a few of the projects that I actively maintain, and provides a bit of history as to their origins.


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 at MessageMedia. 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!


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

This app uses the 8-puzzle (a kind of 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.