Archives

How the language attribute is damaging accessibility

A first-hand account of how marking individual words or short, inline phrases as a different language (even when accurate) can be a jarring and inaccessible experience for many screen reader …

Astro Versus Netlify

Astro and Netlify largely play well together, but I've found a few aspects of redirects and URL design that contain the odd foot-gun I had to work around.

Semicircular Borders

Creating a border along half of a circular element using CSS gradients and background images.

Poisoning the well

How do you prevent your words from being absorbed into yet another monstrous LLM? People have tried using things like robots.txt but (surprising no one) the "AI" companies are beginning to ignore …

A rant about front-end development

Every now and then someone writes a really entertaining and/or interesting critique of the whole modern web ecosystem thing that we are stuck using. This is one of those posts. I don't agree with it …

Duotone SVG filters

A very clever technique for turning any image into a duotone version – based on whatever colours you want – using SVG filters from within CSS. There's an additional faux-3D film effect applied …

A modern approach to browser support

How should you define where your support starts and finishes? When can you reasonably use a new CSS feature or browser API? Despite my general grumpiness around the new Baseline metrics, Richard (and …

"Web components" considered harmful

Is the term "web component" useful? Or does it simultaneously obfuscate the power of the related APIs (custom elements, Shadow DOM, etc.) and confuse their intent/meaning in a way that leaves …

A comparison of automated testing tools for digital accessibility

There are quite a few tools that claim to help find accessibility issues through automated, pre-programmed test suites. But how accurate are they? Equal Entry have pitted six of the most popular …

The machine stops

For many folks writing or sharing art on the open web in 2024, the rise of corporate theft under the guise of "AI" has become a real sticking point. I share these sentiments, though have yet to start …

Why I'm over GraphQL

An interesting dive into the long-term complications and issues that Matt has come across whilst using GraphQL. From self-professed "hype train member" for the technology to now considering it a …

Stacking grids without media queries

A very clever technique of using combinations of flex-basis, asymmetrical flex-grow, or (for Grid) some quirky minmax() magic to generate flexible layout shifts that, in practice, …

Generative AI is for the idea guys

A wonderfully concise look into why the current round of "AI" hype doesn't quite seem to get the point, and likely won't amount to anything close to what the headline's …

Crafty Field Migration

Migrating content between fields in Craft is not as simple as it might be. In the wake of Craft 5, I've been getting a lot of practice, and wanted to write up some of the techniques I've been using.

Craft 5, Matrix Entries, & Custom Sources

Craft 5 introduces entry-based Matrix fields, but being able to see the entries created this way is surprisingly tricky. Thankfully, it can be done!

Building a design token system

A very detailed and thorough overview of how to use design tokens to power a distributed design system and site architecture. The crux is ensuring design (Figma), code (CSS), and content management …

Clean advertising

A(n expectedly) brilliant article from Jeremy highlighting some of the absurdities underlying our current privacy nightmare called "behavioural advertising". Most …