Blog
Thoughts on AI workflows, tooling, and large-scale engineering — written by me, with AI.
June 2, 2026
~4 min read
AI agents are good at finding something that works. They are terrible at finding out why something broke. That is a discipline problem — and manufacturing solved it sixty years ago.
May 26, 2026
~7 min read
Every skill you load, every message you send, every document you attach quietly eats into the same fixed budget. Here's what happens when that budget runs out — and how to spend it wisely.
May 25, 2026
Two AI agents writing to the same file simultaneously is a data corruption event. Here is the file-locking orchestration layer that makes parallel AI development safe and fast.
May 18, 2026
Giving an LLM access to your codebase without governance constraints is like hiring a contractor and handing them the master key on day one. Here is the governance framework that keeps multi-agent AI development safe and productive.
May 11, 2026
~6 min read
The highest-leverage AI skill in 2026 is not writing better prompts. It is knowing which problems need a prompt and which need a full architectural design. Here is the line I draw.
May 4, 2026
A 180-degree rotation error on a polarized capacitor causes a short circuit. A three-tier heuristic system catches most of them. The IPC-2581 standard would make the whole problem obsolete.
April 27, 2026
Every component on a PCB has a physical body width. Every nozzle has an outer diameter. If the nozzle is too large, it drops the part. Here is the 1,600-line async pipeline that validates this at scale.
April 20, 2026
An optical defect and the machine event that caused it happen minutes apart and live in separate databases. Time-windowing SQL joins close the loop — here is how.
April 13, 2026
SMT machines log generic errors milliseconds before they log the component that caused them. A forward-fill CTE using SQL window functions bridges that gap — here is exactly how it works.
April 6, 2026
Raw machine telemetry tells you what happened. Time-series analytics tells you what is about to happen. Here is how First-Pass Yield, rolling defect rates, and SQL-driven root cause analysis work together.
March 30, 2026
Flying Probe Tester XML files are massive, nested, and namespace-unstable. Here is the three-table relational schema and defensive parsing strategy that tames them.
March 23, 2026
AOI machines generate defect reports with part numbers that almost match your library. Here is the dynamic parsing and fuzzy matching system that bridges that gap.
March 16, 2026
Customers send spreadsheets that look nothing alike. Hardcoded column indices fail on day two. Here is the four-step heuristic pipeline that handles anything.
March 9, 2026
A 10kΩ resistor has at least eight names in the wild. Here is how a regex-driven normalization engine turns manufacturing chaos into a canonical data layer.
March 2, 2026
When your Python backend and JavaScript frontend share state across async WebSocket calls, things fall apart fast. Here is the architecture that fixed it.
February 23, 2026
PyQt was too limiting, Electron was too bloated. Eel let me build a glassmorphism dashboard on constrained edge hardware — and I almost feel bad about how well it worked.
February 16, 2026
Everyone told me SQLite wasn't a real production database. Then I enabled WAL mode, handled concurrent MES workloads, and stopped worrying.
February 9, 2026
Every manufacturing team has that one Excel macro — the one nobody touches. Here's why I finally killed ours and what I built instead.
February 2, 2026
~5 min read
asyncio is not a magic speed-up — it's a precise tool for a specific problem. Here's what it actually does, when it wins, and when it costs you more than it's worth.
January 26, 2026
I spent months running Claude Code, Cursor, and Google Antigravity 2.0 side-by-side on real projects. Here's what the combined agentic stack actually looks like — and where it breaks.
January 19, 2026
An intro to this space — what I'll be writing about, how the blog is generated, and what the assembly hub is.