6 min

Heading levels are an outline

On a page I audited last month the only `h1` was the logo, the section headings were all `h4` because `h4` was the right size, and the actual page title was a `div` with a class on it.

HTML Accessibility
7 min

The offboarding document

I took over a project in June where the previous developer had left properly, with everything written down, and it was so unusual that I spent the first morning slightly suspicious of it.

Documentation Agency
6 min

details and summary

An FAQ page arrived on my desk with about 200 lines of JavaScript running an accordion, and the two elements that do it natively have been in every browser since 2020 and got the missing feature last winter.

HTML Accessibility
7 min

The checkout isn't yours

Shopify and Magento aren't really competing on features, they're competing on how much of your business logic you're allowed to have, and the answer depends less on your catalog than on whether you have engineers.

Ecommerce Shopify
6 min

dialog

I have built the same modal four times across four projects, each one slightly different, each one getting a different two of the six behaviors wrong, and there has been an element for it since before the second one.

HTML Accessibility
6 min

The input types nobody uses

A 60 KB JavaScript date picker, and a plain text input for the phone number. Exactly the wrong way round in both cases, and the most common configuration I see.

Forms HTML
6 min

Nesting is not Sass nesting

It looks close enough to what I've been writing since 2014 that I typed a BEM selector into it out of habit. The reason that doesn't work is the whole difference.

CSS SCSS
7 min

z-index: 9999

The number was never the problem, which is why no number ever fixes it. A post about stacking contexts and the 14-odd properties that quietly create one behind your back.

CSS
6 min

The popover attribute

I replaced a dropdown component last month and it went from about 180 lines of JavaScript to an attribute, and the six behaviors I'd hand-written were all better in the version I deleted them for.

HTML Accessibility
6 min

The form came back

In April 2020 I wrote that I'd like somebody to write down what we'd just proved, before everyone forgot and the form came back, and four years later the form has come back and nothing was written down.

Remote Work Careers
6 min

light-dark()

I rebuilt this site's theming at the weekend and deleted about half of the token file, and the thing that made it possible is one function and one property most people have never set.

CSS
8 min

Pricing is the hard part

I went looking for writing about how developers price their work and found essentially one post, in a field where thousands of people publish constantly and every one of them has to answer this question.

Agency Careers