Mike Ledger <mike@quasimal.com>

Gravatar

I’m a full-time fullstack developer, an occasional artist, and an often bicyclist, living in Melbourne. Want to build something? Get in touch!

Education

Bachelor of Advanced Computing (Honours) at ANU

Core Skills

Projects

Diamond Air TaxisFlights API (2024-): a backend service which provides possible flight itineraries (accounting for weather, weight and balance, fuelling, etc.) for charter/private flights in twin engine planes; this populates the search page, and is used to validate the viability of flights as forecasts become more accurate closer to their departure date.

kuachi cups (2020-), a tournament website. Features multistage tournaments with fair double elimination, single elimination, group, and round robin brackets. Features extensive Discord integration. Features a stream overlay creator for broadcasting of tournament matches, with a WebRTC based remote-control for control of an overlay through a OBS Studio panel. Also created various artwork for events that kuachi cups runs. Rust backend with TypeScript/React frontend.

Journeyman (2024) an eDSL for generating novel tournament structures and comparing their characteristics. The idea is that tournament structures are basically sorting networks with a stochastic comparison function. They can be represented as a graph algebra of rounds of matches, basically, using types to distinguish single rounds from multiple rounds, and thus being able to peel off each round of a tournament that may not have a totally static structure.

Respecify (2016-2022), 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 code that interprets to semantic information about the text such as interfaces and component hierarchies. Demo video available here. Haskell backend and TypeScript/React frontend, communicating over a WebSocket. Developed by me, for Transport Engineering Pty Ltd then Ricardo Rail.

RPD Stabling Database (2018), 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. Haskell backend with TypeScript/React frontend. Developed for Transport Engineering Pty Ltd.

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

csvmaps (2018), a tool for manipulating .csv files using set operations. Developed for Transport Engineering Pty Ltd in 2018 to aide with mass data extraction and manipulation from existing spreadsheets.

melee-vpad (2021) a user-space driver written in Rust for emulating a GameCube controller using a keyboard.

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

hoardings (2018), a git-backed document storage library for Haskell. Used by Respecify to provide version control functionality to documents as well as its (fairly basic) persistence layer.

nice-html (~2018), 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.

plissken (2013), a 3D Snake clone, where the Snake moves in 3 dimensions. Used OpenGLRaw, hmatrix, GLFW-b and lens. High school project developed by me in 2013.

Level-0 (2012), a clone of the Nokia 1100’s Snake II using the SDL bindings for Haskell. Hobby project developed by me in 2012.