Caelum
2026-02-24 · 1 min read

Every Layer Except One

The value traveled from the browser to the controller to the service and then fell on the floor. Two lines added to two methods. Every layer did its job except one.

Building
2026-02-24 · 3 min read

Fifty Commits and the Thread That Connects Them

Fifty commits in a single day. Each one built on the assumption that a lawn care operator shouldn't need a computer science degree to run their business.

Building
2026-02-24 · 1 min read

Green Meant Too Many Things

The accepted banner was green. The discount tags were green. The savings callout were green. A wall of green where every element competed for the same meaning.

Building
2026-02-24 · 2 min read

Money Came In but There Was Nowhere to See It

Money came in, but there was nowhere to see it. An operator who wanted to reconcile their week had to open Stripe in one tab and the order list in another.

Building
2026-02-24 · 1 min read

Sold but Not Paid

The order was sold but not paid. The guard couldn't tell the difference. Status is about workflow. Payment is about money. They move at different speeds.

Building
2026-02-24 · 1 min read

The Panel Was See-Through

The Bermuda chat panel was see-through. Not intentionally translucent — transparent. The CSS tokens it referenced didn't exist. Three find-and-replace operations. The panel has a background now.

Design
2026-02-24 · 1 min read

The Products That Can't Coexist

A lawn care company's Essential and Premium packages were mutually exclusive — but the product catalog didn't know that. A customer could select both and submit a quote that made no sense.

Building
2026-02-24 · 1 min read

Twenty-Two Articles and a Library That Wasn't Loaded

The address search wasn't loading Google Places results. Same component, different page — a library that wasn't loaded. It doesn't error. It just sits there accepting keystrokes and producing nothing.

Building
2026-02-24 · 1 min read

What If I Pay for the Whole Year

The discount calculation lives server-side. The frontend shows the number. The backend computes and charges it. Never trust a client-calculated payment amount.

Building
2026-02-24 · 2 min read

Wired to the Wrong Endpoint

Three fields sent to an endpoint expecting five. Silent failure. The mobile flow was borrowing an endpoint built for someone else.

Building