Eric Portis
@ericportis.com
1.3K followers 270 following 300 posts
Web developer; used-to-be-a-printmaker; Let’s Share What We Know
Posts Media Videos Starter Packs
Reposted by Eric Portis
I dug into progressive image rendering and found a bunch of common assumptions aren't quite true.

➡️ JPEG & WebP progressive-renders worse in Safari
➡️ AVIF _does_ support progressive
➡️ But JPEG XL in Safari doesn't
➡️ JPEG XL decodes much slower than AVIF
⬇️ and more

jakearchibald.com/2025/present...
The present and potential future of progressive image rendering
Exploring progressive image rendering across JPEG, PNG, WebP, AVIF, and JPEG XL.
jakearchibald.com
As long as we're ceding little disconnected nubs (“pene-exclaves”!) to Canada: en.wikipedia.org/wiki/Point_R...
Point Roberts, Washington - Wikipedia
en.wikipedia.org
Reposted by Eric Portis
At last, today is the day. I am immensely proud to announce that JavaScript for Everyone is here.

Tell a friend, tell a Slack channel — write it on a slip of paper, fold it once, and slide it across your boss' desk without breaking eye contact. _It's time to get weird._

piccalil.li/javascript-f...
JavaScript for Everyone
A high quality, expansive written course that will elevate your JavaScript skills to a level you never thought was achievable.
piccalil.li
Reposted by Eric Portis
It's here. JavaScript for Everyone is now available to…everyone!

The amount of effort and experience packed into this course is unbelievable and we know you're going to love it.

Get yours for £189, down from £249, for 2 weeks and super-charge your career prospects

piccalilli.link/js4e-launch-...
JavaScript for Everyone
A high quality, expansive written course that will elevate your JavaScript skills to a level you never thought was achievable.
piccalilli.link
Reposted by Eric Portis
This is it. 86,791 words. 836 emdashes. 625 `const`, 141 `let`, 16 `var`. One (1) reference to the pause music from Battletoads for the NES.

Spread the word: JavaScript for Everyone launches tomorrow.
A Majora's-Mask-style "Dawn of The Final Day. 24 Hours Remain" title card, but using the JavaScript for Everyone Atari-style type and branding. The background is made up of two low-angle perspective views of rectangles on grids that meet at a sharp line, resembling a horizon.
Plus I like the idea of doing composition in HTML (<special-validation-form><magic-form><form>) although that also seems... like it's not likely to work unless components have been explicitly designed for it (double shadow DOMs?)
It's prettier than—e.g.
—and perhaps easier to reason about than keeping track of what's display:contents'd and what's not. Also ericwbailey.website/published/di...

But then, I think my `form {}` selectors miss ``. Which is also solvable but unfortunate.
display: contents considered harmful
display: contents has a long and storied history when it comes to accessibility..
ericwbailey.website
Have you written anything about the "why not just wrap it?" question? (I don't currently have a strong opinion but find the discussion, e.g. front-end.social/@zachleat@za..., fascinating)
Front-End Social
front-end.social
Reposted by Eric Portis
As an experiment, we (the Firefox team) wanted to try a new way to get feedback on which Interop proposals matter most.

So, here's a web app where you can rank the proposals you care about, giving us data we can use when reviewing which ones to champion.

interop-rank.jakearchibald.com
Interop Feature Ranking
Rank the web platform features you care most about
interop-rank.jakearchibald.com
Anyways, after this go-ahead double, I hugged my wife and high-fived a bunch of strangers; the TV broadcast apparently cut to a guy crying tears of relief and joy; baseball!
Reposted by Eric Portis
Folks who want to see JPEG-XL supported in more browsers, what is it about the format that attracts you to its use on the web?
In order:
1. Better encoding efficiency than AVIF = faster/cheaper builds.
2. Ability to losslessly cut weight from existing libraries of JPEGs.
3. I still believe progressive decodes = good UX.
Safari 26 on Sequoia: buggy and gets laggy as heck for me. Had to switch from Compact to Separate tabs because I often stopped being able to close tabs w/ mouse. Scrolling, interacting with the URL bar, & DevTools often getting multiple-second lags until I close all tabs and quit/re-open. Just me?
For one thing, captures the experience of being on the other side of an argument with a motivated implementer, uh, quite well.
Screenshot of a paragraph from the article. It reads, "I pushed back and proposed alternatives and compromised and proposed alternatives and pushed back and pushed back and pushed back and pushed back and finally gave up; and those were only my attempts to push back. Others also pushed back and pushed back and asked for a pause and pushed back and pushed back and recanted their earlier support and pushed back and asked for a pause and asked for a pause and pushed back." Every action described in the paragraph (e.g., "pushed back", "asked for a pause") is a hyperlink, linking to the discussion in question.
Reposted by Eric Portis
🔥 New blog post!

Covering, among other things:

- Why making simple things easy and complex things possible is not enough
- How to maximize your UI’s signal-to-noise ratio
- Why you can’t uncover friction through user feedback
- How to prioritize user needs

lea.verou.me/blog/2025/us...
In the economy of user effort, be a bargain, not a scam • Lea Verou
User effort is a currency. To create a product users love, design the tradeoffs of use case complexity to user effort with the same care you design your pricing scheme.
lea.verou.me
From left-pad to Left Behind
Cloudinary repeatedly ran into this, years ago. It as eventually straightened out, but I forget the details.
I believe I am in one of the farthest cities from OKC in the lower forty eight but ——— no tolls!
Google maps showing 1d 6h drive time between Oklahoma City, Oklahoma and Bellingham, Washington
Three and a half gallons of prunes. We did what we could 🫡
Six large jars and one medium jar of prunes on a kitchen table. There are some lovely dahlias in the background.
I have a lil post going about render blocking and how to skip it when you’re *disabling* cross-document view transitions (because prefers-reduced-motion). Does “do no harm” count as “real nice”?
But you see *I* also want to be able to share components that run code in any server side stack and deliver different markup depending on external API calls, or the specifics of the request, with the option to run that code at either build or delivery time, and also I want a pony
next you'll be telling me to call a singular "panini sandwich" a "panino"??? this is america bob