JJ LSP Follow Up
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
Creator of rust-analyzer. TigerBeetle engineer. Expert on IDE tooling and language servers.
https://matklad.github.ioJJ 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.
Modern languages (Go, Rust, Swift, Zig) have converged on a new error handling approach distinct from traditional exceptions, requiring call-site annotations.
Describes building a resilient parser that collects all errors instead of stopping at the first one, with a warning about infinite loop bugs from not consuming tokens.
Using 32-bit indexes instead of pointers saves memory, improves CPU cache efficiency, and boosts performance by reducing memory bandwidth bottlenecks.