Image Formats: What To Use In 2026?
This post started as an addendum to my article about responsive images and the sizes="auto" attribute, but I realized it deserved its own post. When you use the <picture> element for...
This post started as an addendum to my article about responsive images and the sizes="auto" attribute, but I realized it deserved its own post. When you use the <picture> element for...
The Ideal Viewport Doesn't Exist made me think about the CSS I write and how much it has changed since I started. CSS has evolved from a simple styling language into a powerful system that adapts to...
Reactive programming is a declarative paradigm centered around data streams and the automatic propagation of change. Instead of writing imperative code that explicitly updates the user interface (UI)...
How we interact with the web has evolved significantly. The days of a single mouse pointer on a desktop monitor are long gone. Today, users expect seamless interactions across a wide range of devices:...
Responsive images have significantly improved web performance by saving users from downloading unnecessary bytes. However, implementing them effectively has long been a source of frustration for...
One of the things that concerns me about the current state of AI in instructional design is that it often feels like a rehash of every technology hype cycle we've seen before. We get excited about the...
This guide covers how to capture Core Web Vitals locally using pure ES Modules (without a bundler or import maps) and route that data to an analytics platform so you can monitor real user...
When we build interfaces or components, we must decide how to organize our code. Do we group files by type (e.g., all CSS in one folder, all JavaScript in another) or by feature (e.g., all files...
Responsive web design has always meant breakpoints. You pick a handful of viewport widths—375px, 768px, 1024px, 1280px—and write media queries to reshape your layout at each one. For most of the...
For 13 years, I relied on WordPress to run my blog. While it was a great tool, it was also a pain to maintain and update. Security issues, plugin conflicts, and performance problems were common. I...