Cats and Dogs

Darkroom NotesSeason 4STIL.RECEIPTPart 4 of 6

Darkroom Notes

Every real bug becomes a test — one receipt stands guard

A discount line vanishes entirely. A payment made with iD gets recorded as cash. With something as endlessly varied as receipts, fixing one may be breaking another. So I decided to turn every receipt that tripped me up on a real device into a test, on the spot. The story of how the receipt that troubled me becomes a guard.

Every real bug becomes a test — one receipt stands guard

So far I've fixed the broken tables and the tax mix-ups, one by one. Naturally, along the way, I tripped many times on real receipts. Today is about how I handled each one.

What I learned from the card app

With STIL.BIZ, the business-card app that came before this one, I had a regret. Too often, I noticed a problem only in production. It worked on my desk, then broke on a real card. I'd fix it, and it would break somewhere else.

So with RECEIPT, I decided from the start: a receipt that fails on a real device doesn't get fixed and forgotten — it becomes a test. Receipts have endless forms, store by store. Fixing one may be breaking another. Standing guard over that with human attention alone, I figured, was impossible.

Making a specimen of each bug

For instance, a discount line vanishes. On one supermarket's receipt, "discount −¥777" was missing entirely. The minus sign got dropped, and somehow the word "discount" had slipped into the list of words to skip.

Or, a payment made with iD gets recorded as "cash." On another receipt, iD was missing from the options where the payment method is identified.

I didn't let these stumbles end at the fix. I froze the whole receipt, character positions and all, as a test. From then on, the same receipt gets read again, and if the app errs the same way in the same place, I know at once. Like making a specimen of the receipt that troubled me and keeping it in a jar.

A real receipt stands guard

This way, each time I added a receipt I'd stumbled on, one more guard joined. That restaurant, that supermarket, that hundred-yen shop — the receipts that actually troubled me became sentries against ever making the same mistake twice.

When I put in a new fix, one of those past receipts calls out, "careful, you'll break this over here." When you build alone, there's rarely anyone to point out your blind spots. So I had my own past stumbles take on that role.

The fixing itself becomes an asset

Building solo, you're tempted to move on with "it works, good enough." But turn each fix into a test right away, and the act of fixing itself becomes an asset that doesn't disappear.

A bug was less an enemy than a specimen that protects what comes next. Tripping on a receipt stings. But seal that stumble in a jar, and a future me is spared from falling in the same place. An app that reads receipts, I think, gets sturdier little by little, just like this.

Next time

Next, something a little different in tone. The decision, around invoices and the Electronic Books Preservation Act, to deliberately not write "fully supported" — a story about wording.

STIL.RECEIPT is out on the App Store.

Download STIL.RECEIPT on the App Store