Articles
2026-01-13Compact StructsMemory layouting is fucking hard
2025-11-03DungbeetleA tiny computer
2025-10-28Switch ChainsSeparating decisions from actions
2025-05-12Types in PlumWhy the compiler models types as strings
2025-05-08PlumA small, functional, cozy programming language
2024-10-10In Defense of Leaky AbstractionsThey can be a good thing
2024-09-19SoilA low-level VM
2024-09-16OrAn underrated language construct
2024-08-16Zig's two languagesA case study of using Zig's comptime
2024-08-15This Blog Uses MartinaiseAnd why "My article doesn't compile" is now a valid statement
2024-04-01Building a Modular ShelfHow I replaced my Ikea Kallax shelf with a custom one
2024-02-05Thoughts on ZigMy first impressions of the Zig programming language
2024-01-11MartinaiseA simple, imperative language
2023-12-05Goodbye, Fibers!Why Candy doesn't have built-in concurrency anymore
2023-12-04Concurrency In CandyHow Candy uses structured concurrency
2023-09-29The Candy Compiler PipelineThe journey of a file from source code to byte code
2023-08-14Solving KakurosWriting a fast Kakuro solver in Rust
2023-08-06CandyThe introduction of a new programming language
2022-05-21MehlA syntax experiment
2022-04-15Jupyter EnergyIncreasing awareness of energy consumption in Jupyter Notebooks
2022-03-21CoronoiseEncouraging people to be more careful in situations with high infection risk
2022-02-22Meta StringsA unified syntax for raw strings and interpolation
2022-01-23Types Considered Bloat?A critical look at static typing
2021-12-29My Music SetupHow I make MIDI music with my electric piano and iPad
2021-11-12Templating engine? No thanks.Why this blog doesn't use a templating engine
2021-10-05Hacking the Gira HomeServerAn adventure in communication
2021-09-12Reverse Engineering the Gira HomeServerHow I inspected our home
2021-08-14On Developing This BlogBuild stuff manually!
2021-07-18Why This Website Has No Dark-Mode ToggleHow to incentivize change
2020-10-09ChunkyA database layer
2020-10-08ChestA new database