Skip to content
MP

Going down the rabbit hole with AI

Six hours, forty-seven minutes and 122 prompts on a USB capture path. What pairing with Claude is actually good for is not the first draft — it is the fourth hour.

AIengineeringelectronicstech humor
Cartoon of a bench engineer surrounded by oscilloscopes and jumper wires, a weeping USB endpoint labelled 'commitment issues (buffer boundaries suck)', a DMA controller carrying boxes marked RAW PAIRS and STAGING, and an AI co-pilot monitor saying 'that was close.'
The session, as it felt from the chair.

It started like any good romance: high hopes, clear communication, and a simple plan to roam the high-speed lanes of the USB highway. Staging was set.

Six hours, forty-seven minutes and 122 prompts later I had a few dead bench tests and a crime scene of unbuffered raw pairs.

Welcome to firmware development in the age of AI.

When you are wrestling low-level USB pipelines, raw data captures and an opinionated AI buddy, things get messy fast. Bad memory — memcpy, in this case — does not help at all.

But it was not lost. Barring a few instances of stubbornness, the magic of pairing with Claude is not that it writes flawless code on prompt one. It is having a co-pilot that will relentlessly dig into the weeds with you: sifting through logcat output and Makefile diffs, untangling buffer overruns and dirty tree states, wiring debug signals out of blackbox embedded chips, reading hundreds of pages of datasheets, RFCs, API stacks and SDKs, and methodically diagnosing why the virtual bench instruments flatlined.

That last one took most of the afternoon.

Prompt one is not where the value is

The received story about AI coding is about the first draft — describe the thing, get the thing. That is the part I care least about. On a bench instrument the first draft compiles and then lies to you, and the interesting work starts at hour four, when four instruments read zero and nothing in the build output says why.

What I want from a co-pilot at that point is stamina. Not correctness on the first attempt — stamina. Willingness to read the fifth datasheet section, to re-derive the cycle counter’s clock divider, to hold six hypotheses at once without getting bored and picking the flattering one.

That is what the 122 prompts bought. Not 122 attempts at the same thing; one long descent, with the ladder being built on the way down.

The transcript

I published the session — 3,769 records across the whole run, from the optimistic first deploy to the post-mortem. It is redacted in 1,056 places where serial numbers, paths and identifiers appear, and otherwise close to verbatim: the wrong turns, the stubbornness, and the stretch where both of us were confidently working from a number that was eight times too small.

Read the full raw transcript.

I have written up the technical finding from this session separately — the memcpy that turned out to be a byte loop. That post is the answer. This one is the six hours and forty-seven minutes it took to get there, which is the part the answer never shows.

If you are evaluating whether to pair with a model on firmware, do not judge it on the code it writes in the first five minutes. Judge it on whether it is still useful in the fourth hour, when you are out of ideas and the instrument still reads zero.