Diamond Air Taxis' Flights API I created a backend service for the Diamond Air Taxis Australian private/charter flights service, which provides possible flight itineraries for use on the search/booking pages, and then performs checking of booked itineraries until departure. If you want to see how those flights look, have a look at the YouTube channel , which Steve Boyd updates from time to time…
Experiences with support of Cabal's public sublibrary feature January 31, 2026 This is not a very high quality post: I don’t introduce anything that hasn’t been written about before already, and I don’t feel like I looked very deeply into the subject. It’s just an experience report, but hopefully that experience is useful to someone out there. Pre-ramble This is a brief rundown of the state of…
Lenses with OverloadedRecordDot February 23, 2022 by Mike Ledger Not wanting to let the 6+ gigabytes of storage required for my haskell.nix -provided GHC 9.2.1 shell to go to waste, I immediately set to work using one of the new goodies it provides; GHC 9.2.1 introduced 3 new language extensions, 2 of which ( OverloadedRecordDot , and NoFieldSelectors ) are of interest here. NoFieldSelectors is…
solid-typefu-router5 This is a TypeScript library making extreme use of type-level computation to create a really nice routing library (a la react-router ), for SolidJS, and backed by a router5 router internally. See documentation on GitHub . Moved to https://mikeplus64.github.io/solid-typefu-router5 .
melee-vpad Available on GitHub Simple evdev/uinput virtual gamepad for keyboard controls in emulated Smash Bros Melee. Written in Rust. Sale-speak: Level up your Slippi gameplay with this one neat trick. Is it competition-worthy? Probably not. Will you get banned for trying to play with it in a tournament? Maybe! Will /I/ get banned for playing mediocrely anyway while still having…
Respecify Respecify was a novel web-based requirements authoring tool developed by me for Ricardo Rail. It aids requirements engineers by applying a simple English grammar that ensures: Basic syntactic correctness. All terms within a specification are defined and have at most 1 meaning. The relationships specified do not contradict eachother. Requirements meet some basic quality checks. A tool…
csvmaps This is a command-line tool for manipulating map-like CSV data, where the first column is treated as a “key” for that row. Please see the README for the most up-to-date documentation here . Installation Currently requires stack because of a dependency on an unreleased (or rather, also not on hackage) package cassava-streaming . $ git clone git@gitlab.com:transportengineering/csvmaps.git $…
shrinkmusic September 12, 2018 I love music. I have a rather large digital collection of it, hoarded over many years, and I intend to grow it indefinitely. There are a wide variety of formats, from FLAC, to Ogg Theora, to MP3, to (very poor) WMA. Converting all the music at once, preserving the exact directory structure, is more of a challenge than it ought to be – ideally, a command should exist,…
nice-html: a fast and fancy HTML generation library January 11, 2018 by Mike Ledger I’ve been working on and off on a HTML templating library for a few months. It was originally intended for use in Respecify , but that evolved into a single-page application. Thus a library for fast server-side HTML generation wasn’t necessary any more. (Though you could just as well use nice-html on a frontend…
Manipulating key-value csv files January 9, 2018 by Mike Ledger This post is about a command-line tool for manipulating map-like CSV data, where the first column is treated as a “key” for that row. This post is largely the same as the README available at https://gitlab.com/transportengineering/csvmaps#unions; except that it’ll (extremely slowly) get buried under other posts I make. I also…
radixtree: a prefix-tree parsing library for Haskell January 8, 2018 by Mike Ledger This is just a brief post about radixtree , which is a library that: Produces radix (alternatively, prefix?) trees from Text values Provides a generic parser suitable for use with attoparsec , trifecta , parsec , or anything with a CharParsing (from parsers ) Background I’m developing a requirements authoring tool…