Blog posts
Getting started with CodeQL, GitHub's declarative static analyzer for securityAugust 07, 2025
Functional Python, Part III: The Ghost in the MachineMay 25, 2023
Functional Python, Part II: Dial M for MonoidJanuary 19, 2023
Bazel and Nix: A Migration ExperienceDecember 15, 2022
Hard user separation with NixOSNovember 01, 2022
Functional Python, Part I: Typopædia PythonicaSeptember 08, 2022
A Haskell memory leak in way too much detail with CachegrindNovember 04, 2021