A large contingent of webdevs seem to think that fast means “best-case fast.”
“Our web sites are fast on expensive hardware and from reliable fiber networks.”
Worst-case fast is a much more meaningful, impressive, and inclusive claim to make! Fast on low-end hardware. Fast on slow networks.
Fast on the World Wide Web—not just from a WeWork in Silicon Valley.
47 replies
@zachleat @slightlyoff Wrote about this here: https://infrequently.org/2024/01/performance-inequality-gap-2024/ and did a talk on it, video here: https://cfe.dev/sessions/jamdev2024-market-for-lemons/
@bobmonsour @zachleat @slightlyoff "Since at least 2015, building JavaScript-first websites has been a predictably terrible idea"
I might need this printed on a T-shirt.
@mahryekuh @bobmonsour @zachleat @phae made shirts as a fundraiser for @owa:
@slightlyoff @mahryekuh @bobmonsour @zachleat @phae @owa Meh, JS is fine, just keep it to reasonable size and prefer CSS alternatives
@eloy @slightlyoff @bobmonsour @zachleat @phae @owa I'm with Eloy. The right tool for the job, instead of JS for everything. 🔨
@mahryekuh @eloy @bobmonsour @zachleat @phae @owa That's literally what the anti-js-js-club stands for
@slightlyoff @mahryekuh @eloy @bobmonsour @phae @owa two javascripts is a double negative and now I’m confused
@zachleat @slightlyoff @mahryekuh @eloy @bobmonsour @phae @owa JS is like violence. If it isn't working you need more of it. Wait.
@brianleroux @zachleat @slightlyoff @eloy @bobmonsour @phae @owa Instructions unclear, added onclick to a div.
@slightlyoff @mahryekuh @bobmonsour @zachleat @phae @owa Oh, right. Thanks for cleaning that up :P
@eloy @slightlyoff @mahryekuh @bobmonsour @zachleat @phae @owa Exactly. Use JS only for when CSS isn't able to do what you are trying to do.
Corollary: If CSS isn't doing something you're trying to do, you should think long and hard about why you're doing it, and if it's really a good idea...
@ubergeek @eloy @slightlyoff @bobmonsour @zachleat @phae @owa Progressive enhancement FTW.
@mahryekuh @bobmonsour @zachleat @slightlyoff Not least of which it has been terrible for privacy.
@zachleat surely it depends. An app used internally at a large corporation should not have to worry about worse-case fast. Heavy duty apps can do heavy duty lifting on networks created for that purpose.
Any public website absolutely should be worst-case fast though.
I don’t know where webdevs work or why we seem so incapable of this nuance. It can be both. It depends.
@slightlyoff @zachleat fair enough 🤷♀️
@a11yMel @slightlyoff @zachleat one of the ecommerce shops I worked at the past had a *glacially* slow public-facing set of web properties and fought the dev team trying to improve them, but internal apps were significantly faster. Sigh.
@a11yMel @zachleat Perhaps that statement about internal corporate apps is true if there is no remote work, no satellite offices in areas with less-good Internet, and corporate users are always on recently upgraded machines which prioritize speed over battery life or portability. But none of these assumptions is especially true of most corporations, especially these days.
@zachleat performance ceiling vs performance floor can be another good phrasing
-
-
@zachleat If only developers would share some of their love for bulky framework and divs with subjects like performant websites and accessibility 😒
@zachleat testing the full spectrum of slow device / slow network to ‘fastest possible’ has been a mainstay in messaging from me @calibre
However, there are still a lot of teams out there who intentionally hide worst case scenarios because it’s so bad and represents too much work to improve.
They’re so busy with the best case, that poor experiences don’t get a look in, which is totally counterintuitive because if you make a page fast for a slow phone, it’ll FLY everywhere else.
@benschwarz @calibre well said!
@zachleat same for "best case safe": as long as you follow the law, the procedures & regulations, the schedules, the training, common sense, reasonableness, all patches, all updates, all guidelines, and take personal responsibility for any of the holes, live in a bubble where you can afford all that money and time, it will all be safe!
@zachleat another fun thing to measure would be performance consistency/variability: the ratio of best-case to worst-case.
@zachleat although I expect that would be highly correlated with worst case…
@zachleat worst-case fast also gets you an *unbelievably amazing* experience on the best-case stuff.
I love using low end hardware to build things. You find out what hurts your end result FAR earlier, when you're more easily able to fix it. And then the final result absolutely screams on decent machines, and that's an amazing feeling.
@groxx well said!
@zachleat app dev has blamed performance on network, database, IO, cpu for years, while writing heavy code optimized for their test lab instead of production.
Cloud based, microcoded, API, shared service enterprise buss were supposed to be the fix to keep us dumb infrastructure folks from being in the way.
Always told people it’s just 4th grade math. 8 bits per byte. Do the math.
@zachleat It's the classic "works on my machine" mentality. Lots of devs have good devices & fast internet and often never consider (for a variety of reasons) the diversity of clients they're going to serve.
@zachleat What about static sites that are built as apps? Stuff like gatsby or astro?
@tchauhan React has shown itself to be pretty slow! That said, there is a spectrum of React tooling. I’d rate Astro > Gatsby > Next.js for fast outputs of React stuff
As I was explaining to our local water and sewer utility, …
I'm paying my monthly bill from a small city in Argentina. I don't want or need a full-screen video of local water features to play before you allow me to access and pay my (typically less than $100) monthly bill! And some of your local customers, like my parents, are *still on dial-up*. With *OLD* computers. Like "should be recycled" computers that Barely Work!!!
Now as to why I would be paying local mid-Texas utilities from South America, or Ireland, or across the date line in New Zealand, …
Well, I have my reasons.
(And they're none of the water company's business.)
@zachleat Funny about that year mentioned in @slightlyoff's article, 2015.
I was told in 2015 by a “CTO” that I should ditch my Ruby on Rails skills, learn how to write JSON APIs in Node, and build all my UIs in AngularJS going forward. This was the future!
He may have been broadly right about the popularity of Node, but the rest of that mindset turned out to be a minefield of antipatterns. While today I'm no particular fan of Rails, it's wild how SSR (plus SSG) is all the rage once again.
@jaredwhite @zachleat @slightlyoff AngularJS certainly was a web technology 🫠
@McNeely @zachleat @slightlyoff It certainly was…written in JavaScript. Yup. 😂
@zachleat
This post boosted by someone with a fast dev machine but still running Android Marshmallow on their phone ;-)@zachleat we lack the vocabulary (and metrics) to make meaningful statements about our software's efficiency.
By rights, Elixir should be running away with things based on Phoenix's performance alone, but we're not hiring for efficiency. We're hiring for popularity and/or groupthink.
@zachleat Twitter and WhatsApp both grew quickly early on because they worked on lowend phones. Twitter’s original text-only 140 character limit was strategically intentionally aligned with what SMS could do.
WhatsApp ran as a Java app on non-Android, non-iOS phones.
@zachleat I am so with this 🙏