Uncategorized

  • A multi-platform build for one arm64 laptop

    One person on an arm64 machine, and an image built for amd64 running under emulation at a third of the speed. Emulated cross-building is correct and slow enough…

  • An outbox relay that stalled and told nobody

    A relay process that died on an unhandled exception and left rows accumulating with no error anywhere. The second alert is the one that mattered: the relay stopped…

  • EXPLAIN ANALYZE on a query the optimizer had improved

    A query with a hand-written optimiser hint from 2019, re-examined after an upgrade, where the hint was now choosing the worse plan. A hint is a decision frozen…

  • A job with a unique lock that outlived the job

    A job marked unique so it cannot be queued twice, and a worker killed mid-run leaving the lock held for its full duration. The hour was chosen when…

  • A licence change, and the fork we did not take

    20 March, a licence change, and a fork announced within a week. A dependency that is no longer open source, in production, everywhere.

  • The circuit breaker we deleted with the network call

    Merging two services removed the HTTP call between them, and with it a retry policy, a timeout, a circuit breaker and their tests. Seven hundred and fifty lines…

  • A runner that ran out of disk halfway through a build

    A hosted runner has about fourteen gigabytes free, and a Docker build with a large cache uses all of it without saying so. The preinstalled toolchains for languages…

  • An index that became redundant and nobody removed

    An index on (customer_id) alongside one on (customer_id, created_at), where the first is a prefix of the second and does nothing. Redundant indexes cost write throughput and buffer…

  • An error response that told an attacker which field was wrong

    A login endpoint returning “unknown email” and “incorrect password” as separate messages, which is an account enumeration oracle with good intentions. Fixing the message and leaving the timing…

  • Laravel 11, and the Kernel classes that are gone

    The March release removes the HTTP and console kernels from the skeleton, which is a structural change rather than a rename. The upgrade does not require this —…