Uncategorized

  • Normalising two years of slow queries into eleven shapes

    Two years of a rotating slow query log, aggregated for the first time. Ranking by total time rather than by per-call time is what makes the list actionable,…

  • Cache invalidation by version prefix, three years on

    A version constant in every cache key since 2022, and what three years of using it actually looked like. Seven bumps in three years is roughly the rate…

  • A compatibility suite retired after a year

    A monthly job comparing two servers, kept for thirteen months to preserve an option, and switched off once the option stopped mattering. The tests were the valuable artefact…

  • Percentiles labelled by consumer, and the outlier

    One label on a histogram, and a p95 that had been describing nobody. An aggregate percentile is a weighted average of populations that may have nothing in common,…

  • A Node script that stayed a Node script

    A build tool in JavaScript inside a PHP repository, examined for whether it should be rewritten and left alone. A tool written in the language of the artefacts…

  • Symfony 7.3, and a component used without the framework

    One component in an application that does not use the framework, which is what the components are for and is easy to forget. A migration tool that must…

  • The PSR-18 client I wrote for one API

    A supplier API with a signing scheme, a rate limit and a pagination style of its own, and the same four concerns implemented in three places.

  • A generated column that removed a JSON scan

    A key inside a JSON column filtered on four hundred thousand times a day, promoted without changing any application code. The optimiser matching a functional expression to a…

  • Redis 8 under AGPL, and unpinning a version

    The first of May, an open source release again, and a pin from April 2024 that could finally be removed. A decision record that enumerates triggers cannot anticipate…

  • A rate limit in nginx that should have been in the application

    A limit keyed on the client address at the edge, protecting an endpoint whose consumers are authenticated and identifiable. The edge knows the address and the application knows…