Week 45 | Sauna Mode

Last Week Week 44 was sent from a rainy West Lake balcony where I promised to keep publishing even if the laptop stayed zipped up. I kept the Shokken alpha exactly where it was, let the CI pipeline recycle screenshots on its own, and mostly used my phone to confirm that tester messages were getting answered within a day. That check-in was really a travel postcard that said, “all systems nominal, founder temporarily offline....

November 8, 2025 · 5 min · 902 words · Bill

Week 44 | Hangzhou Hold Pattern

A Quick Postcard From Hangzhou Week 44 is a short check-in from a borrowed desk overlooking West Lake. I kept the weekly promise, but the laptop stayed in the bag aside from making sure the Week 43 builds kept publishing and that tester feedback still lands in the inbox. The alpha release notes remain unchanged, shokken.rsvp keeps pointing people to the right install links, and the Play Console graphs look exactly like they did before I boarded the plane....

November 1, 2025 · 2 min · 342 words · Bill

Week 43 | Jetlagged But Shipping

On The Road Week 43 found me bouncing between old haunts with my travel kit and a laptop that rarely left the bag. The wind hammered the camera, I forgot the microphone at home, and shipping time narrowed to minutes between family visits. Instead of forcing half-finished code, I treated the week as a checkpoint: the product is stable enough to hand to new people, the pipeline keeps publishing builds, and I get to absorb how the app feels after stepping away for a few days....

October 25, 2025 · 2 min · 266 words · Bill

Week 42 | Android Tester Instructions

Android Test Mission Brief Thank you for lending your time to shape Shokken. This guide turns the Android testing session into a predictable checklist so every report lands with the details I need. Who Should Use This Guide Android devices only; the iOS flow lives in a separate briefing. You’ll need a Google account that can join testing groups and access Google Play. Keep shokken.rsvp handy—it is the single source of truth for builds, FAQs, and issue tracking....

October 18, 2025 · 4 min · 673 words · Bill

Week 41 | Bottom Sheets, Builds, And Beta Prep

Last Week Last week I recorded the update from a parking lot while the houseguests I was hosting rotated through the city. I used the downtime to map Google Play’s closed testing requirements, built a checklist for the fourteen testers I need to keep the track alive, and rewrote my dogfooding playbook so the first bug hunts have scripts instead of improvisation. Most of my energy went into people logistics: scheduling those friends and family members for thirty-minute screen-sharing sessions, documenting how to install from the Play Console instead of sideloading, and figuring out how to capture their feedback without asking them to learn SQL....

October 11, 2025 · 10 min · 2077 words · Bill

Week 40 | Recruiting The Beta Flight

Last Week Last week I finally coaxed the Supabase cron job into draining the email outbox without manual babysitting. I replayed 500 queued notifications, watched the Kotlin client hand them off to Postgres, and confirmed Resend responds within the same edge invocation. With that loop stabilized the admin dashboard now reflects message success within seconds, and I officially declared the infrastructure feature complete. I did try to finish the Resend webhook, but Supabase keeps rejecting the callback with a 401 even after I disabled JWT enforcement....

October 4, 2025 · 10 min · 2027 words · Bill

Week 39 | Feature Complete, Webhook Pending

Last Week Last week I finally pried open the Supabase email pipeline that had been stuck in limbo. I rewired the outbox drainer so it writes to a dedicated log table before and after each batch, captured the payload that Resend expects, and added defensive retries around the queue reader. Most of that effort went into proving the cron job could wake the Edge Function reliably; I ended up setting up a cron_debug_log table, replaying scheduled jobs, and verifying Supabase’s pg_cron extension was actually firing once a minute....

September 27, 2025 · 10 min · 2067 words · Bill

Week 38.5 | Switching from Claude Code to Codex CLI

The Great Migration After months of using Claude Code as my primary AI coding assistant, I’m switching to Codex CLI. This isn’t clickbait - it’s a fundamental shift in my development workflow driven by tangible differences in model behavior, cost efficiency, and most importantly, trust in the tool’s ability to follow instructions. The AI landscape changes rapidly. Until recently, Claude Code and Claude models dominated agentic programming tasks. If you could afford it, Claude was the obvious choice....

September 24, 2025 · 11 min · 2226 words · Bill

Week 38 | Debugging Cron Jobs and Email Queues

Last Week Successfully set up the email outbox infrastructure in the database - a queue table that holds all emails waiting to be sent. Connected the app to this outbox so guest notification emails now properly queue instead of attempting immediate delivery. The architecture is solid: emails queue, the drainer function works when manually invoked, but the cron job automation isn’t triggering. The Cron Job Mystery The email infrastructure is 90% complete....

September 20, 2025 · 13 min · 2702 words · Bill

Week 37 | Email Infrastructure: The Outbox Pattern

Last Week Recording outside as summer comes to an end! Last week was productive - I successfully set up Kermit the Log and used it to diagnose a phantom UI error. The database insert was succeeding, but the frontend was showing failure. Turns out the post-insert fetch operation had a parsing error that was masquerading as an insert failure. Fixed the error handling to report these separately and resolved the parsing issue itself....

September 13, 2025 · 14 min · 2839 words · Bill