Writing
Posts, links, and the occasional book review.
-
-
2ality blog: temporarily offline
∞ PermalinkSeeing a prominent voice in the web community for years go dark because of AI is depressing.
Two things happened recently:
The income from my book sales went from being enough for me to live off (2024) to zero (2026).
The traffic to my blog and my books (which were free to read online) increased beyond what I can currently afford. Virtually all of it comes from AI crawlers, so there is no ad income.
Finding a sustainable way of compensating authors for their work in this world where bots are scraping it all so aggressively for their own commercial gain is one of the most important problems to solve on the web.
-
Web Performance Calendar » Goodhart’s law in action: 3 WebPerf examples
∞ PermalinkReal world examples of how over-optimizing for metrics can be at odds with performance.
Good cautionary reminder of Goodhart's law. This is why it's so important to choose your primary metrics with care, and to make sure everyone understands why.
-
A Layered Approach to Speculation Rules – Harry Roberts – Web Performance Consultant
∞ PermalinkI love when standards, like Speculation Rules, are built in a way where there's a natural upgrade path. It's great for helping companies to gradually roll out support, but it also allows for some very smart optimizations, like what Harry does here pairing prefetch and prerender rules together.
-
Why I’m skeptical of rewriting JavaScript tools in “faster” languages | Read the Tea Leaves
∞ PermalinkGood food for thought here from Nolan Lawson about rewriting JS tools in "faster" languages.
The point that a rewrite is often faster simply because it's a rewrite is a very valid one—over time we add more features/functionality to our code and it starts to have a cost not just on perf, but on maintainability as well. A rewrite lets us start with those learnings already in mind.
But my favorite point is around the accessibility of JavaScript tools built in JavaScript:
For years, we’ve had both library authors and library consumers in the JavaScript ecosystem largely using JavaScript. I think we take for granted what this enables.
I wrote about this a few years back, but having JavaScript available on the front-end, back-end, on the edge, and in build tools is a powerful way to let developers extend their reach into different part of the tech stack and any decision to move away from that needs to be VERY carefully considered.
-
Paint Holding - reducing the flash of white on same-origin navigations
∞ PermalinkOldie but a goodie describing Chrome's "Paint Holding" optimization.
-
What to Expect When You're Optimizing
-
Introducing perfwork
-
The Single Visionary Fairytale
-
Performance Is Not a Checklist
-
Tracking Blocked Scripts - Chris Coyier
∞ PermalinkSo at first, it looked like about 10% of the BuySellAds scripts were being blocked. But after replacing how we were tracking the blocks with an internal service (just a little Redis counter), it was showing more like 28% of scripts being blocked.
-
Improving Performance with HTTP Streaming | by Victor | The Airbnb Tech Blog | May, 2023 | Medium
∞ PermalinkOur experiments showed that Early Flush produced a flat reduction in First Contentful Paint (FCP) of around 100ms on every page tested, including the Airbnb homepage.
-
CSS Text balancing with text-wrap:balance - Ahmad Shadeed
∞ PermalinkA bunch of examples of how
text-wrap:balancecould be useful.Could've used this just the other day, actually.
-
Adactio: Journal—The intersectionality of web performance
∞ PermalinkJeremy discussing why performance isn't just about business, but actually has impact across several broad categories:
- Business
- Sustainability
- Inclusivity
Naturally, I agree.
-
The Growing "Contentful" Gap
-
The Performance Golden Rule Revisited
-
Returning to Performance Consulting
-
Kill Your Darlings: The Ugly Other Half of Creativity
∞ PermalinkCreativity happens in two stages: first, unbounded imagination; then — more importantly — ruthless editing.
Loads of great advice in this post from Jason on the part of "ideas" that tends to get less attention: editing.
One of the ones that jumped out to me was his note about the importance of underutilizing people's time:
On top of that, a healthy team is intentionally underutilized. This creates free time for chasing shiny things with low risk. A roadmap with this kind of slack built-in supports exploratory tinkering by defining a clear plan with clear boundaries: I know I need to complete these 5 tasks this week to keep us on track; I finish them by lunchtime Thursday; I now have a day and a half to do whatever I find exciting without hurting the overall strategic goals or slowing things down.
What a healthy (and wise!) counter from the way most organizations tend to operate.a
-
longtasks/loaf-explainer.md at main · w3c/longtasks · GitHub
∞ PermalinkAll of the above are part of the same issue - a task is an incomplete and inaccurate cadence to measure main-thread blocking.
-
Health Benefits of Browser Diversity