{"schema_version":"1.0","generated_from":"published Markdown content","stats":{"nodes":29,"edges":73,"posts":14,"notes":0,"topics":15},"nodes":[{"id":"post:an-audit-log-your-agent-cannot-lie-to","type":"post","slug":"an-audit-log-your-agent-cannot-lie-to","title":"An audit log your agent cannot lie to","description":"I built an event-sourced system to SEC guidelines that could reconstruct any account's state at any moment. It is the exact primitive agent memory is missing.","url":"\/posts\/an-audit-log-your-agent-cannot-lie-to","date":"2026-08-24","status":"published","degree":4},{"id":"post:election-day-does-not-move","type":"post","slug":"election-day-does-not-move","title":"Election day does not move","description":"I ran digital for three national campaigns. Election day is set by law, and it taught me more about shipping than any methodology has.","url":"\/posts\/election-day-does-not-move","date":"2025-08-18","status":"published","degree":3},{"id":"post:four-titles-never-left-the-editor","type":"post","slug":"four-titles-never-left-the-editor","title":"Four titles, and I never left the editor","description":"Staying in the code was the compromise I was quietly embarrassed about for fifteen years. The economics just made it the correct position.","url":"\/posts\/four-titles-never-left-the-editor","date":"2024-12-16","status":"published","degree":3},{"id":"post:nobody-volunteers-to-be-the-control-group","type":"post","slug":"nobody-volunteers-to-be-the-control-group","title":"Nobody volunteers to be the control group","description":"Nobody is running the control arm, including me. Every productivity number in this field is therefore unfalsifiable, and we should say so.","url":"\/posts\/nobody-volunteers-to-be-the-control-group","date":"2025-01-13","status":"published","degree":3},{"id":"post:one-round-trip-per-day","type":"post","slug":"one-round-trip-per-day","title":"One round trip per day","description":"Six years leading engineers in Pune and the Philippines taught me to write specifications for someone I could not interrupt. It turns out that is the same skill as directing an agent.","url":"\/posts\/one-round-trip-per-day","date":"2025-08-04","status":"published","degree":3},{"id":"post:org-chart-assumed-typing-was-the-bottleneck","type":"post","slug":"org-chart-assumed-typing-was-the-bottleneck","title":"The org chart assumed typing was the bottleneck","description":"Team structure, headcount planning, and career ladders were all designed around a constraint that no longer binds.","url":"\/posts\/org-chart-assumed-typing-was-the-bottleneck","date":"2025-06-09","status":"published","degree":3},{"id":"post:procrastination-with-excellent-tooling","type":"post","slug":"procrastination-with-excellent-tooling","title":"Procrastination with excellent tooling","description":"Most agent setup work is procrastination with excellent tooling. The tell is that the builder cannot name a single shipped outcome it caused.","url":"\/posts\/procrastination-with-excellent-tooling","date":"2025-01-27","status":"published","degree":4},{"id":"post:register-globals-and-the-whole-catastrophe","type":"post","slug":"register-globals-and-the-whole-catastrophe","title":"register_globals and the whole catastrophe","description":"I have written PHP since 1999, on version 4. Twenty-seven years of watching confident practice become embarrassing is a specific kind of training.","url":"\/posts\/register-globals-and-the-whole-catastrophe","date":"2025-03-10","status":"published","degree":5},{"id":"post:sixteen-years-and-they-took-the-account","type":"post","slug":"sixteen-years-and-they-took-the-account","title":"Sixteen years, and they took the account","description":"I created @music on Twitter in 2007 and ran it until 2023, when X took it back. There was no appeal, because there is never an appeal.","url":"\/posts\/sixteen-years-and-they-took-the-account","date":"2025-07-14","status":"published","degree":1},{"id":"post:stop-at-the-first-wrong-sentence","type":"post","slug":"stop-at-the-first-wrong-sentence","title":"Stop the run at the first wrong sentence","description":"The highest-value thing I do with an agent is read its output in real time and stop it the second it says something incongruent. Every trend in tooling pushes the other way.","url":"\/posts\/stop-at-the-first-wrong-sentence","date":"2025-08-11","status":"published","degree":4},{"id":"post:ten-agents-and-what-they-actually-cost-me","type":"post","slug":"ten-agents-and-what-they-actually-cost-me","title":"Ten agents and what they actually cost me","description":"I audited my own agent estate on camera. I could not enumerate it from memory, and I have been building it for eighteen months.","url":"\/posts\/ten-agents-and-what-they-actually-cost-me","date":"2026-08-17","status":"published","degree":3},{"id":"post:the-seams-are-the-job-now","type":"post","slug":"the-seams-are-the-job-now","title":"The seams are the job now","description":"Specialization has been the right career shape for twenty years. I think that just ended, and my own weird r\u00e9sum\u00e9 is the argument.","url":"\/posts\/the-seams-are-the-job-now","date":"2025-02-03","status":"published","degree":2},{"id":"post:the-title-was-cto-the-job-was-translation","type":"post","slug":"the-title-was-cto-the-job-was-translation","title":"The title was CTO, the job was translation","description":"The CTO job was less architecture diagrams than making the same facts make sense to a board, a carrier CIO, support, and engineers far away.","url":"\/posts\/the-title-was-cto-the-job-was-translation","date":"2025-04-14","status":"published","degree":3},{"id":"post:why-i-went-back-to-the-keyboard","type":"post","slug":"why-i-went-back-to-the-keyboard","title":"Why I went back to the keyboard","description":"I left a CTO chair to be in the code again, at exactly the moment the industry decided code was the part that no longer needed a person.","url":"\/posts\/why-i-went-back-to-the-keyboard","date":"2025-08-25","status":"published","degree":5},{"id":"topic:agent-estate","type":"topic","slug":"agent-estate","title":"Agent estate","description":"The accumulated set of scheduled and autonomous agents a person is actually running \u2014 usually larger, older, and less governed than they think.","url":"\/topics\/agent-estate","status":"published","aliases":["agent fleet","the estate"],"degree":8},{"id":"topic:agentic-operator","type":"topic","slug":"agentic-operator","title":"Agentic operator","description":"The person who directs, supervises, and is accountable for a fleet of agents. An emerging job title, and already an informal one.","url":"\/topics\/agentic-operator","status":"published","aliases":["agent operator"],"degree":7},{"id":"topic:comprehension-debt","type":"topic","slug":"comprehension-debt","title":"Comprehension debt","description":"Code that exists in your repository and not in anyone's head. Distinct from technical debt, and accruing much faster.","url":"\/topics\/comprehension-debt","status":"published","aliases":["comprehension gap","cognitive debt"],"degree":7},{"id":"topic:context-engineering","type":"topic","slug":"context-engineering","title":"Context engineering","description":"Deciding what a model gets to see, and what it must not \u2014 the discipline that replaced prompt engineering once agents got long-running.","url":"\/topics\/context-engineering","status":"published","aliases":["context window management"],"degree":5},{"id":"topic:dark-factory","type":"topic","slug":"dark-factory","title":"Dark factory","description":"A plant automated to the point that the lights can stay off \u2014 borrowed from manufacturing to name what is happening to software.","url":"\/topics\/dark-factory","status":"published","aliases":["dark factory software","lights-out manufacturing"],"degree":4},{"id":"topic:distributed-teams","type":"topic","slug":"distributed-teams","title":"Distributed teams","description":"Working with people you cannot see, in time zones that do not overlap with yours. The best preparation for agents that I did not know I was getting.","url":"\/topics\/distributed-teams","status":"published","aliases":["offshore team","remote team","offshore engineering"],"degree":9},{"id":"topic:event-sourcing","type":"topic","slug":"event-sourcing","title":"Event sourcing","description":"Storing what happened rather than what is currently true, so any past state can be reconstructed. Built it for a regulator; keep reaching for it for agents.","url":"\/topics\/event-sourcing","status":"published","aliases":["event-sourced","append-only log"],"degree":7},{"id":"topic:hard-deadlines","type":"topic","slug":"hard-deadlines","title":"Hard deadlines","description":"A date set by someone who does not care about your sprint. Election day, a filing date, a regulator. The only real teacher of shipping I have met.","url":"\/topics\/hard-deadlines","status":"published","aliases":["immovable deadline","an immovable deadline"],"degree":3},{"id":"topic:harness","type":"topic","slug":"harness","title":"Harness","description":"Everything around the model \u2014 the prompts, tools, retries, permissions, and checks that turn a text generator into something that can be trusted with work.","url":"\/topics\/harness","status":"published","aliases":["agent harness","the harness"],"degree":9},{"id":"topic:legacy-code","type":"topic","slug":"legacy-code","title":"Legacy code","description":"Code that outlived the assumptions it was written under. I have been writing PHP since version 4, so I have made a lot of it.","url":"\/topics\/legacy-code","status":"published","aliases":["legacy systems"],"degree":5},{"id":"topic:many-hats","type":"topic","slug":"many-hats","title":"Many hats","description":"Holding several unrelated jobs at once. A survival adaptation at small companies, and the closest thing I have to a trained skill.","url":"\/topics\/many-hats","status":"published","aliases":["wearing many hats","the generalist"],"degree":7},{"id":"topic:owning-your-platform","type":"topic","slug":"owning-your-platform","title":"Owning your platform","description":"The difference between an audience you can reach and an audience someone else can revoke. I learned this expensively.","url":"\/topics\/owning-your-platform","status":"published","aliases":["platform risk","rented audience"],"degree":1},{"id":"topic:player-coach","type":"topic","slug":"player-coach","title":"Player-coach","description":"The engineering leader who never stopped shipping. A compromise for most of my career; the correct position now.","url":"\/topics\/player-coach","status":"published","aliases":["working manager","hands-on leader"],"degree":9},{"id":"topic:the-control-arm","type":"topic","slug":"the-control-arm","title":"The control arm","description":"The comparison group nobody is running \u2014 the same work done the old way, so you could actually tell whether the new way is faster.","url":"\/topics\/the-control-arm","status":"published","aliases":["control group"],"degree":4},{"id":"topic:verification","type":"topic","slug":"verification","title":"Verification","description":"Confirming that what was produced is actually correct. Generation got cheap; this did not, and it is now the constraint.","url":"\/topics\/verification","status":"published","aliases":["the verification gap"],"degree":15}],"edges":[{"source":"post:an-audit-log-your-agent-cannot-lie-to","target":"topic:agent-estate","type":"explores"},{"source":"post:an-audit-log-your-agent-cannot-lie-to","target":"topic:comprehension-debt","type":"explores"},{"source":"post:an-audit-log-your-agent-cannot-lie-to","target":"topic:event-sourcing","type":"explores"},{"source":"post:an-audit-log-your-agent-cannot-lie-to","target":"topic:verification","type":"explores"},{"source":"post:election-day-does-not-move","target":"topic:event-sourcing","type":"explores"},{"source":"post:election-day-does-not-move","target":"topic:hard-deadlines","type":"explores"},{"source":"post:election-day-does-not-move","target":"topic:player-coach","type":"explores"},{"source":"post:four-titles-never-left-the-editor","target":"topic:many-hats","type":"explores"},{"source":"post:four-titles-never-left-the-editor","target":"topic:player-coach","type":"explores"},{"source":"post:four-titles-never-left-the-editor","target":"topic:verification","type":"explores"},{"source":"post:nobody-volunteers-to-be-the-control-group","target":"topic:agent-estate","type":"explores"},{"source":"post:nobody-volunteers-to-be-the-control-group","target":"topic:the-control-arm","type":"explores"},{"source":"post:nobody-volunteers-to-be-the-control-group","target":"topic:verification","type":"explores"},{"source":"post:one-round-trip-per-day","target":"topic:agentic-operator","type":"explores"},{"source":"post:one-round-trip-per-day","target":"topic:context-engineering","type":"explores"},{"source":"post:one-round-trip-per-day","target":"topic:distributed-teams","type":"explores"},{"source":"post:org-chart-assumed-typing-was-the-bottleneck","target":"topic:agentic-operator","type":"explores"},{"source":"post:org-chart-assumed-typing-was-the-bottleneck","target":"topic:distributed-teams","type":"explores"},{"source":"post:org-chart-assumed-typing-was-the-bottleneck","target":"topic:verification","type":"explores"},{"source":"post:procrastination-with-excellent-tooling","target":"topic:agent-estate","type":"explores"},{"source":"post:procrastination-with-excellent-tooling","target":"topic:dark-factory","type":"explores"},{"source":"post:procrastination-with-excellent-tooling","target":"topic:harness","type":"explores"},{"source":"post:procrastination-with-excellent-tooling","target":"topic:verification","type":"explores"},{"source":"post:register-globals-and-the-whole-catastrophe","target":"topic:comprehension-debt","type":"explores"},{"source":"post:register-globals-and-the-whole-catastrophe","target":"topic:event-sourcing","type":"explores"},{"source":"post:register-globals-and-the-whole-catastrophe","target":"topic:hard-deadlines","type":"explores"},{"source":"post:register-globals-and-the-whole-catastrophe","target":"topic:legacy-code","type":"explores"},{"source":"post:register-globals-and-the-whole-catastrophe","target":"topic:verification","type":"explores"},{"source":"post:sixteen-years-and-they-took-the-account","target":"topic:owning-your-platform","type":"explores"},{"source":"post:stop-at-the-first-wrong-sentence","target":"topic:dark-factory","type":"explores"},{"source":"post:stop-at-the-first-wrong-sentence","target":"topic:harness","type":"explores"},{"source":"post:stop-at-the-first-wrong-sentence","target":"topic:the-control-arm","type":"explores"},{"source":"post:stop-at-the-first-wrong-sentence","target":"topic:verification","type":"explores"},{"source":"post:ten-agents-and-what-they-actually-cost-me","target":"topic:agent-estate","type":"explores"},{"source":"post:ten-agents-and-what-they-actually-cost-me","target":"topic:agentic-operator","type":"explores"},{"source":"post:ten-agents-and-what-they-actually-cost-me","target":"topic:harness","type":"explores"},{"source":"post:the-seams-are-the-job-now","target":"topic:many-hats","type":"explores"},{"source":"post:the-seams-are-the-job-now","target":"topic:player-coach","type":"explores"},{"source":"post:the-title-was-cto-the-job-was-translation","target":"topic:distributed-teams","type":"explores"},{"source":"post:the-title-was-cto-the-job-was-translation","target":"topic:many-hats","type":"explores"},{"source":"post:the-title-was-cto-the-job-was-translation","target":"topic:player-coach","type":"explores"},{"source":"post:why-i-went-back-to-the-keyboard","target":"topic:distributed-teams","type":"explores"},{"source":"post:why-i-went-back-to-the-keyboard","target":"topic:event-sourcing","type":"explores"},{"source":"post:why-i-went-back-to-the-keyboard","target":"topic:many-hats","type":"explores"},{"source":"post:why-i-went-back-to-the-keyboard","target":"topic:player-coach","type":"explores"},{"source":"post:why-i-went-back-to-the-keyboard","target":"topic:verification","type":"explores"},{"source":"topic:agent-estate","target":"topic:agentic-operator","type":"relates-to"},{"source":"topic:agent-estate","target":"topic:harness","type":"relates-to"},{"source":"topic:agentic-operator","target":"topic:agent-estate","type":"relates-to"},{"source":"topic:agentic-operator","target":"topic:distributed-teams","type":"relates-to"},{"source":"topic:comprehension-debt","target":"topic:legacy-code","type":"relates-to"},{"source":"topic:comprehension-debt","target":"topic:verification","type":"relates-to"},{"source":"topic:context-engineering","target":"topic:distributed-teams","type":"relates-to"},{"source":"topic:context-engineering","target":"topic:harness","type":"relates-to"},{"source":"topic:dark-factory","target":"topic:agent-estate","type":"relates-to"},{"source":"topic:dark-factory","target":"topic:harness","type":"relates-to"},{"source":"topic:distributed-teams","target":"topic:agentic-operator","type":"relates-to"},{"source":"topic:distributed-teams","target":"topic:context-engineering","type":"relates-to"},{"source":"topic:event-sourcing","target":"topic:comprehension-debt","type":"relates-to"},{"source":"topic:event-sourcing","target":"topic:verification","type":"relates-to"},{"source":"topic:hard-deadlines","target":"topic:player-coach","type":"relates-to"},{"source":"topic:harness","target":"topic:context-engineering","type":"relates-to"},{"source":"topic:harness","target":"topic:verification","type":"relates-to"},{"source":"topic:legacy-code","target":"topic:comprehension-debt","type":"relates-to"},{"source":"topic:legacy-code","target":"topic:event-sourcing","type":"relates-to"},{"source":"topic:legacy-code","target":"topic:harness","type":"relates-to"},{"source":"topic:many-hats","target":"topic:distributed-teams","type":"relates-to"},{"source":"topic:many-hats","target":"topic:player-coach","type":"relates-to"},{"source":"topic:player-coach","target":"topic:many-hats","type":"relates-to"},{"source":"topic:player-coach","target":"topic:verification","type":"relates-to"},{"source":"topic:the-control-arm","target":"topic:verification","type":"relates-to"},{"source":"topic:verification","target":"topic:comprehension-debt","type":"relates-to"},{"source":"topic:verification","target":"topic:the-control-arm","type":"relates-to"}]}