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 — LumX
Product5 min read

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 — LumX
Engineering5 min read

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 — LumX
Engineering5 min read

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 — LumX
Product5 min read

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 — LumX
Product5 min read

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 — LumX
Product5 min read

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 — LumX
Product5 min read

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 — LumX
Product5 min read

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 — LumX
Product5 min read

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 — LumX
Engineering5 min read

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 — LumX
Product5 min read

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 — LumX
Engineering5 min read

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 — LumX
Product5 min read

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 — LumX
Engineering5 min read

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 — LumX
Product4 min read

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 — LumX
Engineering5 min read

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 — LumX
Engineering5 min read

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 — LumX
Product5 min read

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 — LumX
Build Notes5 min read

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.

Building Clad in Public — LumX
Build Notes4 min read

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 — LumX
Product4 min read

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 an AI Personal Color Service — LumX
Product5 min read

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.

The Operating Model for AI Transformation — LumX
AI Transformation5 min read

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.

From Cloud Engineering to Independent Products — LumX
Engineering4 min read

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.