Uncategorized

  • Building an MCP server for a database

    turkerdev/mysql-mcp, and what a protocol for tool access actually requires. The authorisation model is the host’s problem, which means it is all yours.

  • A shared object store, and the session problem it did not solve

    Uploads moved to shared storage, and sessions still tied to whichever host served the previous request. The session store was shared and the cookie was not, which is…

  • An outbox relay on two hosts, and the partition key

    A second host, and a relay that must not run twice against the same rows. The modulo on a hash of the aggregate identifier preserves per-aggregate ordering while…

  • The two PHP templates that survived, and the rule

    Two templates that cannot become block templates, and the rule that identifies them. Three years and the rule has held for every template that came up, which is…

  • The stylesheet that finally got a second maintainer

    2,100 lines that one person could change, and the year spent fixing that. Every stylesheet change routed through one person for four years.

  • An outage resolved before anybody woke up

    Four mechanisms built between 2023 and 2025, and the first incident where all of them were exercised at once. The absence alert is the one that did the…

  • A report that got slower because the data grew

    A query that was fine at four hundred thousand rows, acceptable at four million, and unusable at twelve. A query whose cost grows with the data is not…

  • opcache after a year of property hooks

    Two hundred and eighteen methods became properties, and the question of whether the opcode cache noticed. A hook costs about what a method call costs because it is…

  • A second host, and the first thing that was not replicated

    Everything in the provisioning script arrived on the new host, and three things that were not in it did not. A provisioning script describes configuration and a host…

  • A functions.php of forty lines

    A file that was eight hundred lines in 2022, and what is left in it. Everything else moved to a plugin, and the test for each was whether…