Blog
What I learn while building. Technical deep-dives, honest numbers, and lessons from shipping solo.
I Swapped Fashn for Gemini and Discovered Vertex AI Can't Return Images
Replacing OutfitMaker's virtual try-on engine looked like a service-object swap. It turned into a same-day cascade of five fixes, including discovering the Gemini API I was already using can't return images.
A Duplicate Turbo Frame Bug That Broke Three Features Silently
Two turbo-frame elements with the same id, one HTTP response, three dead features in OutfitMaker. No exception, no Honeybadger hit, no console error. Just a click that did nothing.
A TOCTOU Bug in My Gemini Rate Limiter
A read-then-write pattern in OutfitMaker's rate limiter let concurrent requests bypass the daily Gemini quota. The fix compresses to a single atomic increment, but understanding why takes a minute.
PWA Over Native for a Fashion App
Why I chose a Progressive Web App over native iOS/Android for OutfitMaker. Camera access works, installation works, and I don't need Apple's permission.
SEO for Indie Hackers: What Actually Worked
Real data from 4 months of SEO effort on OutfitMaker. The strategies that moved the needle and the ones that wasted my time.
Rails 8 Migration on a Live Product
Upgrading from Rails 7.1.5 to 8.1 with paying users. The strategy, the gotchas, and why I fixed 103 test failures before touching the Gemfile.
From Zero to First Paying Customer
First commit to first €7.99. The timeline, the numbers, what worked and what didn't on the path to revenue.
Hotwire Over React for a Solo Dev
Real-time features without a JavaScript framework. How Turbo Streams and Stimulus gave OutfitMaker everything it needed with a fraction of the complexity.
Multimodal AI for Outfit Suggestions
How sending actual photos to Gemini instead of text descriptions transformed OutfitMaker's suggestions from generic to genuinely useful.
How I Got ChatGPT to Recommend My Product
Traffic from chatgpt.com appeared in my analytics. Here's what GEO means for indie products, and the specific steps that worked.
Building in Public While Still Learning
The tension between sharing your work and not feeling like an expert. How one Reddit post brought 40 users in 24 hours.
My First State Machine in Rails
How OutfitMaker's outfit suggestion flow evolved from nested if/else into a proper state machine. The gem, the gotchas, and why it clarified everything.
Why I Switched from RSpec to Minitest
RSpec felt like too much ceremony for a solo project. Here's how I migrated 341 tests, what broke, and why simpler was better.