The layout bug that vanished when I changed the copy
→
A two-column product layout broke only at 1120px wide. The fix was not new CSS, but rewriting one overstuffed feature sentence so the browser could finally wrap it.
Content breakpoints for a single hero component
→
A category hero only started working once its breakpoints came from the heading, cards, and nav, not from tablet and phone widths.
Why I Prototype Motion Before Polishing Layout
→
Static layouts can look perfect and still refuse to move. By prototyping motion early, spacing, hierarchy and components evolve around how the interface actually behaves.
The Hour I Lost to a Plausible AI Debugging Answer
→
A confident AI diagnosis of a React Native hydration issue sent me refactoring the wrong layer for 45 minutes. The real bug was a string "null" in the API.
The frontend code I deliberately keep boring
→
One feature taught me that a neat React state machine was less valuable than three plain useState hooks, and it changed how I choose boring frontend code.
When smooth animations make a fast site feel slow
→
A site can be technically fast and still feel slow if your animations sit between intent and feedback. These are the ones I shortened, simplified, or removed after watching real users.
Where Cursor Stops and My Judgment Begins
→
Cursor is very good at filling in the boring middle. Recent client work showed exactly where that stops, and where experience still has to say no.
The First Ten Minutes of Testing a Design on Mobile
→
I spend the first ten minutes of mobile testing without DevTools: thumb reach, dead hover states, 100vh traps, sunlight, forms, scrolling, and quiet frustration.
What a 90ms Font Swap Taught Me About Performance Budgets
→
A tiny 90ms font swap burned a full day of my attention and completely rewired how I think about performance budgets and where to spend effort.
Lazy Loading Images Almost Tanked My Core Web Vitals
→
I broke my own Core Web Vitals by being clever with lazy loading. Here is the ugly LCP data, what actually fixed it, and the image loading rules I use now.
The Accessibility Audit That Slapped Me Awake
→
An external accessibility audit tore apart a client site I was proud of. Here is what they caught that I completely missed, and how it changed my workflow.
Why I Still Test In Safari First (And The Bugs It Catches Early)
→
I test new frontend work in Safari first. It hurts early, but it saves me from bugs Chrome happily hides until production.