Blog

Notes from the build

Occasional write-ups on backend systems, caching, distributed workflows, and the engineering behind AI products, war stories included.

  1. Why I didn't write our own sync protocol

    Our browser panel renders from a local replica, so every Postgres write has to travel to it. The from-scratch design had rev counters, tombstones and an epoch column. Why we bought the sync layer instead, why Zero over ElectricSQL, and the two places buying it still bit us.

    • postgres
    • cdc
    • sync
    • zero
    • architecture
    • decisions
  2. Why we moved our rendering service off a box and onto Modal

    Our PowerPoint and PDF exports render in real headless Chrome, and a single always-on box was the wrong shape for bursty, isolated export traffic. Why we moved to Modal, why not Lambda, and what the serverless rearchitecture changed.

    • scaling
    • serverless
    • modal
    • playwright
    • architecture
    • war-story
  3. How I cached a theme list so well nobody could see new themes

    A caching war story: how a one-line max-age header hid every new theme for a month, why the fix was worse than the bug, and how ETags and conditional revalidation actually solve it.

    • http-caching
    • etag
    • debugging
    • war-story