A blog about web development, HTML, CSS, JavaScript, and web accessibility.

Lowering the specificity of multiple rules at once

You probably already knew that you can use :where() to lower the specificity of a single selector, but did you know that you can achieve a similar effect on multiple rules at once?

My favourite front-end and web development conferences

As someone who enjoys attending conferences, I thought it might be helpful to share a list of my favourite front-end and web development conferences.

Better defaults for popovers

I recently added a rule to my reset style sheet UA+ that I wanted to share with you.

Workshop: Deep Dive on Accessibility Testing

Once again, I’ve teamed up with my friends at Smashing Magazine 😻 to share with you everything I know about web accessibility testing! In this smashing workshop we’ll talk about automatic and manual testing, screen reader basics, Single Page Applications, Dev Tools, and more.

I’m speaking at Web Day Out 2026

The first Web Day Out conference is taking place next year on March 12, my birthday, in Brighton, and I'm one of eight speakers.

Dealbreaker bugs in native popovers

One of my clients decided to write a custom popover component that uses native popovers under the hood. We built the component and were happy with it. They were about to ship it until we realised there was an accessibility bug so severe that it was a dealbreaker for us.

What's an interactive element?

Two years ago, I wrote an article about the dialog element. I tested where focus goes when you open a modal dialog via the showModal() method. I tried different combinations of elements and attributes to see what happens because back in 2023, the behaviour was very inconsistent.

Never lose a z-index battle again

Recently, I learned about numeric keywords. Since I was terrible in school, I didn't know what to do with them, but when I saw infinity, I immediately thought of a great use case.

Breaking up with my X

About 2.5 years ago, I was banned from Twitter for no apparent reason. I wrote about it on this blog and described the events and personal consequences.

Close requests, close watchers, and the dialog element

The latest version of Chrome (134) comes with a new light-dismiss behavior for the dialog element, which enables a native click-outside feature. That's fantastic! Reading the announcement, I wondered how many ways there are to close a dialog element.