March's three pieces approach the same place from three directions — most of what you need already exists.
What went out
| Date | Track | |
|---|---|---|
| 03-05 | Horizon | The Foundation Is Already There |
| 03-12 | Build | No Vendor Software for the Instrument |
| 03-19 | Field | The Teacher Who Got Midnight Back |
Wrap, do not invent
The point of the instrument piece is that there is nothing to invent. All three vendors answer *IDN? and give a value for MEAS:VOLT?. The only problem is that they answer three ways — exponent notation, a carriage return, a unit glued to the value.
Put the place that absorbs those dialects in one function per instrument, and a fourth vendor adds one line.
This month's finding
Caught while building. Dart's default LineSplitter ate the carriage return first, so the place that is supposed to know that vendor's habit was doing nothing at all. Behaviourally fine — until the next instrument sends \r\r\n. It was changed to cut on the newline only, and verification checks that all three dialects actually arrive.
On the marking side, keeping the rubric as data became a discipline. The tool holds no code deciding what a good answer is. That is data the teacher wrote, and beside each score sits which branch of that data it came from.
Still open
- Summarising — if a layer below summarises the checklist, what you wrote by hand evaporates anyway. Not yet blocked
- High-speed acquisition — the microsecond trigger path stays the instrument firmware's job
Next month
On to the proposition that every server is an app, and its other face — what you finally refuse to make a tool of.
makemind.dev "Signal" — the 2026-03 close.