Blog
Long-form writing on what I'm learning, building, and breaking. Daily-ish, depending on how the day goes.
Latest
From four repos to a monorepo
3 min readmonorepo, Expo, Metro, refactor, architecture
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 postMore posts
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.
3 min read · UX, feedback, mobile, indie
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.
3 min read · Google Play, launch, mobile, indie
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.
3 min read · architecture, RevenueCat, deep linking, mobile
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.
3 min read · RevenueCat, AdMob, Google Play, monetization, mobile
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.
3 min read · game design, monetization, React Native
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.
3 min read · React Native, Expo, gestures, game dev
One idea, four apps
The product and architecture bet behind shipping a family of four themed crossword games from a single shared codebase.
3 min read · product, architecture, Expo, mobile
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.
3 min read · AI coding agent, React Native, Expo, indie, mobile
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.
6 min read · claude-code, ai, productivity
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.
5 min read · devops, automation
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.
4 min read · css, frontend