performance

  • Vue 3 and the Composition API

    A 600-line component with a mixin nobody could trace. The Composition API is not a new way to write components — it is a way to move logic…

  • The proxy-based reactivity, and the caveats that disappear

    Vue 2 walked an object at creation and replaced every property with a getter and setter, which meant properties added later were not reactive and array index assignment…

  • Effect cleanup runs asynchronously in 17

    The one behavioural change in a release that deliberately has no features: cleanup functions now run after the screen has been updated rather than before. The reason is…

  • Cache warming as a deploy step, not a cron job

    Warming from cron writes every entry at the same moment, so every entry expires at the same moment — which reintroduces the stampede the cache was meant to…

  • A report that was a loop, and the window function it became

    380 MB of memory and a nightly job that could not be run on demand. Running totals and rankings needed a loop before window functions, and the loop…

  • proxy_cache with stale-while-revalidate and a lock

    A cache that expires and then blocks every waiting request on one slow origin fetch is a cache that makes the worst moment worse. proxy_cache_lock alone removes the…

  • Compose in CI, and the service the tests need

    The tests need MySQL and Redis, and CI gives you an empty machine. Service containers, where they differ from compose, and the readiness nothing does for you.

  • Cache Composer in a GitHub Actions workflow

  • A read replica that was silently stale

    The replica was up, accepting connections and serving data from an hour ago. Seconds_Behind_Master reported zero, honestly, and was measuring the wrong thing.

  • Mutation testing, and the tests that assert nothing

    94% coverage, and a suite that passes with the logic inverted. Coverage measures execution rather than verification, and there is a tool that measures the difference.