Writing

Blog

A place for my thoughts and writings on engineering, product work, and shipping software.

5 apps in 12 months

Article · Jul 28, 2026

5 Apps in 12 Months: Building Was Easy, Marketing Was the Real Boss Fight

One year, five shipped apps, two stores. The biggest lesson: code is only 20% of the indie hacking equation.

Read article
Native iOS widgets in managed Expo

Article · Jul 8, 2026

Building Native iOS Widgets in Managed Expo Without Losing Your Mind

How I shipped native iOS home screen widgets in a managed Expo app using Config Plugins and shared local-first storage.

Read article
HealthKit and Health Connect bridge in Expo

Article · Jul 4, 2026

How I built a unified, local-first bridge for Apple HealthKit and Google Health Connect in Expo

A clean design pattern for unifying HealthKit and Health Connect behind a single abstract React hook.

Read article
Snowball vs Avalanche debt algorithms

Article · Apr 24, 2026

The Math of Motivation: Implementing Snowball vs. Avalanche Algorithms in React Native

How building TinyDebt taught me that mathematically optimal code often fails the human test.

Read article
Deploying Expo apps to the App Store

Article · Mar 30, 2026

Deploying My Expo Apps to the App Store - Lessons Learned

A step-by-step guide from Apple Developer enrollment to hitting Submit for Review.

Read article
Deploying Expo apps to Google Play

Article · Feb 4, 2026

Deploying my Expo apps to Google Play - lessons learned

A walkthrough of the surprises, fixes, and lessons from shipping two Expo apps to the Google Play Store.

Read article
Migrating Expo apps from Supabase to Firebase

Article · Dec 27, 2025

Migrating my Expo apps from Supabase to Firebase - what I learned

How and why I moved TinyRecipe and TinyDebt from Supabase to Firebase, and what surprised me along the way.

Read article
TinyDebt app screenshot

Article · Nov 26, 2025

I built TinyDebt - a minimal debt-tracking app (no backend, instant syncing)

A look at the technical decisions behind TinyDebt: local-first storage, no backend, and a calm UI that gets out of your way.

Read article