7 min

Scope creep is mechanical

A project finished about 40% over and there was no change log at all, because in-house doesn't have one. That turned out to be the most useful thing I learned all year.

Culture Agency
6 min

Event delegation

I took the last jQuery out of a project this month, six years after writing about only using it for one selector. The one thing I carried across was a pattern I'd only ever known as a jQuery feature.

JavaScript
7 min

The tutorial trap

Somebody who had completed three courses, all the way through, all the exercises done, sat down in front of an empty folder and could not start, and was quietly convinced this meant they weren't cut out for it.

Careers Culture
7 min

The build I stopped thinking about

I promised in 2016 that I'd write this post again in 18 months when the noun had changed, and it's been five years, and the noun has changed, and the annoying thing is that this time the change is real.

Tooling
7 min

Everyone I know is leaving

Three going-away parties in eight weeks, all on video calls. Six recruiter messages in one week. I'd rather think about the mechanism than about how it feels.

Careers Agency
7 min

IntersectionObserver

For about eight years the standard way to find out whether something was on screen was to ask, repeatedly, on every scroll event, in a way that forced the browser to stop and recalculate layout each time.

JavaScript Performance
6 min

The replatform nobody calls a replatform

Moving a store from a server we controlled to one we don't was sold internally as an infrastructure decision, and it is not an infrastructure decision, it's a decision about which problems you're allowed to have.

Ecommerce Agency
7 min

The dependency I didn't choose

A build broke on a Tuesday. The cause was four levels down the tree, in a package maintained by one person, which I had not chosen and could not have named.

Security Tooling
5 min

aspect-ratio

There is now a property that says what shape a box should be. I have wanted to write that sentence since about 2012.

CSS
7 min

:not():not()

Chaining :not() and comma-ing it match the exact same elements, and only one of them charges you specificity for it. Plus the negation that silently matches everything, and the typo that deletes your whole rule.

CSS