An orchestrator that re-runs the tests because the agent said “done” and was lying. A code map that has to cite file and line before I'll believe it. A trading engine that can replay its worst day in slow motion. Ten years of systems where being wrong costs money — mostly written in C#, though the language was never the hard part.
A claim about work isn't the work. The systems I build re-run the tests, read the real exit codes, and diff the artefacts — whether the thing under scrutiny is an AI agent or me, six months ago, swearing I tested it.
If you can't replay it, you can't debug it. Append-only event logs as the source of truth, state as a projection, side effects pushed to the edges — the same discipline works for a trading engine and an agent orchestrator.
Code organised by feature, not by kind. Changing one behaviour should mean opening one folder — not a controller, two interfaces, two implementations, and a mapper across four projects.
Whether it's an API for a team or a tool handed to an LLM: narrow contracts, validated inputs, refuse everything else. Maximal capability with no guardrails is how demos betray you in production.
The best AI tools ship terminal UIs, and suddenly everyone wants one. What .NET offers (Spectre.Console, praised and then audited), what Ink and Bubble Tea do differently, why Go keeps winning this niche — and the pattern I actually ship: a Go TUI attached to a .NET backend over SSE, with a working example.
Event-driven systems rot into callback soup where no two runs behave alike. Here's the cure I used in a trading engine: one queue, one pure reducer, one journal, one effect executor — and the discipline that makes two replays byte-identical.
Two processes, one firehose of events, no broker. What ZeroMQ actually is, which socket pattern fits which job, real throughput numbers, the foot-guns that eat your messages silently — and the lock-step protocol that buys determinism over a socket.
Coding agents will work unattended for hours — if you stop believing anything they say. The full anatomy of an autonomous delivery loop: agent CLIs as processes, a ten-outcome vocabulary, independent gate batteries, fix sessions armed with evidence, and state that survives a power cut.