performance

  • MariaDB 10.5 and the InnoDB that is no longer XtraDB

    10.5 in June replaced XtraDB with upstream InnoDB, which is a change to the storage engine that most upgrade notes describe as an implementation detail. Removed variables in…

  • Timeouts bound one request; only a cap bounds concurrency

    Setting a thirty-second timeout feels responsible and does nothing about the number of workers waiting simultaneously, which is what actually takes a site down. Dropping the timeout from…

  • Lazy loading arrived in the browser

    One attribute replaces an IntersectionObserver and a library — and applying it to everything makes the Largest Contentful Paint worse rather than better.

  • RESP3, and the client library that has to agree

    6.0 introduced a new protocol with typed replies, and the client opts in with HELLO 3 — so the server supporting it changes nothing until the library does.…

  • Redis 6 and the shared password that was everywhere

    One password, six services, and FLUSHALL available to all of them. 6.0 landed in April with users — and the keyspace pattern is where the isolation actually is.

  • A sampling profiler is the one for production

    An instrumenting profiler records every call, which changes the timings it is measuring — small fast functions look disproportionately expensive because the overhead is per call. Sampling belongs…

  • An HTTP client that is part of the framework

    Four services, four hand-rolled clients, four retry policies. 7.0 wraps Guzzle, and the wrapper is the point rather than the transport.

  • loading=lazy, and the images it must not be on

    Deferring offscreen images used to mean an IntersectionObserver, a data attribute and a library. It is now an attribute the browser understands. Applying it to every image with…

  • Width and height are required again, and CLS is why

    Dropping the width and height attributes was correct advice for a decade of responsive design, and it is what makes a page jump while it loads. Browsers now…

  • Moving a pipeline to a runner you do not own

    The CI server was a pet and the pipeline was a shell script nobody could read. A runner that assumes nothing is the point, and the cache is…