F
Feed Atlas
OPML directory + server-side RSS reader

matklad.github.io

SiteRSSBlogs
Back

Latest posts

  • Programming Aphorisms
    Feb 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 Box
    Feb 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.ts
    Jan 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 Time
    Jan 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 #2
    Jan 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

  • The Second Great Error Model Convergence
    Dec 29, 2025Alex Kladov

    The Second Great Error Model Convergence Dec 29, 2025 I feel like this has been said before, more than once, but I want to take a moment to note that most modern languages converged to the error management approach described in Joe Duffy’s The Error Model, which is a generational shift from the previous consensus on exception handling. C++, JavaScript, Python, Java, C# all have roughly equivalent

  • Parsing Advances
    Dec 28, 2025Alex Kladov

    Parsing Advances Dec 28, 2025 I find myself writing yet another toy parser, as one does during a Christmas break. It roughly follows Resilient LL Parsing Tutorial. Not because I need resilience, but mostly because I find producing a syntax tree and a collection of diagnostics a more natural fit for the problem than bailing out on the first error. One practical pitfall with the approach is infinit

  • Newtype Index Pattern In Zig
    Dec 23, 2025Alex Kladov

    Newtype Index Pattern In Zig Dec 23, 2025 In efficiency-minded code, it is idiomatic to use indexes rather than pointers. Indexes have several advantages: First, they save memory. Typically a 32-bit index is enough, a saving of four bytes per pointer on 64-bit architectures. I haven’t seen this measured, but my gut feeling is that this is much more impactful than it might initially seem. On moder

  • Static Allocation For Compilers
    Dec 23, 2025Alex Kladov

    Static Allocation For Compilers Dec 23, 2025 TigerBeetle famously uses “static allocation”. Infamously, the use of the term is idiosyncratic: what is meant is not static arrays, as found in embedded development, but rather a weaker “no allocation after startup” form. The amount of memory TigerBeetle process uses is not hard-coded into the Elf binary. It depends on the runtime command line argumen