CSS: Unavoidable Bad Parts
CSS: Unavoidable Bad Parts Jun 4, 2026 An ersatz CSS tutorial for people who need to style a web page, but aren’t web developers. I am a wrong person to write this kind of thing, as I have neither th
Creator of rust-analyzer. TigerBeetle engineer. Expert on IDE tooling and language servers.
https://matklad.github.ioCSS: Unavoidable Bad Parts Jun 4, 2026 An ersatz CSS tutorial for people who need to style a web page, but aren’t web developers. I am a wrong person to write this kind of thing, as I have neither th
TIL: Symlinking NixOS Dotfiles May 21, 2026 The standard answer to managing dotfiles on NixOS is home-manager. I’ve never used it, due to two aesthetic and one practical objection: The approach I lik
Always Be Blaming May 18, 2026 A few tips on 4D-ing your code comprehension skills. I wrote on the importance of reading code before: Look Out For Bugs My default approach to reading is “predictive”:
Catch Flakes On Main May 14, 2026 A small Mechanical Habit today: When using not rocket science rule / merge queue, continue to redundantly run the full test suite on main. Maintain an easily accessi
Learning Software Architecture May 12, 2026 In reply to an email asking about learning software design skills as a researcher physicist: I was attached to a bioinformatics lab early in my career, so
Steering Zig Fmt May 8, 2026 Two tips on using zig fmt effectively. Read this if you are writing Zig, or if you are implementing a code formatter. For me, zig fmt is better than any other formatter I
Minimal Viable Zig Error Contexts May 3, 2026 fn process_file(io: Io, path: []const u8) !void { errdefer log.err("path={s}", .{path}); const fd = try Io.Dir.cwd().openFile(io, path, .{})
256 Lines or Less: Test Case Minimization Apr 20, 2026 Property Based Testing and fuzzing are a deep and science-intensive topic. There are enough advanced techniques there for a couple of PhDs, a PB
Consensus Board Game Mar 19, 2026 I have an early adulthood trauma from struggling to understand consensus amidst a myriad of poor explanations. I am overcompensating for that by adding my own attemp
JJ LSP Follow Up Mar 5, 2026 In Majjit LSP, I described an idea of implementing Magit style UX for jj once and for all, leveraging LSP protocol. I’ve learned today that the upcoming 3.18 version of L
Against Query Based Compilers Feb 25, 2026 Query based compilers are all the rage these days, so it feels only appropriate to chart some treacherous shoals in those waters. A query-based compiler is
Wrapping Code Comments Feb 21, 2026 I was today years old when I realized that: It’s a good idea to limit line length to about 100 columns. This is a physical limit, the width at which you can still
Diagnostics Factory Feb 16, 2026 In Error Codes For Control Flow, I explained that Zig’s strongly-typed error codes solve the “handling” half of error management, leaving “reporting” to the users. To
Justifying text-wrap: pretty Feb 14, 2026 p { text-wrap: pretty; } Something truly monumental happened in the world of software development in 2025. Safari shipped a reasonable implementation of te
Programming Aphorisms Feb 11, 2026 A meta programming post — looking at my thought process when coding and trying to pin down what is programming “knowledge”. Turns out, a significant fraction of tha
CI In a Box Feb 6, 2026 I wrote box, a thin wrapper around ssh for running commands on remote machines. I want a box-shaped interface for CI: const repository = "git@forge.com/me/my-project"; const c
make.ts Jan 27, 2026 Up Enter Up Up Enter Up Up Up Enter Sounds familiar? This is how I historically have been running benchmarks and other experiments requiring a repeated sequence of commands — typ
Considering Strictly Monotonic Time Jan 23, 2026 Monotonic time is a frequently used, load bearing abstraction. Monotonicity is often enforced using the following code: fn now(clock: *Clock) Instant
Developer used Claude AI to help automate deploying TigerBeetle's distributed database across cloud machines for performance testing.
Memory safety is a property of implementation, not program execution; most definitions incorrectly focus on the wrong aspect of the system.