10 TypeScript Patterns That Make Code Explain Itself
Comments rot. Types don’t — the compiler checks them on every build. Here’s a claim worth testing: the best comment you’ll ever write is the…
Latest ·

Most CMS image fields do exactly one job. They take a file, then hand you a single box to type an alt attribute into. That’s fine for one…
Comments rot. Types don’t — the compiler checks them on every build. Here’s a claim worth testing: the best comment you’ll ever write is the…
How to write alt text for image galleries — and when to reach for captions or long descriptions instead. A photography portfolio has forty…
“What goes into the agent before it runs decides what comes out.” — a lesson I keep relearning. A confession: give me a coding agent and a…
Every frontend team has the ticket. “Evaluate moving off ts-jest.” It rots in the backlog for a year. Nobody picks it up, because everyone…
A confession: early in my career, my images shipped with no text at all. If an image mattered, I gave it a visible caption and moved on (I…
The European Accessibility Act turns one tomorrow. It took force on 28 June 2025. For many teams it was the first hard deadline they had…
“Standards evolve, user needs are wildly diverse, and manual audits can feel like searching for a semicolon in a haystack.” Let’s be honest…
In this post we explore the marvelous world of Discriminated Unions in TypeScript. Discriminated Unions are a way to combine types that have…
When I hear media query I think about a bottle filled with liquids that don’t mix (e.g. oil and water). The content(water/oil) will assume…
Another common accessibility tool is the skip button. It comes in different forms. It would sometimes be smartly included in the design or hidden until needed.
This is part 2 of CSS snippets I used 90% of the time post. As promised this is second part of CSS styles I commonly used with my projects. If you are going to think of a rule I’d say this is my 80/20 rule for CSS.