
A selector that flattened the activity grid
The activity grid lost its colours because a two-part selector outranked the level classes. A short tour of CSS specificity.
Page 7 of 7

The activity grid lost its colours because a two-part selector outranked the level classes. A short tour of CSS specificity.

How one padding declaration silently removed the side margin on phones, and why padding-block is the habit now.

Muted text that passes the eye test and fails WCAG AA, and why contrast has to be measured against the real background, cards included.

The complete technology list behind PaceStreak — domain, sites, monitoring, backend, tooling — with the reasoning, the rejected alternatives, and the constraints each choice created for the next one.

Setting up the PaceStreak backend on uv, Ruff and ty, then wrapping it in Docker. Every real bug came from running it, not from reading it.

Domains, monitoring, a status page and a landing site — and the four things that silently broke while doing it.
PaceStreak is a habit and streak tracker for training and everything else worth doing regularly.