Latest posts
- Against Query Based CompilersFeb 25, 2026Alex Kladov
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 a straightforward application of the idea of incremental computations to, you guessed it, compiling. A compiler is just a simple text transformation program, implemented as a lot of functions. You cou
- Wrapping Code CommentsFeb 21, 2026Alex Kladov
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 comfortably fit two editors side by side (see Size Matters). Note an apparent contradiction: the optimal width for readable prose is usually taken to be narrower, 60–70 columns. The contradiction is r
- Diagnostics FactoryFeb 16, 2026Alex Kladov
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. Today, I want to describe my personal default approach to the reporting problem, that is, showing the user a useful error message. The approach is best described in the negative: avoid thinking about er
- Justifying text-wrap: prettyFeb 14, 2026Alex Kladov
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 text-wrap: pretty: https://webkit.org/blog/16547/better-typography-with-text-wrap-pretty/. We are getting closer and closer to the cutting-edge XV-century technology. Beautiful paragraphs! We are not qu
- Programming AphorismsFeb 11, 2026Alex Kladov
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 that is just reducing new problems to a vocabulary of known tricks. This is a personal, descriptive post, not a prescriptive post for you. It starts with a question posted on Ziggit. The background here
- CI In a BoxFeb 06, 2026Alex Kladov
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 commit_sha = Deno.env["COMMIT"]; const runners = await Promise.all( ["windows-latest", "mac-latest", "linux-latest"] .map((os) => $`box create ${os}`) ); await Promise.all(runners.map(asy
- make.tsJan 27, 2026Alex Kladov
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 — type them manually once, then rely on shell history (and maybe some terminal splits) for reproduction. These past few years I’ve arrived at a much better workflow pattern — make.ts. I was forced to adapt
- Considering Strictly Monotonic TimeJan 23, 2026Alex Kladov
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 { const t_raw = os_time_monotonic(); const t = @max(t_raw, clock.guard); assert(t >= clock.guard); assert(t >= t_raw); clock.guard = t; return t; } That is, ask the OS about
- Vibecoding #2Jan 20, 2026Alex Kladov
Vibecoding #2 Jan 20, 2026 I feel like I got substantial value out of Claude today, and want to document it. I am at the tail end of AI adoption, so I don’t expect to say anything particularly useful or novel. However, I am constantly complaining about the lack of boring AI posts, so it’s only proper if I write one. Problem Statement At TigerBeetle, we are big on deterministic simulation testing.
- Memory Safety Is ...Dec 30, 2025Alex Kladov
Memory Safety Is … Dec 30, 2025 Memory safety is one of those elusive concepts like intelligence, consciousness, or porn, that resist attempts to be put to words. Thus, I am not going to attempt to define it. Instead, I want to poke holes in definitions of others. Note that the present post is 90% sophistry in the style of Zeno — I don’t think you need a water-tight definition to have a reasonabl