Sign in

Eric Portis

@ericportis.com
1.4K followers 311 following 498 posts

Web developer; used-to-be-a-printmaker; Let’s Share What We Know

PostsRepliesMedia
Eric Portis @ericportis.com · 22/09/2026
`lowsrc`!
Leo DiCaprio as Rick Dalton, pointing at the TV while holding a beer and a cigarette
160
Eric Portis @ericportis.com · 14/09/2026
I think you're ok. "Honk honk" conjures Krusty flying by with a Marx quote. Which is a distinct rhetorical technique.
130
Eric Portis @ericportis.com · 03/08/2026
After some experimentation, I think this is how you do this in Vivaldi
Close Tab Activation section of Vivaldi's "Tabs" Settings. "Close Tab Activation" is set to "Activate Above in Tab Order". New Tab Position section of Vivaldi's "Tabs" Settings. "New Tab Position" is set to "After Active Tab".
040
Eric Portis @ericportis.com · 15/06/2026
Because I work for a fancy image CDN, I definitely haven't given enough thought to these cases. Doing a quick search of CloudFront's documentation is... worrying. Could I ask you to drop this general concern in an issue, for future investigation? github.com/WICG/respons...
A screenshot from Cloudfront's documentation, which reads, "If you configure your origin to include any other values in the Vary header, CloudFront removes the values before returning the response to the viewer"
100
Eric Portis @ericportis.com · 03/06/2026
The maps are neat, and tell some interesting stories about audience? Insularity? Inequality? History? Here's Hacker News' TTFB vs the Times of India's.
A world map labelled "TTFB by country". The Americas, Europe, Japan, and Australia/New Zealand are all green. The rest of Asia is Orange, and Africa is mostly gray (not enough data), with orange spots.A world map. India, south-east Asia, Australia, Europe, South Africa, and North America are all green. Everything else is solidly orange, with some red spots in the Middle East, central Africa, and Boliva. Almost nothing is gray (for not enough data).
031
Eric Portis @ericportis.com · 01/06/2026
Blue
A older pocket pitbull in a sweater, at the vet.
230
Eric Portis @ericportis.com · 24/04/2026
piccalil.li/blog/the-end...
The word "AMBIVALENCE" set in all caps. Screencap from a Neon Genesis Evangelion title card.
010
Eric Portis @ericportis.com · 20/04/2026
. @scottjehl.com ’s video lazyloading work getting a headline callout in the BlinkOn 21 keynote, heck yeah
Conference stage, Scott’s GitHub PR on the big screen
1110
Eric Portis @ericportis.com · 09/04/2026
Will this help me in my quest to make a six-way triforce switch for image comparison? Maybe...
A sketch of two switches. The one on the right is normal and has two stops: "Flicker" and "Slider". The one on the right is a triforce with an inverted triangle inside of a larger triangle. The larger triangle's points are labelled, "Original" at the top, and "A"and "B" at the bottom. The switch is currently set to the halfway point betwen "Original" and "B". One is to understand that with these hypothetical settings, the image comparison tool would be flickering between an original image, and some compressed version of it, "B"
341
Eric Portis @ericportis.com · 08/04/2026
020
Eric Portis @ericportis.com · 08/04/2026
Just gonna put this out there: is anyone, especially in the PNW, perhaps looking to adopt a high-energy dog?
A young white and brown young crawling towards the camera, on a couch. He is very cute.
112
Eric Portis @ericportis.com · 07/03/2026
I'm trying to think of anything as old and fundamental to digital imaging as the 1931 color matching functions. Maybe the idea of a "pixel"?
The concept of a "picture element" dates to the earliest days of television, for example as "Bildpunkt" (the German word for pixel, literally 'picture point') in the 1888 German patent of Paul Nipkow. According to various etymologies, the earliest publication of the term picture element itself was in Wireless World magazine in 1927, though it had been used earlier in various U.S. patents filed as early as 1911.
000
Eric Portis @ericportis.com · 07/03/2026
'Twas a time when there was nothing about the lower-levels of the web stack that Google couldn't re-think and push to the whole industry. This is the Apple-iest possible version of that. Hope it's more QUIC than AMP. Or maybe it's just tiny tweaks? I'm so curious! www.apple.com/studio-displ...
Color matching functions are mathematical representations of the sensitivity of the human eye to visible light, characterizing how humans perceive color. Apple has developed Apple CMF 2026 to address the limitations of the CIE 1931 CMF, and Studio Display XDR is the first Apple display to support it. Apple CMF 2026 represents a fundamental improvement in how displays are measured and calibrated, addressing systematic appearance mismatches that have persisted throughout the industry. Apple is engaged in standardization efforts through the International Commission on Illumination (CIE) to develop and define an industry-wide standard, improving visual consistency regardless of which manufacturer's display a customer is viewing.
210
Eric Portis @ericportis.com · 04/03/2026
Implementing some old math... you know the math’s good when the paper describing it opens like the Declaration of Independence *and* they didn't know how to spell.
Scan from an old typeset paper. It reads,

Explanation ov a New Formula for Interpolation. By T. B. Sprague, M.A., Manager ov the Scottish Equitable Life Assurance Society.

When a series ov quantitys proceed by a regular law, ther is no difficulty in interpolating between each ajacent two ov them any number ov terms with any desired degree ov accuracy.
Chart showing the results of my implementation. We see some black points with random-ish y values but evenly spaced along the x axis, joined by different colors of line. The lines all connect their two points smoothly before curving up and down to positive/negative infinity.
000
Eric Portis @ericportis.com · 24/02/2026
bsky.app won't let me post a 65,500-pixel-tall PNG, apparently, because bsky.app is a cop.
Screenshot of the bsky.app posting interface. I am trying to post a reply that says "surely you have considered the Very Tall Image". But there's an error: "Failed to execute createImageData on CanvasRenderingContext2D: the source width is zero or not a number.
110
Eric Portis @ericportis.com · 13/02/2026
Forty six crumpled dollars sitting on a table
230
Eric Portis @ericportis.com · 12/02/2026
@scottjehl.com
TRADE OFFER meme. A smarmy looking man in a cheap suit in terrible lighting tents his fingers, looking smarmy. "i receive: WebKit sizes=auto implementation; you receive: [checks pockets] $46"
1110
Eric Portis @ericportis.com · 06/02/2026
CoWork plugins, although they are not actually named
Screenshot from the article. Highlighted text reads, “ the catalyst for this week’s sell-off was the release Tuesday by Anthropic, the San Francisco-based artificial intelligence firm, of free plug-in software tools that allow companies to automate functions like customer support and legal services”Screenshot of Google search results for Anthropocene CoWork plugins
110
Eric Portis @ericportis.com · 28/01/2026
He ain’t lyin’ about that table.
A screenshot of the browser dev console, where I have queried for the number of <td> elements on the page. The result is: 1,236.
030
Eric Portis @ericportis.com · 23/01/2026
Giving Canary's (Rust!) JXL decoder a whirl with @jakearchibald.com’s image decoder benchmark. On my machine it's "only" twice as slow as Safari, which is using the highly-optimized C++ library.
Benchmark results in Chrome (on the left) and Safari (on the right). Chrome's median decode time is 94.25ms, and Safari's is 48ms.
150
Eric Portis @ericportis.com · 26/12/2025
I have become emotionally attached to the three remaining cookies.
Three crudely-decorated "gingerbread man"-shaped cookies. The first resembles Spiderman, the second, Mario (kind of) and the last one has a generic smiley face, three star buttons, and a red outline. They are placed on a plate which has lots of stray dabs and splotches of frosting.
000
Eric Portis @ericportis.com · 17/12/2025
tfw you've been awarded the National Basketball Association's inaugural Web Standards prize
A low-res photo of Bruce's face crudely photoshopped onto the famous photo of Michael Jordan crying on the NBA championship trophy
010
Eric Portis @ericportis.com · 17/12/2025
Ah, I should have specified, this is the alt text used in the article that the photo was published in, on VanityFair.com! @erikahall.bsky.social’s alt here on Bluesky is great.
A screenshot of the website where the photo was taken open in a browser. The devtools are open, and the alt text on the <img> element in the "Elements" tab is circled.
100
Eric Portis @ericportis.com · 16/12/2025
(everybody* loves auto-sizes though) — * 98.4%
A screenshot of the <img sizes=auto> results, with the negative results hovered, revealing a tooltip reading, "76 respondents (1.6%) had a Negative sentiment."
100
Eric Portis @ericportis.com · 16/12/2025
Oh just validating my priors and thinking about essential vs inessential complexity whilst reading through the State of HTML `srcset` + `sizes` survey comments
Three responses are screenshotted. They say, "Awfully confusing syntax", "I never get these numbers right first time. Really hard to pick for truly responsive pages e.g. where the image size flexes with the page width." and "i still need to read the docs everytime I need to use this feature, the API is not intuitive at all"
120
Eric Portis @ericportis.com · 09/12/2025
This is horrific for all of the obvious structurally-racist bias perpetuation reasons and also: way too detailed/specific? Haven't these people read Understanding Comics??
A panel from Scott McCloud's "Understanding Comics". A series of faces lines the top, going from a photograph of a man's face (captioned "one"), through progressively cartoony illustrations of that face (captioned—"a few"—"thousands"—and "millions"), to a circle face with two dot eyes and a line for a mouth (captioned "nearly all"). Narrator Scott says, "Another is the Universality of cartoon imagery. The more cartoony a face is, for instance, the more people it could be said to describe."
041
Eric Portis @ericportis.com · 09/12/2025
well that's gonna have to be a custom www.oreo.com/oreoid ... with uhhhh the dancing baby on it? maybe?
3D dancing baby, from the 90s meme. The baby is dancing.
100
Eric Portis @ericportis.com · 05/11/2025
MFW the img is :borken
Still of The Sweedish Chef (the muppet), behind a table with various cooking implements, mouth agape, steam coming out of his ears
030
Eric Portis @ericportis.com · 02/10/2025
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.
040
Eric Portis @ericportis.com · 17/09/2025
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
110
Eric Portis @ericportis.com · 16/09/2025
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.
110
Eric Portis @ericportis.com · 05/09/2025
oh that's a differ—hey wait a minute
Giant printed tarp above a vendor's stall with giant photos of various fried foodsZooming in on "Zak's Zucchini" which is very friedZooming all the way in on the words "ZAKS ZUCCHINI"
110
Eric Portis @ericportis.com · 05/09/2025
look i don't know what y'all are doing over there but we have some truly fantastic children's food art and you are: not invited. sometimes a <del>cigar</del><ins>zucchini</ins> is just a <del>cigar</del><ins>penguin</ins>.
A green cabbage turned into a head (kinda like a snowman's head), with grapes for mouth, potatoes for ears, berries for eyes, and something orange as a noseA bell pepper cut in half and filled with cherry tomatoes with faces drawn on them in sharpie. They all sit on a paper plate that's been colored blue with a crayon. In kid's writing the plate also says "BOAT BOAT"A real potato turned into Mr Potato Head. Googly plastic eyes, carrot nose, apple-slice-mouth, cucumber ears, and amazing broccoli hair.A zucchini artfully carved into a penguin! White parts of the penguin are skinned. Slices peeled up for wings. The stem of the zuke is the penguin's nose.
110
Eric Portis @ericportis.com · 05/09/2025
We're hiding the last of our giants behind a plant. (I think yours might be bigger!)
A 30" zucchini propped up in a corner on a shelf, behind a tall houseplant.
120
Eric Portis @ericportis.com · 17/08/2025
Ah that's better
Screenshot of the updated blog post, showing off syntax highlighting
000
Eric Portis @ericportis.com · 12/08/2025
view from mt constitution... holding my phone up to some binoculars.... we're pretty sure we can confirm. like mostly sure. 99.9%.
View through some binoculars. There's a big black circle with a sunset landscape in it. Some hazy islands and water in the foreground, the sky behind them goes from red to orange to yellow to blue in the back. And what's that... just barely... is it a mountain? in the haze? Maybe!
010
Eric Portis @ericportis.com · 08/08/2025
what a clear and unambiguous reference point
Cropped image of the international date line snaking through the pacific. It's kind of wiggly but there is a large sideways T shape that comes out of the "western" half, meaning there are large sections of the "eastern" half that are both east of the main body of the western half, but also west of the top bar of the T.
110
Eric Portis @ericportis.com · 07/08/2025
I said it, I meant it, get hyped, pre-orders open next week (August 12). piccalil.li/javascript-f...
Screenshot of a quote from my dumb face. "A lot of folks in tech spend their careers build enormous (and enormously intimidating) walls of complexity. Mat's made his career out of smashing those walls: breaking 'em down with clarity and concision and making sure everything he puts into the world is inclusive, approachable, and, frankly – fun."
000
Eric Portis @ericportis.com · 28/07/2025
Wife: “hey the antiques store down the street posted a cool-looking print the other day, we should go check it out”; we did; bought it; turns out it’s from americanhistory.si.edu/explore/stor...; I'm geeking out; she's got the *best* eye
A print on paper. A 4x4 grid of square three-color botanical designs takes up the top half. The bottom half is a calligraph-ied recipe for YOGHOURT CREPES. The recipe is kinda hard to read; I'll note it involves cognac.
020
Eric Portis @ericportis.com · 09/07/2025
Update: we made it home (although little buddy did completely retract into their shell, which— understandable.)
A snail on the side of a car, completely retracted into their shell
000
Eric Portis @ericportis.com · 09/07/2025
Hey there little buddy… let’s ride 😎
A snail on the side of a car in a parking lot.
131
Eric Portis @ericportis.com · 02/07/2025
so slight. so tiny! teeny, really.
A screenshot from the piece. "We asked for the slightest of changes, to just cover sports, sports related issues, as well as sports adjacent stories. That was preceived as beyond the pale by the legacy team and as such they left en masse."
130
Eric Portis @ericportis.com · 01/07/2025
brb forming a new political party
An illustration of a flag. Upon the flag is a pint glass of fizzy water, with a superscript numeral 2 next to it. Beneath it is the contents of the footnote, "2: COME AND TAKE THEM"
010
Eric Portis @ericportis.com · 23/06/2025
A stock illustration, heavily watermarked "Adobe iStock". In stately, comosed serifs and soft, heartfelt script, it wishes, "Our deepest condolences to you and your family" in light shining type on a dark navy blue background.A stock photograph of several people, weirdly all wearing business casual in a work setting? It is heavily watermarked "alamy". One man (sad) sits centrally, facing the camera, head down, hands clasped, making eye contact with no one. Four colleagues lean in attentively - two physically touching the sad man, holding his shoulder and... bicep. All seem concerned. One is offering what one presumes are condolences. They sit in front of a blank whiteboard.
030
Eric Portis @ericportis.com · 03/06/2025
I know it's the insufferable minimalist millennial in me but sometimes I wonder how much of chatgpt’s appeal is just: lack of clutter.
ChatGPT's answer to the question "What are the best beaches in Sicily". We can see the number one beach, "San Vitro Lo Campo", which is apparently "Famous for its soft white sand and turquoise waters",  but mostly what we see is whitespace, stark/minimal sans-serif type on white, no ads, nothing but words.A Conde Nast article about the best beaches in Sicily, scrolled down a bit. It's all ads (and UI) ads bigger than the screen, ads cropped awkwardly, ads that contain other cropped ads?Conde Nast article about beaches again. Now there's a popup call to action modal asking me to subscribe to their newsletter to receive two free gifts, with a bigass picture of a tote.
191
Eric Portis @ericportis.com · 30/05/2025
Works as expected! codepen.io/eeeps/projec... 000708258.codepen.website
010
Eric Portis @ericportis.com · 30/05/2025
Ah! For <link>... of course! For <script>, yeah this does work, and is better than a MutationObserver. I'm tempted to feature request <script media> but that seems like a lot of potential complexity (conditions change over time) to make an ugly simple case (only care once on nav) prettier.
A script element that creates and attaches another script element, viewed in Safari's dev tools. We can see that it worked, the second script element is below it.
100
Eric Portis @ericportis.com · 30/05/2025
Wait like this? (a meme abhors explanation, but I *need* you to know Ned Hanlon wasn't a great hitter + invented "inside baseball" aka "small ball," relying on bunts/stolen bases to ultimately reach the hall of fame)
An old-timey, worn, sepia baseball card. A mustached ballsman stands in an awkwardly rigid pose to catch an incoming ball, apparently with his bare hands. Nothing about the pose suggests action. Underneath his name/position/team are inscribed "Hanlon, C.F., Detroits". Above him is a sponsored inscription from "Old Judge Cigarettes". The image has been annotated with three handwritten labels; the ball is "A11y requirements"; the player trying to catch the ball is "You"; around the player's bare hands is a dashed outline of a glove, suggesting that it is missing or invisible/insubstantial, and the annotation "Overlay".
020
Eric Portis @ericportis.com · 23/05/2025
This paragraph hurt me physically blog.keith.is/blog/the-end...
But let’s be honest: we proved that you can’t build a sustainable platform around helping people create rather than consume—at least not in today’s internet economy. The math just doesn’t work when hosting costs real money and creative tools don’t generate the kind of engagement that sells ads or subscriptions.
011
Eric Portis @ericportis.com · 23/05/2025
This is with emulated 4G on localhost but... I'll take that as a clear win. Seems obvious in retrospect, the best kind of solution... thanks!
A screenshot of the Chrome Dev Tools. The JS is loaded in a disorderly fashion; many JS requests are starting very late, only after previous ones have finished, and the last .js request doesn't  finish until 1.2 seconds.A screenshot of the Chrome Dev Tools. The JS requests all enter the queue immediately and finish in an orderly cascade. The last one finishes at around 0.9 seconds.
020