Good 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.
Oldie but a goodie describing Chrome’s “Paint Holding” optimization.
So 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.
Our 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.
A bunch of examples of how text-wrap:balance
could be useful.
Could’ve used this just the other day, actually.
Jeremy discussing why performance isn’t just about business, but actually has impact across several broad categories:
Naturally, I agree.
Creativity 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
All of the above are part of the same issue - a task is an incomplete and inaccurate cadence to measure main-thread blocking.
Image transitions are a technique used to animate images as they appear on screen. Examples include scaling or fading the image into view for visual flare. However, often these transitions are implemented in a way that causes a large degradation in performance and thus user experience.
We worked with Case-Mate to fix this issue on their website, resulting in a 6 second improvement in Largest Contentful Paint (LCP)! In this case study, we’ll walk through the experience and the steps we went through to make this improvement.
Nice little review of JavaScript site generators by Zach. Couple standouts, to me:
Of the 7 generators tested, only Astro and Eleventy default to 0kb of client-side JavaScript. More 0kb baselines, please.
Three of the generators hide npm audit
reports by default. (Basically, the opposite of “secure by default”)