Stuff I made


A documentation hosting and code search service for PureScript libraries. Originally my Google Summer of Code 2015 project, it has continued to evolve since then, and has now received contributions from quite a few other PureScripters. It is now an indispensable tool for both beginner and more advanced PureScript practitioners.

A guide to the PureScript numeric hierarchy

A text I wrote in order to explain some of the mathematics behind the PureScript numeric hierarchy — that is, the hierarchy consisting of the type classes Semiring, Ring, Field, etc. The mathematical concepts of rings and fields come from abstract algebra and are usually not encountered until undergraduate level, which means that PureScript users without this background knowledge might find them a little arcane at first. I wrote this text to share some of my knowledge and hopefully demystify these ideas, since they are the basis of some of the most commonly used Prelude type classes.

Multiplayer Pacman

A multiplayer version of the classic Pacman game. The server and the client were both written in PureScript. To play, you’ll need to find at least one other person to play against; just send them to the same URL.


An efficient, general-purpose sequence type for PureScript. This library offers a data structure designed for use in PureScript code, in order to take advantage of immutability: giving benefits related to both time complexity of operations and memory churn.


A simple Solitaire game, writen in PureScript, a Haskell-like language which compiles to PureScript.

Redmine release notes plugin

A plugin for the open-source bug tracking and project management system, Redmine.

King of the Network

The winning entry to the Edinburgh University GameDevSoc Game Jam 2013. The theme was ‘networks’. We used GameMaker, so there’s only an EXE file. It seems to work well under Wine though.

Down the Rabbit Hole

Won joint 1st place in the Edinburgh University Functional Programming Competition in 2013. It is a zoom sequence of the Mandelbrot set, written in Haskell.


A program for composing chiptune music. Reads a text file containing a description of a track in a purpose-built domain specific language, and turns it into music.

Tank game

Just a little game I put together in JavaScript. It runs in the browser.