Writing
This blog is my attempt to more regularly publish some writing. It's very informal. Sometimes long stories or cases; sometimes it's what I'd send you if you were to ask me what's on my mind this week in an email - and obviously too long for a tweet.
Local AI, With the Meter Running
Everybody has an opinion about local AI. Almost nobody has numbers. So we built a two-box local LLM stack for a client, put a power meter on it, and compared every token against the cloud.
TwinCAT on Apple Silicon
Every investigation said the TwinCAT runtime cannot run on an M-series Mac. Each verdict was true and each measured the wrong layer. Then a PLC program went to RUN.
OpenTelemetry Won't Tell You Why the Robot Stopped
Observability answers "what is the system doing?" Diagnostics answers "what broke, why, and what do I do now?" Those are different questions, and the robotics world keeps answering the wrong one.
CRA Isn't New. OT Just Wasn't Listening.
The EU Cyber Resilience Act is panicking the OT world. Mission-critical software has shipped under stricter rules for thirty years. The standards aren't the problem. The architecture is.
Code Got Cheap. The Hard Part Didn't.
Coding agents made writing code fast. They did not make software fast. The bottleneck just moved.
Spec-Driven Development, but the Specs Are a Graph
A 12-lesson course that rebuilds the DeepLearning.AI spec-driven development tutorial on Rust + sphinx-needs — and the AgentClinic domain you build to learn it.
The 6x Tax You're Paying Without Knowing It
Why unstructured AI coding burns your budget and still delivers incomplete results — and what a queryable traceability graph changes about that.