Blog
Notes from the workshop.
Long-form writing on what I'm learning, building, and breaking while making the apps.
Latest3 min read
From four repos to a monorepo
Consolidating four byte-identical app repos into one shared core plus thin app shells, the expo-router and Metro problems it surfaced, and validating the migration with real bundles.
Read the post3 min read
Shipping, then listening
The first round of real tester feedback and the small, high-leverage fixes it produced: grid spacing, free typing, jump buttons, easing early ads, and a well-timed review prompt.
Read the post3 min read
The Play Store gauntlet
Everything between a finished app and a live listing: store assets, data safety, content rating, the target-audience trap, app-ads.txt, and the testing tracks, from real experience.
Read the post3 min read
A cross-app discount with no backend
Giving players 50% off in a sibling app when they already paid in one, using a deep-link handshake instead of sign-in, accounts, or a server.
Read the post3 min read
Mobile in-app purchases: what nobody warns you about
AdMob, RevenueCat, and Google Play Billing in practice. Products versus entitlements versus offerings, the 'purchase unavailable' debugging, license testers, and real-time notifications over Pub/Sub.
Read the post3 min read
A hint economy that's fair but not free
Designing hints that monetize without feeling hostile: a regenerating free tier, never-expiring bonus hints, streak rewards, and an anti-cheat for people who go offline to dodge ads.
Read the post3 min read
Building a crossword engine in React Native
Exact-hit-test tappable cells, pinch-zoom with breathing room, an interlocking offline level generator, and the small details that make a puzzle feel right.
Read the post3 min read
One idea, four apps
The product and architecture bet behind shipping a family of four themed crossword games from a single shared codebase.
Read the post3 min read
Building four apps with an AI coding agent
How I shipped a family of four crossword games to the Play Store by pairing with an AI coding agent, from the game engine to monetization to a last-minute monorepo refactor.
Read the post6 min read
How I cut my Claude token bill by 90%
Two tiny tools and one habit. RTK trims bash output before it reaches the model. Caveman trims the model's replies before they reach me. Setup took ten minutes. The first session after barely registered on the bill.
Read the post5 min read
The cron job I avoided for five years
I ran the same script by hand for years because cron looked like a foreign language. It took five minutes to learn. Here is the version of the explanation I wish someone had given me.
Read the post4 min read
Components that scale like images
A small CSS pattern that turned out to be the missing piece in our design system: container queries plus an em cascade. Three lines of CSS, one mental shift.
Read the post