Uncategorized

  • Retry only what is safe to retry

    A retry policy applied at the HTTP client level retries everything, including the POST that succeeded and whose response was lost. The safety of a retry is a…

  • Mailable classes and why the view is not the email

    An email assembled in a controller — subject here, view there, attachments in a third place — cannot be tested without sending it, and the subject line ends…

  • Code splitting with dynamic import

    Shipping the checkout code to everyone who visits the homepage is the default, because a single entry point produces a single bundle. A dynamic import is a split…

  • Object cache misses are invisible without instrumentation

    A persistent object cache either works or silently does not, and both look identical from the front end: the site is up, the pages render, and the queries…

  • Order item meta moved and the old table is a view

    3.0 moved order item data into its own tables and left the old access functions working, which means a query written against the old shape returns results and…

  • Prefetch decides whether one slow consumer blocks the rest

    RabbitMQ pushes messages to a consumer up to the prefetch limit without waiting for acknowledgements. With the default of unlimited, one consumer takes the whole queue into its…

  • Designing an API two mobile clients can live with

    Two apps, two release cycles, and neither can be forced to update. What is additive, what is not, and the decisions that have to be made before the…

  • Backups that are restored on a schedule

    A backup job exiting zero proves the job ran. Truncated dumps, a mysqldump that hit a lock and gave up, and an archive of an empty directory all…

  • Custom endpoints belong in a namespace you own

    Registering a route under wp/v2 puts it in core’s namespace, where a future core route can collide with it and where nothing signals that it is yours. The…

  • A cache stampede on a single hot key

    A cached value expiring under load means every request that arrives in the next few hundred milliseconds recomputes it simultaneously — so the moment of highest cost is…