system-design

  • A trigger matrix, drawn once, on paper

    An afternoon spent working out what actually runs when, which nobody had ever done. A matrix of six jobs and four triggers is twenty-four cells and nobody had…

  • The command bus we removed

    A command bus introduced in 2021, and 88 commands with one handler each. A stack trace with four frames of dispatch before the work.

  • Reusable skills and agent definitions, and what they are actually for

    turkerdev/ai-skills and turkerdev/ai-agents, and eighteen months of retyping the same instructions. Context is per-session and knowledge is not.

  • Deleting a module

    A module built in 2022 for a product line discontinued in 2024. Eight thousand lines, a database schema and two scheduled jobs, all still running.

  • A pipeline described in one file, after four years of five

    Five workflow files, two composite actions, and nobody able to say what runs when. A change that needed editing three files, one of them wrong.

  • The reporting database that is not a replica

    A read replica serving reports, and reports that want a different schema. Eleven indexes on production tables that exist only for reporting.

  • DNS failover, and the resolver that ignored the TTL

    A sixty-second TTL, and traffic that took forty minutes to move. A sixty-second TTL produces four-minute failover for the great majority and a long tail that cannot be…

  • 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.

  • 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.

  • The second host, and the failover we finally built

    Seven years on one host, and a business requirement that finally arrived. A recovery time that assumes the host comes back.