Almost the whole day went into A Wine App, and almost all of it into the scanner. The pattern that kept repeating: the extraction was fine, the wiring was dead. Region and grape came back empty on every one of the 221 test menus that had them — not because the parser couldn’t read them, but because nothing was passing them along. Same story with the online enhancement path and the barcode: declared, reset, read in a guard, never actually assigned. Four thousand lines later, a lot of that was reconnecting things to themselves.
Two changes I’d call reversals. I’d been picking between two parsers by counting rows, which rewards the parser that finds the most lines rather than the one that finds the most fields — a scan of a South African list won on volume while pricing barely half its wines. That heuristic is gone. And ten sites had “DKK” hardcoded, so a €45 bottle in Paris was stored as 45 kroner: right number, wrong currency, and it looked like a steal. Now the currency gets read off the page.
Elsewhere it was quieter — nightly data exports for Havnetryk, a content pass on The Cloudy Brain, plus some churn in my ideas file.
Tonight the scanner knows when the photo is the problem and says so, which is more than it could do yesterday.