Blog
Notes on building with AI and shipping on my own. Mostly the kind I wish I’d read earlier.
Don't copy this. Build your own.
How a non-engineer ships real apps with Claude Code, and why downloading someone else's workflow is the wrong move.
ReadWhat building and burying things taught me
A running list of lessons from shipping and burying side projects. Most of it learned the expensive way, so you can have it the cheap one.
ReadAI memory is a writing problem, not a search problem
Everyone reaches for RAG the moment you say 'an AI that remembers you.' After building a companion app that has to remember people for weeks, I think that's the wrong instinct, and the gap is the whole point.
ReadGroq vs OpenRouter, and why I run both
People treat this like Coke vs Pepsi: pick one. They're not the same kind of thing. One is a fast narrow lane, the other is a switchboard, and most real apps end up using both.
ReadPrompting through an API is not the same as chatting
Getting good at the chat box does not make you good at the API. Through the API you own the whole request: roles, temperature, examples, caching, the calls you skip. Here's how I set it up and why.
ReadMost of your AI feature should not be AI
The fastest way to make an AI feature worse is to make all of it AI. The good ones are mostly boring deterministic code, with a small model doing only the part that genuinely needs judgment.
ReadBuild a support bot that knows when it doesn't know
The hard part of a support chatbot isn't answering. It's the moment it can't, and the brittle trick everyone reaches for to detect that moment is the wrong one.
ReadApple's reviewer is your AI app's first jailbreaker
My AI app got rejected, and the rejection pointed at the wrong thing. What that taught me about guardrails, debugging a review notice, and testing the attack before they do.
ReadWhat a solo SaaS actually costs to run per month
Indie builders love to share revenue screenshots. Nobody screenshots the bill. Here's the boring side: a real line-by-line, and why that number quietly kills indie products.
ReadI ship App Store screenshots and promo videos without a designer
I can't design. I still ship store screenshots with phone frames and 9:16 promo videos with music, for every app. The trick is that I don't make them, I render them from code.
ReadGrep finds the easy bugs. The ones that hurt hide in the flow
Scanning code for ugly patterns feels thorough and misses the bug that actually freezes the app. The fix is to walk the user's path, not search for smells.
Read