Writing
Notes accumulated while building services
Concrete notes on shaping product scope, building experiences and systems, and what changed after launch.

Put a Name Next to a Value and People Read the Name
The colour table said navy and crimson, and nobody checked the values. Rather than just swap colours, I made each season's description a rule they must pass.

An Alarm That Always Rings Is Worse Than None
When the red light keeps being someone else's fault, people stop reading it. Another site's uptime and an exception I never declared did that to two CIs.

Defects That Raise No Error
Clipped toasts and trees hidden behind landmarks threw no errors. Instead of fixing each one, I fixed the container and measured what is seen, not what exists.

No Reward Is Not a Small Reward
Candles stopped doing anything once the cake was full, and my first fix raised the goal. What needed fixing was the distance between action and response.

Retiring a Feature Is Three Decisions, Not One
Deleting features that worked taught me three things: judge code and data apart, try a feature by principle rather than quality, and keep nothing half-alive.

In a Daily Product, the Most Important Field Is the Date
The server built new questions daily, yet the screen showed yesterday's result the next morning. The state had no date, and that kind of death leaves no log.

When the Sample Is Tiny, Show No Number
‘100% of the one fan who tried got it right’ is true and tells you nothing. When the sample is tiny, I decided to show a blank instead of a number.

UI Copy Is a Spec
When code breaks a promise the screen made, lowering the promise is always cheaper. Two cases where I kept the words and fixed the behaviour instead.

One Fixed Hour Makes the Whole Product Synchronous
A day-long party built so nobody had to show up at a set time still had one 10 pm group photo. Every reminder formed around it, and the product said two things.

Perform the Demo, Don't Assemble It
Instead of setting up states in code and filming them, the promo script walks through the product and reads the screen. It became a free integration test.

A Snap Distance Is Two Numbers
Joining star to star failed in four pairs of ten: the line grabbed a star it was only passing. The fix was two snap radii — wide at intent, narrow in transit.

The Door Nobody Counted
Practice mode skipped the record, so it looked harmless. It also opened today's questions and revealed the answers. Three practice runs bought a perfect score.

The Rule Was Guarding a Proxy
The privacy rule said non-members see nothing. It was meant to protect other people's data. Redrawn around ownership, it got safer and the product got a door.

Two Samples Disagreed, So We Changed Nothing
Production data said one signal scored below chance, and the fix was ready. A labelled golden set said the opposite. Neither could settle it, so nothing moved.

We Had Written the Rule Only for Marketing
The rule about player photos lived in the marketing brief. Meanwhile the product was serving those same photos to every visitor on a public domain.

A Silent Fallback Becomes a Silent Lie
A try/catch swallowed a value that did not exist. The placeholder it produced ended up in the photo we used to sell the exact feature it had failed to render.

What the Login Wall Was Quietly Holding Up
Removing the sign-up wall was obviously right. It was also the only real ceiling on paid AI spend, so the ceiling had to be rebuilt elsewhere first.

Ship When You Can Watch Someone Use It
Engineers I know design account deletion before anyone has used the thing. Moving the release bar from completeness to observability lets you ship much earlier.

Vibe Coding Moves the Work to Decisions
Agents were supposed to close the loop on their own. They stop at questions no repository can answer, and what decides the outcome is how often I choose well.

What I Gain by Building Clad in Public
Sharing Clad is not about performing progress. It exposes product decisions and analysis limits, turning specific reactions into better changes.

Why I Built Clad—and Where the Product Stops
Clad does not replace an expert or claim certainty from one photo. It gives curious users an understandable first analysis and a practical palette.

Designing the Experience Around Clad's Analysis Model
A model can predict a color season, but photo quality, result explanation, and recommendation logic determine whether someone can trust and use the result.

AI Transformation Starts with Operating Design
Putting AI into production takes more than automating work. Teams must redesign decision rights, quality controls, exception handling, and improvement loops.

Using Cloud Engineering Judgment in a Small Product
Production experience helps a builder anticipate failure, cost, and recovery—and defer complexity until controls are justified by current risk.
