Build
12 posts in this category.
Why I Rewrote 480 Premium Sentences for a Voice Mission
A voice mission has to be said half asleep and split safely into Wake Sequence cards. Most of my 480 premium sentences were written for reading, not for that.
15 Aug 2026 · 8 min Buildgsutil rsync fails with 'sys has no attribute maxint' on Python 3.14
The checksum flag falls back to a pure-Python path that still calls sys.maxint, removed from Python 3. It copied two files, then quit.
14 Aug 2026 · 2 min BuildWhat broke when I connected iOS App Check to purchase verification
StoreKit completed the purchase and the app looked ready to unlock, but the server request failed before it could even check whether the transaction was real.
14 Aug 2026 · 8 min BuildWhy a one-time iOS alarm disabled itself before it rang
A snooze or recovery reservation was still pending, but my startup code checked only the primary AlarmKit schedule and decided the alarm was already finished.
14 Aug 2026 · 6 min BuildMy alarm's voice check could be passed while still half asleep
A single correct voice reading could end RYZA's alarm, even half asleep. Wake Sequence adds a short state machine after it so dismissal is not one action.
14 Aug 2026 · 7 min BuildAfter speech recognition, my alarm would not start ringing again
After speech recognition, resume() reported success while the speaker stayed silent. RYZA now rebuilds the player and checks that sound came back.
13 Aug 2026 · 8 min BuildMy app kept rescheduling alarms that were already ringing
Returning to the foreground made RYZA re-sync its alarm schedule, including the one alerting on the lock screen at that moment. Repair work is still work.
13 Aug 2026 · 6 min BuildAfter a reboot, iOS would not let my app read its own data
The alarm fired but the voice mission did not open. The app was reading its own storage before the first unlock and trusting the empty answer it got back.
12 Aug 2026 · 7 min BuildDoes moving to Astro actually make a site faster? I measured mine
Same content, same host, hand-written HTML replaced by a static site generator. The framework saved 400 bytes. Something else saved six megabytes.
11 Aug 2026 · 5 min BuildWhy exact speech matching breaks voice apps, and what I do instead
Recognition is wrong often enough that word-for-word matching punishes the user for the recognizer's mistakes. Here is what I score instead.
11 Aug 2026 · 6 min BuildA blank line inside inline SVG will silently delete half your diagram
Markdown ends a raw HTML block at the first empty line. My diagram lost five of six shapes and still rendered, so nothing errored and nothing looked broken.
11 Aug 2026 · 1 min BuildCan AlarmKit enforce a custom dismiss flow? No, and here is why
AlarmKit wakes the phone through Silent Mode but lets anyone stop it in one tap, which was the whole product. I rejected it in May and shipped it in August.
10 Aug 2026 · 9 min