


Overview
I stopped reading because I couldn't remember everything I'd read. The malaise started when I tried to teach myself about the immune system and quickly drowned in prerequisites - of which there are many.
Charlie Munger, a founder of Berkshire Hathaway and objective polymath, championed the acquisition of "worldly wisdom", an umbrella term for sufficient depth across a wide spectrum of disciplines, but no deeper. According to Charlie, the primary advantage lies in broadening your opportunity horizon over the pursuit of mastery in a restrictive set.
The limiting factor for achieving the level of learning required was my memory, so I looked to see whether "there's an app for that". After some wrestling with Anki's backend (a flashcard app that shows you flashcards in intervals set by how well you remember something), I decided to build a more personal solution.
I'm now back to reading whatever I can get my hands on, and enjoying retaining what I've read!
If you're new to app dev, paste this post into Codex / Claude Code before starting.
Most Surprising Finding
Don't just push your coding agents to build the app, push them to optimise your devx beyond your wildest dreams.
The Recipe I Used
- I had a 2023 MacBook Pro 16GB. You cannot release to the App Store without a Mac. You don't actually need an iPhone.
- Updated macOS. I was worried about this having heard of the evils of Tahoe. It's great, no issues with performance or battery life.
- Installed the latest version of Xcode.
- Installed the latest iOS simulator in Xcode.
- Created three subfolders, iOS app, API (Next.js), data. Did this to leave the door open for an Android port (as simple as pointing Codex to the iOS app and saying "make an Android copy" because of the API abstraction)
| Component | Use it for |
|---|---|
iOS App | Xcode project. iOS views and app logic only |
API | Routes for CRUD |
Data | Our DB migrations live here |
- Design phase
- Build phase
- Release phase
Design Phase (2-3 days)
- Opened Codex in the root folder and began the design phase. This was iteration over and over on two points, the UX and the data models.
- Produced ASCII "screens" for each screen I wanted.
- Reduced the data tables as much as I could where practical. Loop after loop reasoning with Codex over simplifications.
- Produced the minimal set of OpenAPI specs for the API.
- Put everything under 5 files, api.md, data.md, styles.md, screens.md, components.md (shared abstractions, auth layer etc) to help ensure a clean build
- Added reference to the style guide and all of these files in the agents.md to ensure consistent styling.
- Only when the app design was as simple as possible did I start building with Codex.
Build Phase (2-3 days)
- Set up an account on Vercel for the API, and Supabase for the database. I had two projects in each, one dev one prod. Both free tier.
- Bought the polymatcha.com domain on GoDaddy for the API and added the CNAME record for the subdomain in Vercel.
- Set up a killer DevX - I had two scripts, build and release, both tied to skills and agents.md.
- The build script built the app and API, ran Supabase migrations to ensure they were OK, launched a tmux terminal with the Next.js app running, and deployed the app to the iPhone simulator.
- The release script did everything build did while deploying the API to Vercel and the app to my phone over Wi-Fi. This is where it got really cool - if my phone was unlocked, Codex would deploy a new version. No cable needed.
- All secrets kept in env files e.g. .env.local, including OpenAI keys, Supabase, Vercel which got injected at runtime from my script.
- Finally, tied all of this into pre-commit hooks and asked Codex to write full product updates for each commit with screenshots, it felt like magic.
Release Phase (3-4 days)
- Bought an Apple Developer account, about $100. If you don't need to upload to the App Store, you can forgo this - but your test app will expire from your phone every few days and any CoreData will be wiped.
- This phase was new to me - upload the app to App Store Connect (automated into my release script, wait for Apple to review (0-2 days), design fixes in tandem with Codex).
- Unexpected bumps were things like user content management (flagging / blocking), and subscription terms - convincing Apple my app was free.
- Things I wish I'd known - "waiting for review" is good, you don't need to do anything, the ball is in Apple's court.