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