← Back to all articles

Alex Kladov (matklad)

Creator of rust-analyzer. TigerBeetle engineer. Expert on IDE tooling and language servers.

https://matklad.github.io

Articles

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

Against Query Based Compilers

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

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

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

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

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

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

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

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

Vibecoding #2

Developer used Claude AI to help automate deploying TigerBeetle's distributed database across cloud machines for performance testing.

Memory Safety Is ...

Memory safety is a property of implementation, not program execution; most definitions incorrectly focus on the wrong aspect of the system.

The Second Great Error Model Convergence

Modern languages (Go, Rust, Swift, Zig) have converged on a new error handling approach distinct from traditional exceptions, requiring call-site annotations.

Parsing Advances

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.

Newtype Index Pattern In Zig

Using 32-bit indexes instead of pointers saves memory, improves CPU cache efficiency, and boosts performance by reducing memory bandwidth bottlenecks.