A simple C++ module system with CMake
27 November 2024Implementing a module/plugin system for a C++ application for faster compile times.
The Defra pet database system is broken
28 September 2024Complaining about how much of a pain it was to get my cats registered on England's pet database system.
Thoughts and feelings on the Nix drama
02 July 2024Thoughts on the ongoing issues in the Nix project, for both philosophy and therapy.
A Bandcamp plugin for Grayjay
08 May 2024A brief announcement of a plugin for accessing Bandcamp on the Grayjay app.
Linking in C & C++
04 April 2024Do link errors haunt your dreams? Why do we need header files? Here's an explainer for something that beginners often skip over.
Running NixOS on the Librem 5
03 November 2023I set up NixOS on my new phone, following a NixCon 2023 talk by Sophie Tauchert.
A Journey into Nix and NixOS
21 October 2022I chronicle my introduction to and experiments with using a rather radical GNU/Linux operating system on my webserver
Book review: Meditations, Marcus Aurelius Antoninus
13 January 2022A short review of the personal journal of a Roman Emperor with a strongly Stoic personal philosophy.
Splitting up Liquibase JSON changelogs
09 September 2021A quick trick to automatically split up large changelogs and group related changesets.
Git from first principles
06 July 2021A Git tutorial for both beginners and existing users, revealing all the magic by starting from the underlying concepts that are often hidden away
Do an internship
22 February 2021My internship helped me a lot, and I think more people should consider them
Diagnosing issues with tcpreplay & tcprewrite
23 September 2020Some issues one can run into when using tcpreplay and friends to replay packet captures on different computers, and how to fix them
Good design patterns: the command palette
06 September 2020How a simple searchable list of actions is a boon for your user's experience
Software I use
22 May 2020A catalogue of software I use, and my ideas for changing things in the future