architecture

  • The stylesheet that was 2,100 lines and stayed

    A hand-written design system, evaluated against a framework, and kept for a reason that is not technical. The utility layer is genuinely better in a framework and it…

  • Structured logs, and the field that was never queried

    Eleven fields on every log line, of which four have never appeared in a query. A structured log invites adding fields because each one is cheap, and the…

  • An on-call rota of three

    A rota of two is not a rota. A third person joined in November, and the gap was everything learned in the shadowing month and never written down.

  • The seam that made a rewrite possible without one

    An interface introduced in 2022 for testing, which turned out to be the only reason a subsystem could be replaced in a fortnight. A comparing implementation running both…

  • The foreign key that documented an assumption

    A constraint added not for integrity, which was already sound, but because the relationship was undocumented anywhere else. A schema is the most-read document in an application and…

  • Property hooks, and the getter that was a habit

    8.4 on 21 November, and a property can have a getter without being a method. 412 getters that return a property unchanged.

  • A fork’s first stable release, read carefully

    A fork six weeks old is a promise; a fork with a stable release and a governance model is a slightly larger promise. The difference between March and…

  • A cache that was a second database

    A cache holding data that existed nowhere else, discovered during a restart. A flush that lost four hours of user preferences.

  • An API that had two clients and three shapes

    One endpoint, two consumers, and a response that differs by header. Three serialisation paths for one resource, two of them accidental.

  • Interactivity, and the JavaScript we stopped shipping

    6.5 ships a shared runtime, and our blocks each carry their own script. 140 KB of JavaScript on a page with four interactive blocks.