I’m a programmer (and occasional artist) living in Canberra, Australia. I’m currently working part-time at Ricardo Rail while studying at the ANU here in Canberra.

Haskell Rust TypeScript Python
Nix Design Java HTML/CSS
JavaScript Git Data scraping SQL
NLP React RDF … and more

Projects, past and present

Respecify, a requirements authoring tool utilising constrained natural language. Respecify was presented in Lisbon for RE’17. Paper available online at IEEE Xplore. Uses a custom parser generator for creating English grammars. Parse results produce VM code that interprets to semantic information about the text such as interfaces and component hierarchies. Demo video available here.

kuachi cups, a community tournament website. Features multistage tournaments with fair double elimination, single elimination, group, and round robin brackets. Features extensive Discord integration. Features a dynamic overlay creator for streamers to use when streaming tournament games, with a WebRTC based remote-control for the streamer to control their overlay through e.g. a OBS Studio panel.

RPD Stabling Database, an online database UI for aiding management of train stabling in the Sydney trains network. Allows for a user to query the current allocation of train stabling across the network using an interactive map in addition to with a powerful query engine.

solid-typefu-router5 a TypeScript/SolidJS library for type-safe routing. Has type-safe Link and Router components whose types are determined by what the library user has specified as their routes; uses a lot of new TypeScript magic to enable parsing route definitions at the type-level.

Transport Engineering website, a simple-ish Hakyll-generated website that runs in parallel with an older Wordpress-based website.

teamsplat, a simple team splitter to generate fair teams for 8-ish player games. Live version available on Heroku (because it’s free and Good Enough!).

radixtree, a prefix-tree parsing library for Haskell. Used extensively by Respecify.

nice-html, a XML/HTML templating library for Haskell. Has distinct template compilation and rendering phases, which is its main advantage over e.g., Lucid or Blaze.

aeson-flowtyped, a Haskell library for generating FlowType or TypeScript type declarations using aeson.

csvmaps, a tool for manipulating map-like .csv files.

plissken, a 3D Snake clone, where the Snake moves in 3 dimensions. Used OpenGLRaw, hmatrix, GLFW-b and lens.

Level-0, a clone of the Nokia 1100’s Snake II using the SDL bindings for Haskell.

indices, a library providing statically bounded array indices, enable static unrolling of critical loops performing array operations.

QuasiText, a simple QuasiQuoter for interpolating Haskell values into Text strings.

Linked Earth Data, team project done under ANU’s TechLauncher program, to deliver a DGGS/Linked data → SPARQL/REST endpoint, in order to inform W3C and OGC standards. Makes use of variable-resolution satellite imagery made available in the Australian Geoscience Datacube. Limited involvement – I participated only in the first half of this project.

Open source contributions


  • Support for PostgreSQL composite types


  • Initial makeFields implementation.

Red Eclipse

  • 3D modelling and animation
  • Community support
  • Automated Linux builds


  • FFI helpers