9 min

The third proposal

A proposal landed in August to rebuild a client platform from scratch, and when I went digging in the shared drive I found two older ones saying almost exactly the same thing.

Culture Agency
2 min

AbortController

The thing everybody knows as the way to cancel a fetch is also the tidiest way to remove a pile of event listeners, and the second use has changed more of my code than the first.

JavaScript Small Print
8 min

I asked them to hard-refresh

Two customers wrote in to say the sale wasn't on the store's homepage, I opened the homepage and the sale was right there, and it took me most of an afternoon to figure out that the difference between us was me.

Debugging Agency
8 min

Thumbnails and heroes

A designer sent over a few seconds of the client's own phone app, where a tapped product photo grows into the hero image on the next screen, with a note asking whether the website could do that.

CSS JavaScript
2 min

:is() and :where()

Two selectors that look interchangeable in every example anybody writes, and differ on the one thing that actually causes problems later.

CSS Small Print
8 min

Subgrid

A client circled three buttons in a screenshot and asked why one of them sat lower than the other two, and the answer was a hole in Grid I complained about six years ago and then stopped noticing.

CSS Cross-Browser Compatibility
7 min

The note I wrote in 2021

I priced out everything my job gave me that wasn't salary, and two years later every number on that list belongs to a market that ended.

Careers Culture
10 min

They moved the card themselves

A client dragged a product card out of the main column into their sidebar and the button ended up hanging off the edge of it, because the class that would have laid it out narrow gets applied by a developer and there wasn't one in the room.

CSS Responsive
9 min

Outlook renders with Word

A client asked whether the newsletter could look like their new site, which is a completely fair question, and answering it honestly meant explaining that the biggest email client in the working world lays out HTML with a word processor.

HTML Cross-Browser Compatibility
8 min

Flaky tests usually aren't

A checkout test failed about 1 run in 15, everybody called it flaky and re-ran the job for months, and the whole time it was reporting a real race that customers were hitting too.

Testing Debugging
9 min

We billed them for the cleanup

A site I built in 2018 at a previous agency spent about two months redirecting phones to a sweepstakes page, and the invoice we sent for cleaning it up was larger than a year of the maintenance nobody had ever sold them.

Agency Security