Uncategorized

  • A correlation id through the queue, or the trail stops

    One identifier generated at the edge and attached to every log line turns an incident into a single query, and the hop most implementations lose is the one…

  • Elasticsearch aliases, from the first index

    A mapping change usually cannot be applied in place, so it means a new index — and if the application names the index directly, that is a coordinated…

  • A functional index, without the generated column

    Indexing an expression required adding a generated column and indexing that, which means a schema change and a column nobody wants in a SELECT *. The double parentheses…

  • A unique index arbitrates; a SELECT does not

    Checking whether a key exists and then inserting it is two statements, and two requests can both pass the check before either inserts. The unique index is what…

  • A block variation is not a block style

    Two features with similar names solve different problems, and reaching for the wrong one produces either a class that does nothing or a duplicate block. A style is…

  • Configuration binding, and the options pattern

    Reading configuration by key from a dictionary means every consumer knows the key names and nothing validates them; binding to a class means the shape is declared once.…

  • Composer 2 changed the lock file, and a team upgrades together

    October brought a rewritten solver and parallel downloads, and the lock file format changed in a way that produces a confusing diff when two people are on different…

  • Composer 2 is not a minor upgrade

    A dependency resolver rewritten and parallel downloads, so install went from ninety seconds to eleven. And a plugin API that broke three packages.

  • Choreography and orchestration, and the debugging difference

    A multi-service flow can be a chain of events where each service reacts, or a coordinator that calls each in turn — and the difference shows up when…

  • Persistent caching, and a warm build that is seconds

    Every build in 4 started from nothing, which on a large application is a minute of parsing and transpiling that produces the same result as last time. buildDependencies…