Halfway through the series. Instead of a self-congratulating check-in, here's something more useful: a map of the fourteen ideas so far, each in a paragraph, so you can skim the series in five minutes and decide which posts to read properly.
The building side
Day 2: Put rules where they can't be bypassed. In CardBridge, a trigger-enforced state machine in Postgres decides which escrow transitions are legal. The browser can ask for a change; only the database decides. Cost: slower debugging and more ceremony. Gap: no automated tests yet.
Day 3: An optional step must never fail a deploy. A Puppeteer prerender step needed Chrome; Vercel skipped the install; the failure blocked every deploy for about two weeks, and the live site quietly stayed old. Fix: fall back to a serverless Chromium, and if nothing launches, skip and exit 0. Check the live site with curl, don't trust git push.
Day 6: A design system is a list of decisions you refuse to remake. Three colours, three fonts with fixed jobs, motion with a reason. "Everything should feel printed" settled dozens of choices.
Day 12: "Saved" is a promise. In Whiteboard.ai, the label only appears after the Postgres commit, so an edit marked Saved survives kill -9.
The thinking side
Day 4: Choose by what already exists. Of five ways to earn online, I chose the one that only needed packaging of work I'd already done.
Day 5: Instruction is not control. Don't rely on a prompt to enforce what code can enforce, and don't rely on an assistant for judgement only you can supply.
Day 7: The way out of tutorial hell is boring. Pick something you want to use, build the smallest version, get stuck, search the exact error, repeat.
Day 8: Team projects. Split by interface, write the contract down, merge small and often, don't take over the hard part.
Day 9: What I'm not good at. Testing, unmeasured evals, undeployed work. Naming gaps publicly makes them harder to ignore.
Day 10: Seven habits. One-line goal, ship ugly, "not now" list, deploy early, README as you go, stop at a natural pause, make it for someone.
The AI side
Day 11: RAG in plain English. Chunk, embed, retrieve, generate, and give the model a graceful way to say "I don't know." Retrieval quality matters more than model quality.
Day 12 (again): rules first, AI second. In Whiteboard.ai, deterministic rules run before the model writes a review, and the model sees data with no tools.
The practical side
Day 13: A debugging routine. Reproduce, read the whole error, shrink, one hypothesis, check the boring stuff, explain aloud, write down the cause. Change one thing at a time.
Day 14: Motivation is unreliable. Define tomorrow's first task tonight, use a timer, remove friction, count days, and rest without guilt.
The pattern across all fourteen
Reading them together, one thread repeats:
Make the safe path the default path.
The database makes the legal transition the only transition. The build makes the deploy succeed even when an extra step fails. The design system makes the consistent choice the easy choice. The routine makes starting the easy choice. The prompt gives the model an easy way to say "I don't know."
Whether it's software or habits, good systems don't depend on good intentions.
What's coming in the second half
- Days 16–20: a Three.js intro that respects visitors, Row Level Security in depth, what a student portfolio should contain, learning in public, and a concrete plan for the tests I haven't written.
- Days 21–25: what hackathons teach, rewrite versus refactor, six data structures from a job scheduler, writing people finish, and a serverless API route.
- Days 26–30: impostor syndrome, packaging a template, reading other people's code, and a wrap-up.
Question for you
Which of the fourteen did you find most useful, and which would you push back on? Disagreement is welcome. If a post got something wrong, tell me in the comments and I'll correct it.
Test yourself on the first half
Here are ten questions on the first fourteen posts, with short answers underneath. Try answering before reading.
1. In CardBridge, which part of the system decides whether a transaction may move to a new state?
The database: a trigger validates every change against a map of legal transitions, the caller's role and the invariants.
2. Why did a post-build prerender step end up freezing my deploys?
Vercel skipped Puppeteer's Chrome download (a postinstall script), the step crashed, and the non-zero exit failed the deploy.
3. What rule came out of that?
A post-build nicety must never be able to block a deploy: fall back, and if nothing works, skip and exit 0.
4. What question decided which way to earn online?
What do I already have that other people need, which I can offer without months of new work?
5. What does "instruction is not control" mean?
Don't rely on a prompt to enforce what code can enforce; let the model supply judgement and let the server decide what happens.
6. What are the three jobs of the three fonts in the design system?
Display headlines, body text, and metadata/labels/code.
7. Why does a project "slightly too big" beat a tutorial?
It forces you to make the decisions the tutorial hides.
8. What's a good way to split team work?
By interface (agree the contract first), not by file.
9. In Whiteboard.ai, when does the "Saved" label appear?
Only after the update has been committed to Postgres.
10. What's the first step of debugging in my routine?
Reproduce it, reliably, before changing anything.
If you got seven or more, you've absorbed the main ideas. If not, the posts are short enough to revisit.
Three small experiments to run this week
- Add one database constraint that makes an invalid state impossible, and see what it catches.
-
Do a deploy check by hand:
curlyour live site and compare it with what you think you shipped. - Write your honest list (Day 9) in three columns.
Each takes under an hour and teaches more than another tutorial.
Why the second half goes where it does
The first half was mostly what I built and decided. The second half has more how-to material (Row Level Security, tests, data structures, serverless) and more about how to learn and write, because those compound over time.
A request
If you've been reading silently, now is a perfect time to say hello. A one-line comment ("I'm working on X, stuck on Y") is plenty. I'm collecting those and I'll answer as many as I can.
And if you'd like a deeper dive on any one idea, vote with a comment. The most-requested one gets a longer follow-up after Day 30.

Top comments (0)