How web bloat impacts users with slow devices
danluu.com
danluu.com
This problem is compounded by several factors. One is that older/slower phones cannot always use fully-featured browsers such as Firefox for mobile. The app is takes too many resources on its own before even opening up a website. That means turning to a pared-down browser like Firefox Focus, which is ok except for not being able to have extensions. That means no ublock origin, which of course makes the web an even worse experience.
Another issue is that some sites will complain if you are not using a "standard" browser and the site will become unusable for that reason alone.
In these situations, companies frequently try to force an app down your throat instead. And who knows how much space that will take up on a space-limited device or how poorly it will run.
Many companies/sites used to have simplified versions to account for slower devices/connections, but in my experience these are becoming phased out and harder to find. I imagine it's much harder to serve ads and operate a full tracking network to/from every social media company without all the javascript bloat.
Talk about a catch-22 situation. The modern web is useless without adblocking. Especially when you get forever scrolling pages with random ads stuffed in there.
The extension just needs to handle GDPR notice and Email subscription overlays.
I really hate the load on scroll (especially Google Drive's implementation which is absolute trash, and half the time I'll scroll too fast and it will just miss a bunch of files and I'll have to refresh the page and try again), but a better hack might be an extension that scrolls a page or two ahead for you and stores that in memory. If it was smart enough to infinitely scroll websites that are actually finite (like google drive) that would be amazing though.
This is why native apps use recycler views for not just infinite scroll, but anything that can display more rows/columns/items/etc than can fit on screen at once. Recycler views only create just enough cells to fill the screen even if you have tens of thousands of items to represent, and when you scroll they reuse these cells to display the currently relevant segment of data. When used correctly by developers, these are very lightweight and allow 60FPS scrolling of very large lists even on very weak devices.
These are possible to implement in JavaScript in browsers, but implementation quality varies a lot and many web devs just never bother. This is why I think HTML should gain a native recycler widget of its own, because the engineers working on Blink, Gecko, and WebKit are in much better positions to write high quality optimized implementations, plus even if web devs don’t use it directly, many frameworks will.
Do you have any examples that you consider good implementations? I ask because tables seem to be the biggest offenders of slow components in say Angular / PrimeNG. I am going to a legacy app soon that is being updated (Angular but not PrimeNG). Would like to see if we can build a feature rich table that is more performant than the PrimeNG one that I know looks amazing but is the cause of many headaches.
NOTE: its not Angular or PrimeNG specifically that make the tables slow/hogs, but the amount of DOM elements inside and some of the implementation details that I disagree with (functions that are called withing the HTML being evaluated every tick). Would be great to see if this idea of a ‘recycler widget’ can help us. Cheers.
Yep, this happens even with nothing but a 10-line vanilla JS file that adds N more items every time the user scrolls to the bottom of the page. Performance degradation increases with every load due to the growing number of DOM elements which eventually exceeds whatever margin is afforded by the machine the browser is running on, causing chug.
Web is not my specialty so I don’t have specific recommendations, but plenty of results turn up when searching for e.g. “angular recycler” or “react recycler”.
Apparently it was abandoned (for now?) in favor of content-visibility / CSS containment primitives: https://web.dev/articles/content-visibility
It's also an infinitely worse user experience and prevents you from holding your place in whatever is being scrolled. Are there advantages? Why is infinite scroll used in any context?
Each next page click is a moment for you to reflect and notice the waste of time. Simple as that.
Granted there are some downsides, such as having the browser keep extra-long pages in its memory, but overall I prefer working infinite scroll mechanisms over paged ones. As far as I see, the ability to remember the current location in the page could be easily implemented by modifying page anchor and parameters accordingly, though personally I've rarely needed it.
Perhaps if there was a standard way (so in the HTML spec) to implement infinite scrolling, it would work correctly in all cases and possibly even allow user to select a paged variant according to their preference.
Not all the paged views work correctly either. In particular systems that show threaded discussions can behave strangely when you select the next page. Worst offender is Slashdot.
In other words, infinite scrolling works in "pure consumption" contexts. You'd never want to add infinite scrolling to some backoffice admin interface.
I fully support people being able to make some money off the useful things they build on the internet, whether it's some random person who built a thing, or the New York Times or even FB or Google, but there has to be a better local maximum than online advertising.
> (insert doofenshmirtz nickel quote)
I had to Google for it: IMDB.com has the quote: > Dr. Heinz Doofenshmirtz : Wow, if I had a nickel for every time I was doomed by a puppet, I'd have two nickels - which isn't a lot, but it's weird that it happened twice.
<hat tip>But you just assumed that someone who uses these low end devices has heard of a raspberry pi, can afford one and even has wired internet to plug it into.
Pihole can (I assume) also work on WiFi too.
Are these Androids actually less powerful than an 11 year-old, base-spec MacBook?
Yes. Definitely. a Macbook Pro from 2013 has between 4-16GB of memory for one thing. The lowest spec phone in the article (Itel P32) has 1GB. A 2013 Macbook Pro has a 4th gen i5 processor. This phone has a MediaTek MT6580. It's not even in the same ballpark.
This is a bit of an extreme example, but the fact is that a very large number of people in many areas of the world use phones like these.
Thanks for your work, one of the things that I really liked about Nokia was the passion for performance.
On the flip side: I was on the Meego project and we joked that we had the most expensive clock application ever created, because it kept being completely recreated.
And honestly, that app is going to be a browser shell with a (partially) offline copy of the website in it, 9 times out of 10...
If you're lucky. The main UI may just be a website, but as a native app is has a greater ability to spam you, track you, accidentally introduce security vulnerabilities, etc.
Random recent example: Nike. Popping useless errors upon checkout in the webshop. Support: "oh, we're so sorry, just try the app, k bye".
Another example of major companies with broken websites more often than not: (European) airline booking websites.
And major companies think this is totally fine and doesn't damage their brand? I mean not being able to create a functioning website with unlimited funds in 2024 is not a bad look?!
Oh, absolutely. One example: You want to connect with someone, and it'll throw up a dialog box on whether you want to add a note, with two buttons "Add Note", "Send". If you now decide that you don't want to connect after all, or want to look up something before composing the note, and close the dialog instead - it still sends the connection request.
But I have zero sympathy for giants, like Slack. If I do a "Request the Desktop Site", then it suddenly works(albeit with lot of scrolling) on my Firefox(iOS), but if I disable the "Request the Desktop Site", then it blocks everything and forces me to download the app from AppStore.
Sadly, the downloaded app looks like an optimized mobile version of the site.
This is where the blog post falls short. It assumes the software someone uses to access these websites is a constant, chosen from a small selection of browsers controlled by companies that seek to profit from proliferation of online advertising. The software used is not a variable in this "study".
Most of the sites on the list presented, namely the ones where we are just reading, listening or watching (cf. performing some commercial transaction), can be accessed using software not controlled by so-called "tech" companies on older hardware even with today's bloat and the experience will be faster than if trying to use the bloated software from so-called "tech" companies. (That software comprises both the browser and the gratuitous Javascript software that these browsers will run automatically without any input or choice from the user.)
As for users with the lowest-end devices like the Itel P32, Dan's chart seems to prove that no amount of incremental optimization would benefit them. The only thing that might is a wholesale different client architecture that sacrifices features and polish to provide the slimmest code possible. That is, an alternate "lite/basic" mode. Unfortunately, this style of approach has rarely proved successful: the empathy problem returns in a different guise, as US-based developers often make the wrong decisions on which features/polish are essential to keep versus discarded for performance reasons.
Also applies to bloatware shipped with computers. To the point where I was offered a $50 “tune up” to a new laptop I purchased recently. Imagine a new car dealer offered you that!
Remove the mcafee nuisance popups and any browser "addons" that were badged/branded. and IIRC we charged more than $50 for that service back then.
No one wants to tell a customer that they need to find better adult content sites, and that we won't be cleaning their machines without payment anymore!
And that is not more work?
It was usually the way I did it, too. But this requires checking with the owner what apps are important, saved preferences, where are the important files stored (they never know) etc.
And the if I’m in a place with a shitty signal, forget about it, this problem is 10 times worse.
I’m not even talking about the cluttered UI where only a third of the page is visible because of frozen headers and ads, I’m talking about the size of the websites themselves that are built by people who throw shit against the wall until it looks like whatever design document they were given. A website that would have already been bloated had it been built correctly that then becomes unusable on a slow internet connection, forget slow hardware.
All that is to say, I can’t imagine what it must be like to use the internet under the circumstances in which you described.
I can only hope these people use localized sites built for their bandwidth and devices and don’t have to interact with the bloated crap we deal with.
I’m in Canada and have a single digit plan and I just upgraded from an almost decade old flagship. Most websites are torture.
that would last for a few hours of lightweight (not youtube/images/etc) browsing now.
I never used it. I don't do a lot. WiFi at home, drive to work, WiFi at work, drive to home.
Travelling with the kids I've found the new plan makes life easier.
Even so, we should avoid pigeonholing those who have limited access to data as poor people. There are other reasons.
In another world this mode dominated UI/UX design and development and the result was beautiful and efficient. Where design more resembles a haiku than an unedited novel.
We don't get to live in that world, but it's not hard to imagine.
If we had modern computers in 200X, we wouldn’t just have music on our myspaces, we’d put whole games there I bet.
Why does this need to be the "alternate" choice though? What does current Discourse provide that e.g. PhpBB or the DLang forum do not? (Other than mobile friendly design, which in a sane world shouldn't involve more than a few tweaks to a "responsive" CSS stylesheet).
I think flipping the question makes more sense, why do you think some forums switched to or started using discourse instead of just using phpbb? I can guarantee you that it's not just to follow a fad or whatever, most niche or support forums don't care about that.
I say this as someone that frequently uses and enjoys both rue brutalist design of a text web browser and the emacs mastodon client.
Why shouldn't the default be: does this website work in Lynx? I think that's a damn good baseline.
And in response to the other parent post, on a (almost) new iPhone, both news sites & Twitter continuously crash and reload for me. I'm not sure what the state of these other popular sites are because I don't use them.
But it is gaining popularity with the unexpected rise of htmx and its 'simpler is better even if it's slightly worse' philosophy.
It should be easy to use this as a "north star" and your only job is to not screw it up hardly at all.
Some people are just worse screw-ups than others.
But if you’re in that middle world country AND your official language is English, you’re gonna have a hell of a slow time.
I live in a poor Southeast Asian country.
People with small data plans don't use data from efficient websites, they use wifi which is omnipresent.
30GB of data on a monthly plan is $3.64. Which is about 4-6 hours of minimum wage (minimum wage is lower in agricultural areas).
But more to the point, people don't use data profligately like in the West. Every single cafe, restaurant, supermarket, and mall has free wifi. Most people ask for the wifi password before they ask for the menu.
I've never seen or heard anyone talk about a website using up their data too fast.
It honestly sounds like a made up concern from people who've never actually lived in a developing country.
People here run out of data from watching videos on TikTok, Instagram, and Facebook. Not from website bloat.
I think one way for first world country citizens to empathise with this is how people behave when on roaming data plans during overseas trips. One does keep to public WiFi as much as possible and keep mobile data usage to a minimum or for emergency purposes.
You mean, the one developing country you live in.
You are also missing the full spectrum of users. People don't just browse the web for fun. They look for important information like health or finance information, they might not want to do that in a public place or they might not be able to put it off for when they next have wifi.
If you are building an e commerce website it might not matter, but you could be building a news site, or any number of other things.
>It honestly sounds like a made up concern from people who've never actually lived in a developing country.
I once loaded a site that loaded approx 324mb "Super resolution" image (I knew it was high res, but I thought it was like 30-40 mb at best). Took care of 1/3rd of my monthly data in a single page load.
Is this because the website usage doesn't add up or because they don't have the tools to track which sites are using how much data?
I live in a major city in the Philippines, and free WiFi is becoming more of a rarity nowadays. Not even Starbucks and other big chain restaurants, malls, and cafes offer WiFi anymore because of how widely available data is. They expect you to bring your own data and tether if you want to browse or do some work.
In more rural areas, WiFi is definitely not widely available. On the rare chance it’s even offered, it’s usually “piso WiFi” paid by the minute.
That 30GB plan is more than some people with phones earn here
I work with parolees and they get the free "Lifeline" phones the federal govt pays for. You can get one for free on any street corner in the poor 'hoods of the USA. They are the cheapest lowest spec Android phones with 15GB data/month. That data is burned up by day 3 due to huge Web payloads and then the user can't fill out forms he needs for jobs/welfare and can't navigate anywhere as he can't load Maps.
Maybe the people who care this much about performance should start competing services or a consulting firm which optimizes for that. Better yet, they could devote their efforts to helping create educational content and improved frameworks or tooling which yields more performant apps.
Surveys could be used to explain the bounce rate, but getting feedback from people who leave is one of the hardest the recruit well for. Usability tests could help with that though.
This “blame the managers” attitude denies the agency all developers have to do our jobs competently or not. The manager probably doesn’t ultimately care about source control or code review either, but we use them because we’re professionals and we aim to do our jobs right. Maybe a better example is security: software is secure because of developers who do their jobs right, which has nothing to do with whether or not the manager cares about security.
Secure software happens because of a culture of building secure software, or processes and requirements. NASA doesn't depend on individual developers "just doing the right thing", they have strict standards.
I believe there is some nuance to this due to the winner-takes-all nature of modern software services. There simply isn't a lot of choice for users or switching is expensive so companies don't do it and employees are forced to suffer through horrible performance.
You think developers prioritize business value? That isn't how employment works.
To be clear, not saying this is a good thing, just don’t see what prevents avoiding much of the bloat on top of that which supposedly adds “business value”.
If you're maintaining a web app over a period of years, it takes at least some effort and time to keep it slim and efficient because small inefficiencies here and there start to accumulate and these tend to be more demanding even in the best case.
There are some antifeatures that Dan Luu identifies, like dynamically unloading content, that probably take a considerable amount of time to implement while degrading both the user experience and efficiency, but I doubt avoiding those is enough to ensure good performance on more complicated projects.
Unfortunately this means needing to use Facebook to find out if they’re open on a national holiday.
I don't think the average barbershop/restaurant owner will care about that, for instance? They just wanna set up a Facebook/Instagram and done, they can now instantly receive messages from clients to make reservations and also share their stuff with posts. I bet they don't even know they can make a website.
Also, every time they end up getting a website, it's powered by Wordpress hosted in the slowest server you can imagine. And it will end up redirecting you to a propietary service to make your reservation (Whatsapp, Facebook, Instagram...)
At least that's what I see in Europe and south america, I have no clue how it is everywhere else.
He said, with no irony whatsoever, that he didn't realise it would be so complicated and decided not to take me up on the offer. I suspect this attitude is not the unusual with one-man businesses that have survived just fine thus far?
I browse the web on Firefox with uBlock Origin, 3rd party cookies disabled, and so on.
So I am missing the bloat most people talk about.
But still apps like Clickup are really slow. It's just bad software.
Client Side Rendering ( Regardless of Frameworks ) is hip, and gets more media attention. Sometimes backed by VC. It is new, it is complex. And fits both the hype cycle, software engineers complexity attraction, and Resume Driven Development model. And just like the article stated, it is suppose to bring so many good things in its idealogy to the table.
Since majority of software developers wants to works on it, so their Resume gets a tick and could jump to another job later. Management now faces lots of application for these technology and zero for old and boring tech.
>great web programmers who don’t know much (and appear to not WANT to know much) about efficiency.
Remember when Firefox OS developers thought $35 dollar Smartphone will one day take over the world and CPU will be so much faster due to Moore's law, performance will soon becomes irrelevant.
I mean that is like Jeff hates Qualcomm, without actually understanding anything about Mobile SoC business nor the CPU behind it. And how ARM's IP works. A lot of people dont want to know "why" either.
A more accurate description and also a general observation. Most software developers and especially those on Web Development have very little understanding of hardware or low level Software engineering. Cloud Computing makes this even more abstracted.
My philosophy is nearly completely different, I ask myself what the minimum maintainable code is that would produce the equivalent of a well hand coded HTML+CSS+JS website. Usually the result is magnitudes smaller.
One of those people asked me how I did realtime list filtering on 1000 table rows and still have it load fast ans perform well on mobile. While that isn't really a feat, all I sid was deliver the whole data on the first request and then hide non-filtered data dynamically. That means the webserver didn't have to do anything wild, orher than deliver the same cached data to everybody who filters that list and because this was the only javascript going on on that site it was (to them) unusually performant. If you look at a comparable table row from their solution (some framework, didn't have much insight into it) the resulting html was 80% boilerplate that they didn't even use.
Web development is too entrenched and many wandered too far from the essentials of web technology.
If you mainly target people in the US or EU, there's perhaps something to be said for not optimizing too aggressively for low-end hardware and flaky low-bandwidth high-latency connections. But if you're targetting rural Africa fairly aggressive optimisation seems like a no-brainer, right?
Their homepage loaded this 2M gazillion by gazillion pixel image downscaled to 500 by 1000 pixels with CSS. It got worse from there. I don't recall the exact JS payload size, but it was multi-MB – everything was extremely frontend-heavy, which was double ridiculous because it was mostly a "classic" template-driven backend app from what I could see.
I still applied because I liked the concept but the tech was just horrible. I don't really know why it was like this as I never got to the first interview stage, but it's hard to image it's anything other than western European developers not quite realizing what they're doing in this regard.
instead of this nasty js feature detection that 99% of time no one does.
prefers reduce motion was a good start. although its rarely respected.
So you have a feature team that works on a feature for 6 months, does a 1 hour "KT Session" with the offshore maintenance team and hands them the code. The offshore team has some information on the feature but not enough to really manage existing tech debt, just to keep the lights on. And on top of this they know they are the lowest totem on the pole and don't want to get fired so they don't go out of their way to try and fix any existing code or optimize it, again just enough to keep the thing working.
Then this cycle repeats 100-1000x within an org and pretty soon you have a scenario where the frontend has 2M lines of code when it really should be 250k max. A new feature team might come on with the brightest engineers and the best of intentions, but now they have to work within the box that was setup for them. Say they have a number of elements that don't line up with their feature mockups. The mockups might be incorrect, there might have been an upgrade to the UI kit, or the existing UI kit might need refactoring. Problem is none of that is budgeted for so the team is told to just copy the components and modify them for their own use. And of course on handoff to maintenance team, the new team does not want to mess with the existing feature work so they leave it as is. Management is non-technical so they don't know the difference, and you end up with 50+ components all called "Button" in your codebase from years and years of teams constantly copy/pasting to accommodate their new feature.
Marketing team mandating inclusion of at least one "Tag Manager" (if they are especially bad, there will be multiple).
A "Tag Manager" is a piece of JS that is installed together with an API key in the site... and then it downloads whatever extra JS that was configured for given API key. The actual site developer often has absolutely no control over it (the closest I got once was PoC-of-PoC where we tried to put even inclusion of tag manager behind an actually GDPR-compliant consent screen).
Marketing team gets to add "tags" (read, tracking, chat overlays, subscription naggers, whatever), sometimes with extra rules (that also take time processing!), all without involving the development team behind the site.
But consider how much of the bloated JS tends to be from external parties, and pretty much everything that isn't CDN-ed frameworks will be stuff either required by marketing, or flat out added through the use of a tag manager.
There are three parties involved in the bloating. Management prioritising certain things is one. Developers (including here both programmers and designers and others etc.) not caring enough or otherwise making choices that lead to bloat is second. Marketing team with power to require problematic things added or just going crazy with tag manager is third.
All three are involved in the "bloating crisis".
I think you mean “programmers” not just “web programmers”. I’ve worked with plenty of bloated over-engineered Java and C# codebases that take several minutes to start on a very fast developer machine with 32 gigs of RAM. Sometimes, the worst offenders use “lower level” languages! The performance averse problem is endemic in the entire field, not just in the web.
It ALWAYS starts at the top, no matter how you slice it. Why are the incompetent devs there in the first place?
I would like to have seen Amazon in the tests. IME Amazon's website is among the absolute worst of the worst on mobile devices more than ~4 years old. Amazon was the only site I accessed regularly that bordered on unusable, even with relatively recent high-end mobile hardware.
I daily drive a OnePlus 5 running Android 14 through LineageOS and the user experience for non-gaming tasks is perfectly adequate. This phone has 6GB of ram, so it's still on par with most mid-range phones nowadays. My only gripe is that I had to replace the battery and disassembling phones is a pain.
Meanwhile a Galaxy S8 with the same SoC, 4GB of memory and stock Android 9 with Samsung's modifications chugs like there's no tomorrow.
I can understand that having two more gigabytes of memory can make a difference but there is a night and day difference between the phones. Perhaps Android 14 has way better memory management than Android 9? Or Samsung's slow and bloated software is hampering this device?
Either way it's irritating to see that many companies don't test on old/low-end devices. Most people in the world aren't running modern flagships, especially if they target a world-wide audience.
I still have the air with whatever the macos is, but as soon as i have a minute i'm going to try and get linux or BSD on it. I'm still sore at how little use i got out of that machine - and i got it "open box" "scratch and dent", so it was around $500 with tax. I got triple the usage out of a 2009ish eeePC (netbook)
So sad this kind of shenanigans are not possible anymore.
It didn't look like a good candidate for OpenCore Legacy because of the dual video cards, but it feels so gross recycling a perfectly working computer.
I find that a lot of my work is "remote" at this point. Im doing most things on Servers, VM's, and containers on other boxes. The few apps that I do run locally are suffering (browser being the big offender).
Is most of what you're doing remote? Do you have a decent amount of ram in that air?
I suspect that people who have somewhat older Macs (obviously there's some limit) who find their web browsing intolerably slow probably have something else going on with either their install or their network.
This makes me call into question literally everything else in your post.
You might be able to do CPU based for a few trials for fun, but you arent running LLMs on CPU on a daily basis.
The relatively little LLM use I do is in a browser and it doesn't matter which computer I'm doing it on.
What do I mean?
In game development, people often argue that game consoles hold back PC games. This is true to a point, because more time is spent optimising at the cost of features, but also optimising for consoles means PC players are reaping the benefits of a baseline decent performance even on low end hardware.
Right now I am developing a game for PC and my dev team are happy to set system requirements at an 11th generation i7 and a 40-series (4070 or higher) graphics card. Obviously that makes our target demographic very narrow but from their perspective the game runs: so why would I be upset?
For over a decade memory was so cheap that most people ended up maxing out their systems, the result is that every program is electron.
For the last 10 years memory started to be constrained and suddenly a lot of electron became less shitty (its still shitty) and memory requirements were something that you could tell at least some companies started working to reduce (or at least not increase).
Now we get faster CPUs, the constraint is gone, and since the M-series chips came out I am certain that software that used to be useful on intel macs is becoming slower and slower. Especially the electron stuff which seems to especially perform well on M-chips
But the low-end device thing still stands. At least here in Argentina where I live most people can't buy a $1000+ phone without going into debt or saving money for a stupid amount of time to get it. Some people that really can't afford to do so still buy them though. Maybe it is reasonable for some but I never saw any appeal in spending so much money (comparatively to a monthly salary) on a non necessity. I happily spent that kind of money on a PC to use for work/study, but a phone? Nah.
Beyond personal preferences, I live and work in an area of California where people could greatly benefit from easily accessible phones so I'm interested in what's possible.
Blocking ads and trackers might help you to browse the web.
The Palm Phone lags with just about everything honestly, but I like the form factor of having a phone the size of a credit card. But since software only gets slower, most of the web is just beyond it at this point.
Smartphones in my opinion are a major example of this. I can't tell you the number of people I've meet who barely even or don't even know how to use their devices. It's all black magic to them.
The largest problem is the over-dependence on the use of "Gesture Navigation" which is invisible and thus non-existent to them. Sure, they might figure out the gesture bar on an iPhone, but they have no conception of the notification/control center.
It's not that these people are dumb either, many of them could probably run circles around me in other fields, but when it comes to tech, it's not for a lack of trying, it's a lack of an intuitive interface.
I want a computational environment, I am a cyborg! I build my environments to my specifications. I am a privacy and control absolutist with these devices, because they are cybernetic extensions of my mind. SV: Stop being over-opinionated pricks trying to monetize every last drop of attention for every bottom-pocket penny in microtransactions. What we develop here is far and beyond more spiritual than we can all imagine. The utter lack of owner/user sovereignty shown lately, basically since iPhone and Facebook, captured in the term Enshittification, is absolutely appalling.
Anyway, thank you for reading my unspellchecked schizo-ramblings. Now carry on with the great monetization, metatron hungers!
Gesture navigation's lack of discoverability is a problem for sure, although I'm not sure how to best address it (people aren't likely to sit through tutorials...)
I don't think (modern) technology is at fault here.
https://support.apple.com/guide/iphone/learn-basic-gestures-...
Android apps tend to be decent about giving a little tutorial when they open, highlighting buttons with little blurbs explaining their use. Is this a trend with iOS?
This is uniquely an iPhone problem, not a smartphone problem. It’s been one of my biggest gripes after switching from android. Where the heck is my back button? Home button? Any buttons? I really despise Apple’s obsession with minimalism and will be switching back to android when this phone dies.
font-size: 18px;
line-height: 1.5em;
max-width: 38rem;
Now look how readable (and beautiful) it is. I read a lot of Dan Luu's posts, and each time I have to do this sort of thing to make it readable.Seriously, techies, it's an extra 64 Bytes to make your page more readable.
Because we can’t just go around trying to understand basic web-based development without the frameworks … can we?
The conclusion I came to is that the audience is very tech-savvy and is used to activating Reader Mode when they encounter pages like this.
Only thing that annoyed me is that there are very lengthy appendices. Thus the scroll bar suggests the main article is much longer than it actually is.
The irony of this on an article about how developers ignore users on low-performance mobile devices
Pretty sure the text size is likely to be marginal from an accessibility PoV, and the line length doesn’t aid readability
Some of it can be appealing, when basic ergonomic needs are met (readable text size and line length, adequate margins, and so forth). Most is just brutally pretentious, IMO.
That page is nearly fine for me but I just hit CRTL + to scale up. That works for me.
That page is pure text with no or at least minimal fiddling. You have your solution for your use case and I have mine. A blind reader will also have their solution, so they can even access it. Thanks to the simplicity of the source: all solutions to accessibility are also going to be reasonably simple.
I think that Dan understands how to communicate effectively - keep it simple and don't assume that eyes will read your words. You can trivially (and you do) fiddle with the presentation yourself for your own purposes.
I think that if you don't like the presentation of something like this then you could reformat it yourself, prior to engagement. Dan has kindly provided his message as a simple text stream that can be trivially fiddled with.
How do you do CTRL++ on a mobile phone?
On iOS, there’s a text scale button in the URL bar which does the trick.
Try using some imagination!
No idea but you seem to have managed it 8)
> I read a lot of Dan Luu's posts, and each time I have to do this sort of thing to make it readable.
You shouldn't have to. You should be allowed to add a CSS file which can apply to multiple files, and then use that, instead of having to do it for each file individually.
For cases when you don't agree with styles there is Reader Mode. Your way works also, but Reader Mode just simplier, it is just one click away.
I've had to remove "max-width"'s from a ton of sites using my filtering proxy. My window is this big, I expect your content to fill it!
How is it readable when you're limiting text width and not taking advantage of the whole screen you paid for?
[Turning 48 next month and wearing glasses.]
I have a feeling it was the standard because they used the minimum font size to make the letters readable, and that's how much it fit on the physical page width. Which was standardized before typewriters for unknown historical reasons?
> You don't want to move your neck when you read a single line that's kinda silly.
I don't have to move my neck to read the article spread across the full width of my monitor. On 13" laptop or 24" desktops. Are you using a 21:9 utrawide?
Also WCAG recommends line length set to <80 characters too [2]. I'm not sure what else could make this more convincing or official.
1 - https://baymard.com/blog/line-length-readability
2 - https://www.w3.org/WAI/WCAG21/Understanding/visual-presentat...
"recommends". Want to deny me the option of longer lines?
Also wish his pages had dates on them (one or both of first posted / last updated) AFAIK he intentionally leaves them out, I don't get why.
Some people like to brag about the timelessness of their articles [1], and that might be one reason. (I personally don't fully agree though, even the linked original WikiWikiWeb page has a last edited date.)
> Just as an aside, something I've found funny for a long time is that I get quite a bit of hate mail about the styling on this page (and a similar volume of appreciation mail). …
I'm not sure what youtube is doing (or everyone else for that matter.)
If we're serious about this climate crisis/change business, someone needs to cast a very hard look at google and meta for these sorts of shenanigans. eating CPU cycles for profit (ad-tech would be my off the cuff guess for why youtube sucks on these low power devices) should be loudly derided in the media and people should use more efficient services, even if the overall UX is worse.
and to reply to another sibling, "yt-dlp" isn't workable, this is for a senior citizen that does small motor repairs.
I got an HP elitedesk that's a few years old coming in monday to replace the RPI; hopefully that will last another 3 years before google et al decide to "optimize" again.
I would have opted for a small business-pc that is x86 based and 3-4 years old.
Big companies use percentages in places they shouldn’t and it gets them in trouble. .1% when you have a billion users is a million people you’re shitting on.
For me that might be a dozen people. Very different.
E.g. On the OG Pinephone a 720p video on Youtube is running smoothly in Chromium, but not Firefox.
In your case, maybe pulling the video with yt-dlp then playing it works...
Maybe they could do that Consumer Reports style, or maybe it’s an add on the works a bit like Nielsen ratings.
Tried it somewhat recently around Ventura and the machine clearly appeared to be struggling with the OS alone. So we had a machine that used to be capable of actual, productive work, and is now seemingly struggling at idle? It doesn't look like the new OS brought anything new or useful to the table (besides copious amounts of whitespace) either.
As another data point, YouTube a decade ago would've been perfectly fine on that hardware too. The culprit is web bloat in general, and more specifically the monstrosities of abstraction that have become common in JS.
Even for those who don't believe at all in "climate crisis", there is something to be said for the loss of craftsmanship and quality over time that's caused this mess, so I think it's something everyone across the whole political spectrum can agree with.
mpv --demuxer-max-bytes=1024MiB --vo=gpu --opengl-es=yes --ytdl --ytdl-format="best[height<=800]" "$url"then put this in '.config/mpv/mpv.conf' to twart hw requirements
ytdl-format=best[height<=?720][vcodec!=vp9]/bestvideo[height<=?720][vcodec!=vp9]+bestaudio/best[vcodec!*=vp9]/best
and pass url's to it (i use 'play-with' ff extension)
By all accounts client devices' energy consumption is a rounding error in terms of contribution to climate change. Going after them to solve climate change makes as much sense as plastic straw or bag bans.
What counts as "IT"? It's most certainly a superset of "client devices", which is what my and the parent comment was talking about.
>Berners-Lee writes that in 2020, there were 7.7 billion mobile phones in use, with a footprint of roughly 580 million tonnes of CO2e. This equates to approximately 1% of all global emissions
Of course, not everyone is replacing their phones yearly. Another source[2] says the average consumer phone is 3 years old. That works out to 0.33% of global emissions, assuming the phones aren't recycled/reused to developing countries. Even if assume people are upgrading their phones for app/web performance reasons, the impact is far less than 1%.
[1] https://reboxed.co/blogs/outsidethebox/the-carbon-footprint-...
[2] https://www.statista.com/statistics/619788/average-smartphon...
It's still somewhat surprising that one could attribute 0.2% of global emissions solely to phone power consumption... I would have expected it to be lower.
Having gotten away from 500+ watt desktops as the standard for light non-gaming computing has been a win in the energy consumption court.
I think there are lots of good reasons to avoid the upgrade cycle but energy consumption of the end device itself probably isn't it. (Embodied energy of the devices, environmental impacts of mining, no good EOL story for ewaste, etc)
It adds up? How many devices are there? Tens of billions?
Web 345 devs just don't care because the costs are borne by the customer.
Also, it's not just your site. It's every site. And the customer pays all those millionths of a penny added up out of their pocket. And all those 5 second delays out of their lifetime.
Edit: btw at a quick glance you underestimated cell phone soc TDP by a 2-4 factor.
The time cost is certainly the greatest expense here, power is cheap in consumer computing contexts, generally speaking (at least nowadays with most things racing to sleep), and is mostly relevant because of battery life, not power cost.
But at least that gets you tea, instead of engagement.
You've got to put X joules in to boil Y liters of water. No choice there, except giving up on the tea.
You can greatly reduce the joules necessary to see cat photos though. And you don't have to give up on seeing the cat photos.
This article just felt too soft, too couched in internet fights, to really stand up.
But they do, don't they. Discourse's founder's words are just very illustrative. Have you used the web recently? I have. It's bloated beyond any imagination to the point that Google now says that 2.4 seconds to Largest Contentful Paint is fast now: https://blog.chromium.org/2020/05/the-science-behind-web-vit... (this is from 4 years ago, it's probably worse now).
You don't have to go far to see either Youtube loading 2.5 megabytes of CSS on desktop to the founder of Vercel boasting its super fast sites that take 20 seconds to load the moment you throttle it just a tiny bit: https://x.com/dmitriid/status/1735338533303259571
Dan's articles have usually been very good at that. The keyboard latency one for example makes few assumptions and mostly relies on data to tell its story. My point is that this article is different. It's an elevated rant. It relies on an audience that already agrees to land its point, hence my criticism that it's too couched in internet fights.
I can load the entire MS Office suite and open a Visual Studio 2022 project in less time then it takes to open a blank Jira web form.
What’s your point?
I, too, dislike slow websites and web apps, but I don't think they are some mystery - natural selection isn't selecting for idiot developers, market selection is selecting for tickbox features and with first-mover-advantage they are selecting against "fast but not available for another year and has fewer features and cost more to develop".
You block JavaScript and the amount of sites that is broken is ridiculous, some you would not expect (websites, not fullblown interactive apps).
Furthermore - this philosophy has made Windows worse and less responsive in all cases.
I understand that this "pays the bills" but my charge is (currently) to make things faster so I am against slowness.
Core frequencies aren't going up at 2001 rates anymore. (And although Moore's law has continued, it is only just. Core freqs have all but topped out, it feels like.) Memory prices seem to have stalled, and even non-volatile storage feels like it's stalled.
My computer in 1998, compared to it's predecessor, storage was going up in size at ~43% YoY. It was an amazing time to be alive; the 128 MiB thumbdrive I bought the next decade is laughable now, but it was an upgrade from a 1.44 "MB" diskette. Today, I'm not sure I'd put more storage in a new machine than what I put in a 2011 build. E.g., 1 TiB seems to be ~$50; cheaper, yet. Using the late 90s growth rates, it should be 17 TiB… so even though it's about half the price, we can see we've fallen off the curve.
https://en.wikipedia.org/wiki/Transistor_count has a table of transistor count over time. 2001 was Intel Pentium III with 45 million transistors and nVidia NV2A GPU with 60 million. 2023 has Apple M2 Ultra with 134 billion transistors and AMD Instinct CPU with 146 billion, and AMD Aqua Vanjaram CDNA3 GPU with 153 billion. That's some ~3,000x more, about a doubling every two years.
Core frequencies aren't going up, but amount of work per clock cycle is - SIMD instructions are up, memory access and peripheral access bandwidth is up, cache sizes are up, branch predictors are better, multi-core is better.
> "E.g., 1 TiB seems to be ~$50"
You can get a 12TB HDD from NewEgg for $99.99, Joel's blog said $0.0071 per megabyte and this is $0.0000083 per megabyte, ten thousand times cheaper in 23 years. Even after switching to more expensive SSDs 1TB for $50 is $0.00005 per megabyte, a hundred times cheaper than Joel mentioned - and that switch to SSDs likely reduced the investment in HDD tech. And as you say "I'm not sure I'd put more storage in a new machine than what I put in a 2011 build" few people need more storage unless they are video or gaming enthusiasts, or companies.
My comment explicitly notes this, and that I am not debating that transistor counts have continued to follow Moore's Law. They have. That's not the point.
> Core frequencies aren't going up, but amount of work per clock cycle is
[Citation needed]; this absolutely doesn't match my experience at all.
> You can get a 12TB HDD from NewEgg for $99.99
I looked at NewEgg specifically before I made that comment. (But for the pricing for 1 TiB, as that was comparable.) 12 TiB runs $250–400, with the absolute lowest priced¹ 12 TiB (internal desktop form factor) HDD being $201. So no, you cannot.
¹and the "features" of this "12 TB" HDD include "14TB per drive for 40% more petabytes per rack" (wat) "Highest 14TB hard drive performance" (wat)
But of course, ranting and reading rants is satisfying in its own right. What's the problem?
At this point you're willingly ignoring it because you dislike that this is additionally illustrated by quotes from specific people.
And that's before getting into when The Business wants that sweet, sweet analytics data, or those sweet, sweet ad dollars.
I don’t think I’ve ever seen a company take performance seriously. No one scoffs when a simple API service for frontend has 500ms response time! How many engineers even know or care how much their cloud bill is?
What contention? If anything, Luu is being rather generous–Knuth was just whining that the decades-long free lunch program was being cancelled.
Programming languages and hardware both offer poor support for fine-grained parallelism and it's very hard to speed up classical software using parallel approaches.
When I first read about the multi core vs single core debate in college, I thought it was silly and that multi core would be just fine. But over the years I've developed a more nuanced view. The average user is mostly doing things that involve IO, so that makes multi core useful in that you can use multiple cores to wait for IO, but for actual computation single core performance continues to be the bottleneck.
Google recently retired their HTML Gmail version, mind you, it still worked on a 2008 256MO RAM Android phone with an old Firefox version and it was simply fast... of course the new JS bloated version doesn't, it just kills the browser. That's an extreme example, yet low budget Phones have 2GB of RAM, you simply cannot browser the web with these and expect reasonable performances anymore.
Mobile web sucks, an it's done on purpose, to push people to use "native" apps which makes things easier when it comes to data collection and ad display for companies such as Apple and Google.
Partly for sure, but Amazon for example? Or Decathlon? (a big sports/outdoor chain in europe)
Their sites are just horrible on a mobile (or in Decathlons case also on a Desktop, that is not high end), but they also don't offer me their app in plain view, so I have to assume it is just incompetence. The devs only testing everything on their high end devices connected to a backbone.
Pretty much every company out there employs oxygen wasters who need "engagement" to justify their promotions/salaries. They don't care whether said "engagement" translates to actual profit.
If bloating the page or adding some annoying cookie banner allows them to come up with some random number that goes up (no matter whether the measurement is even correct) they'll happily take that opportunity even if would cause actual profits to go down.
RIP Google.
The new Reddit is unusable, and the old is well too old.
Twitch is borderline usable, with chat and video stream problems...
The list is long...
All changes are bad when you have the final formula because they are job security.
Eventually the monkeys on this ball of dirt will realize that jobs and money don't exist, but then it will be to late... oh that is now!
RIP Humans.
What's wrong with the old Reddit UI?
I returned to it last major reskin too but then they fixed the new to become usable.
Now they removed the middle version... they should have made recent.reddit.com for those that want to wait until new.reddit.com doesn't suck as much.
Maybe a quality service really does cost that much? But the gap in performances and usability is so great, it seems that something else must be at play sometimes.
> Why haven’t other sites figured this out?
i suspect that most ppl cannot appreciate efficiency
I've said for a long time, devs should be forced to take a survey of their users' hardware, and then themselves use the slowest common system, say, the 5th-percentile, one day a week. If they don't care about efficiency now, maybe they will when it's sufficiently painful.
My point here is not every phone which is more than a few years old stops working or cannot browse web sites.
But TeX was designed to run on a single CPU-core, so no surprise here. I wonder what TeX could become if all Knuth had at the time a multicore machine with cores managing maybe 0.1 MIPS each (or even lower). Like what the world would become if we lived in a counterfactual world where Intel and its buddies starting in 1970s boosted not the frequency and instruction per second per core but number of cores?
My take we'd switched to functional-style programming at 1980s with immutable data, created tools to describe multistage pipelines with each stage issuing tasks into a queue, while cores concurrently picking tasks from the queue. TeX would probably have a simplified and extra fast parser that could cut input into chunks to feed them into a fullblown and slow parser which would be a first stage of a pipeline, and then these pipelines somehow would converge into an output stream. TeX probably would prefer to use more of lexical scoping, to reduce interaction between chunks, or maybe it would make some kind of a barrier for pipelines where they all stop and wait for propagation of things like `\it` from its occurrence to the end.
This counterfactual world seems much more exciting to me than the real one, though maybe I wouldn't be excited if I lived there.
I wish software engineers cared to test in less than ideal conditions. Low speeds, intermittent connectivity, and packet loss are real.
Overall switching to fiber is cheaper than aggressive lightning protection, and i moved all the network gear to a commercial UPS, and the interconnect between the "modems" and the switches is media converted to fiber for 3 feet. any time i have to run networking further than 6' or so i run fiber and put a media converter or a single gbic switch there. I'm hoping i futureproofed enough to upgrade to 10gbit in a year or so. My backup NAS has 10gbit but nothing else is connected at that speed yet.
edit: One time lightning hit a pine tree in the back of the house, and it used my dipole antenna to reach a tree 80' away, and apparently there was an extension cable near there, which went back into the house, and it went all the way around the house, to reach the telco CPE box where DSL lived. the telco box and my mains earth are roughly 1 meter apart. That surge took out my main desktop computer, a washing machine (singed the dryer where it arced between it and the washer), the toaster oven, a microwave, my NAS, and my router connected to telco. It went two different paths inside the house, along both outside walls, one via mains copper and the other via cat5e copper. That was quite an expensive misadventure.
Unless it's somehow regulated that people test less than ideal conditions it won't happen, yet most people (myself included) don't really want that either.
For software this means designed on top of the line hardware, with fast low latency internet. TFA describes the consequences.
For hardware it means designed inside climate controlled dust free offices and cars for people with long commutes to work on straight roads where you don't have to pay much attention.
Think phones shutting down if you have a real winter. Think smart turn stalks that can't signal a left turn on a crossroads that's not at 90 degrees. Think ultra thin laptops where the keyboard is so dust sensitive it lasts 3 months if you use them outdoors. Think a focus on audiobooks and podcasts because you're stuck in traffic so much.
Even going back so far that modern OS support is absent, snappiness can be found. My circa 2000 500Mhz PowerBook G3 running Mac OS 9.1 doesn’t feel appreciably slower than its modern day counterpart for more than one might expect, and some things like typing latency are actually better.
git://bitreich.org/privacy-haters
However YouTube and Gmail brought it to a crawl. I had to sell it because Youtube Music slowed down my work.
Then after going mass market OEMs put full windows and client software on there, and the web became heavier so webmail or simple office/collaboration slowed down. After that mobile/tablets were in competition for the market, and has practically devoured non-professional usage for PCs outside of gaming.
What I keep coming back to is bundling versus unbundling - having one tool to do everything with likely inevitable compromises, versus splitting into a number of precise specialized ones. It's difficult to convince any decent number of people to take something that does less.
- using more clear English with simple sentence structures should make the content more accessible to people who don’t read English with the fluency of an educated American
- reducing the number of requests required to load a page as latency may be high (and latency to the nearest e.g. cloudflare edge node may still be high)
In practice this pretty much requires pure SSR and "multiple page" design, given the amount of network roundtrips on typical SPA sites. (Some lightweight SPA updates may nonetheless be feasible, by using an efficient HTML-swapping approach as seen in HTMX as opposed to the conventional chatty-API requests and heavy DOM manipulation.)
We worked really hard to optimize our forum load times, and it handedly beats the pants off of much we've tested against.
But that's not much of a brag, the bar is quite low.
Dan goes on and lambasts (rightfully so) Atwood for deriding Qualcomm and assuming slow phones don't exist.
Well, let's chat, and talk to someone whose team really does dogfood their products on slower devices...
At the same time, while a 10s load time is a long time & unpleasant, it doesn't seem catastrophic yet.
The more vital question to me is what the experience is like after the page is loaded. I'm sure a number of these sites have similarly terrible architecture & ads bogging down the experience. But I also expect that some of those which took a while to load are pretty snappy & fast after loading.
Native apps probably have plenty of truly user-insulting payloads they too chug through as they load, and no shortage of poor architectural decisions. On the web it's much much easier to see all the bad; a view source away. And there is seemingly less discipline on the web, more terrible and terribly inefficient cases of companies with too many people throwing whatever the heck into Google Tag Manager or other similar offenses.
The latest server-side react stuff seems like it has a lot of help to offer, but there's still a lot of questions about rehydration of the page. I'm also lament see us shift away from the thick-client world; so much power has been embued to the users from the web 9.9 times out of 10 just being some restful services we can hack with. In all, I think there's a deficiency in broad architectural patterns for how the thick client should manage it's data, and a really issue with ahead-of-time bundles versus just-in-time & load behind code loading that we have failed to make much headway on in the past decade, and this lack is where the real wins are.
There is a special place in hell for every web developer who does that.
Granted the main reason such a technique is needed is designs that avoid pagination.
Then because of $mandate, the report was moved to the team's standard React UI frontend. Now it takes 5 seconds to load and only gives you like 100 items at a time, so Ctrl-F is broken. Also, filter dropdowns somehow did not work until they fixed it, so it appears like the select tag was not fit for their design and they rolled their own.
The difference between a 2MB and a 150KB CSS file can be a lot of bandwidth.
The difference between a bad and good framework can be a lot of CPU power and RAM.
Companies pay for this. But I guess most have no clue that these costs can be reduced.
And some companies just don't care as long as money is coming in.
Ugh, bane of my day job. I work with two companies in particular that have high security requirements in their environments and very similar total workloads with our software. One spends around $250k (ish) a year in self hosting costs, the other over a million to get the same throughput. The less costly one worked with us as a vendor to get anti-virus/endpoint exclusions on the file io intensive part of our application and put anti-virus scanning before that point, then harden those machines in other ways. The other customer is "policy demands we scan everything everywhere and the policy is iron law".
I agree with you about frameworks, though. So much waste in creating everything as (e.g.) a React app when there’s no need. Sadly the industry heavily prioritises developer experience over user experience.
I actually pulled the plug on a wordpress site for my company last week. We now have a static website. It's a big performance improvement. But the old site was adequate even though it was a bit slow to load. So, nobody really noticed the improvement. Making it faster was never a requirement.
What is worth optimizing for is good SEO. There's of course a correlation between responsiveness and people giving up and abandoning web sites. That's why big e-commerce sites tend to be relatively fast. Because there's a money impact when people leave early.
What I find ironic is that the people complaining about this stuff are mostly relatively well off developers with disposable incomes and decent hardware. If they use crappy/obsolete hardware it's mostly by choice; not necessity. Some people are a bit OCD about performance issues as well. They notice minor stutters that nobody cares about and it ticks them off.
2MB is nothing. I'm saying this as somebody who used cassettes, and later floppy disks with way less capacity. But that's 35 years ago. The only time when this matters to me is when I'm on a train in Germany and my phone is on a really flaky mobile network that barely works. Germany is a bit of a third world country when it comes to mobile connectivity. So, that's annoying. But not really a problem web developers should concern themselves with.
When looked at from that angle, bloat is a feature.
It's not reasonable to have an expectation of quality when it comes to the web.
Not everyone cares about phones.
But I doubt companies purposely increase their hosting costs as some kind of firewall to only include the rich. More like they just don’t care. Same reason for technical debt, everyone wants to grow and move needles.
If a company could magically make their site more available and efficient for free I am sure they would jump at the chance. But spending a million on that vs. a million on ads wont seem worth it.
In contrast AMD and Intel use the same (or sameish) CPU arch in all of their lineup in a given generation, the absolute cheapest laptop I could find used a Pentium 6805, which still has a GB6 score of well over 1000, sold in a laptop that's cheaper than most budget smartphones.
In contrast, Qualcomm and Mediatek will sell you SoCs that don't even have half of that performance as a latest-gen 'midrange' part.
I think every OS now has tools to let you simulate shitty network performance these days so it’s inexcusable that so many sites and even native apps fail so badly anytime you have anything less than a mbit connection or greater than 50ms latency :-/
I remember having to plan to take up hours of time on our phone line to download giant files that were smaller than many basic webpages these days (ignoring things like photos where there's obviously a basic size/quality tradeoff + more pixels)
This stuff is simpler than we let it be sometimes, folks.
Meanwhile watches a team build a cathedral when all they needed was a shack.
I've never seen companies where developers are rewarded for performance improvement or any kind of improvement. Did an improvement? Nice! Good job! And that's it.
Then you wonder why the solo founder saas has no customers.
Perhaps the falling salaries for programming in the US could be a good thing in that regard. So many people get into this career because they want to make it big, which seems to drive down the quality of the talent pool.
I think the relative disadvantages of a poor American compared to their wealthier peers have increased as there’s more competition (as the degree is seen as more desirable by motivated wealthy parents) and the poor student likely won’t even have a non-phone computer at home where all their wealthier peers probably will. Possibly they could work around the competitiveness of computer science by going via some less well-trodden path (eg mathematics or physics) except that university admission isn’t by major. They may also be disadvantaged by later classism in hiring. Meanwhile a middle class Pole will have access to a computer and, provided they live sufficiently near one of the big cities, access to technical schools which can give them a head start on programming skills (and on competitive programming which is a useful skill for passing the current kind of programming interview questions). To get the kind of good outcome described in the OP, they then need to get hired somewhere like Google in Zurich (somewhat similar difficulty to in the US except the earlier stages were easier (in the sense of being more probable) for the hypothetical Pole) and progress from there (maybe impeded by initially not being at the headquarters / fewer other employment opportunities to get career advancement by changing jobs). Class will be less of a problem as the hypothetical middle class pole isn’t so different in wealth from other middle class Europeans and you get much less strong class-selection than when (e.g.) Americans are hiring Americans.
So, what happens? Your device slows down to a crawl, pages take forever to load, and sometimes, it just gives up and crashes. It’s like being stuck in traffic when you’re already late for work. And let’s not even talk about the data usage. It’s like your phone’s eating through your data plan like it’s an all-you-can-eat buffet.
Now, if you’re on the latest and greatest tech, you might not notice much. But for folks with older devices or slower connections, it’s a real pain. It’s like everyone else is zooming by on a high-speed train while you’re chugging along on a steam engine.
So, what can we do? Well, we can start by being mindful of what we put on our websites. Keep it lean, mean, and clean, folks. Your users will thank you, and their devices will too. And hey, maybe we’ll all get where we’re going a little faster.
It's a persistent complaint among readers of SlateStarCodex (a blog which made a high-profile move to Substack from an old WordPress site). Substack attributes the sluggishness to the owner's special request to show all comments by default, but the old WordPress blog loads all comments by default and was fine even on older devices.
https://www.reddit.com/r/slatestarcodex/comments/16xsr8w/sub...
https://www.reddit.com/r/slatestarcodex/comments/1b9p55g/any...
But the Substack devs are aware of this. [They know it's a problem](https://old.reddit.com/r/slatestarcodex/comments/16xsr8w/sub...).
>I'm much more of a backend person, so take this with somewhat of a grain of salt, but I believe the issue is with how we're using react. It's not necessarily the amount of content, but something about the number of components we use does not play nicely with rendering content at ACX scale.
>As for why it takes up CPU after rendering, my understanding is that since each of the components is monitoring state changes to figure out how to re-render, it continues to eat up CPU.
They know—but they do nothing to fix it. It's just an impossibility, rendering all those comments.
I don't access this site a lot, but I remember until very recently they had other front-end, it worked great. Honestly, I think they will follow the path of medium.com, and start to make the user experience worse and worse.
It's a site where people post text, a few images, maybe 1 or 2 videos per post. It shouldn't be complicated.
More than anything I think it’s because corporate IT has had to modernize due to security. Security now wants you to update constantly instead of running old vetted software. You also cannot demand user use an old version of a browser that still supports some old plugin. And as a vendor it’s not profitable to support people who maintain that mindset.
Also “update to the latest version” is the new “turn it off and back on again,” when it comes to basic IT help.
Now every browser gets updates, automatically and aggressively. The only real outlier is Safari, but even that updates way quicker than older browsers used to.
As a result, who needs backward compatibility?
https://gs.statcounter.com/browser-version-market-share
Chrome is evergreen, even on Android. Safari, after a bit of a fallow period, is updated fairly aggressively, and though it’s still coupled with OS updates, it’s no longer married to the annual x.0 releases.
Mind you, I still believe, and practice, you should write semantic HTML with progressive enhancement. But at the same time, I absolutely do not think you should go out of your way to test for some ancient version of Safari running on a first-generation iPad Pro—use basic webdev best practices, and don’t spend time worrying that container queries aren’t going to work for that sliver of the market.
What most impresses me is that this happen on many markets that should be competitive by any sane rationale. Like group buying or hotel booking. Yet, they also do that kind of shit, and people still have nowhere to go.
The world economy became integrated and incredibly rigid.
https://github.com/avodonosov/pocl
The unused javascript code can be removed (and loaded on demand). Although I am not sure how valuable that would be for the world. It only saves network traffic, parsing time and some browser memory for compiled code. But js traffic in the Internet is neglidgible comparing to, say, video and images. Will the user experience be signifiqanty better if browser is the saved from the unnesessary js parsing? I don't know of a good way to measure that.
It makes me very sad to see that reddit's new design is so heavy it can't even be accessed by part of the world. It's like parts of the internet are closing theirs doors just so they can have more sliding effects that nobody wants.
Or maybe I'm just a weird one who prefers my browser to do a full load when I click a link.
Btw there was a time everyone kept talking about "responsive" web design and, having used only low-end smartphones and tablets, I kept finding it weird that there was such focus on the design being responsive for mobile devices when those mobile devices were so extremely slow to respond to touch to begin with. Of course I know that's not what they meant, but it still felt weird.
Welcome to the Wide Web, where bloat is the norm.
And while I appreciate that engineers can often afford to be blunter than people in other disciplines, I also think that a founder of two successful companies should have a bit more restraint when posting. Writing "fuck company X" (unless we're talking about a grossly unethical company, maybe) just seems like very immature behaviour to me.
I’d happily pay $100/month to access the internet similar to that of pre-2005ish
As in, banning almost all commercial activity
I truly believe Google isn’t getting worse, just the incentives behind the creation of web content have become progressively maligned with that of the user’s desires
I want a high quality internet, and am willing to fork out large sums of money to access it
I hope I’m not alone
I do despise many aspects of the current internet, but I think that it's the fallibility of man that poisons the nice things, and I don't think that it was ever too much different in this regard.
For a different internet, there are ways to go about it. I'm not sure how much of it you already know.
Millionshort provides alternative search results to queries. I think this is similar to what you're looking for, and it's free.
Alternative networks spring up from time to time, like the Gemini network. I'm not sure how much of a content desert they are, as I'm not a frequent user.
Generally if you hang around in free software / open source spaces, they have a lot of people with an alternative take on the modern things, including people taking part of an internet that's not mainstream, for example by excluding running any JavaScript. This can lead to other places, forums, and so on.
I wish you luck. But be prepared that the past is gone. Maybe never existed in the first place.
> Another common attitude on display above is the idea that users who aren't wealthy don't matter.
If you want to make money, then this is the correct attitude. You need to target the users who have the means to be on the bleeding edge. It may not be "fair" or "equitable" or whatever, but catering to the masses is a suicide mission unless you have a lot of cash/time to burn.
This post reminds me of the standard Stallman quip "if everyone used the GPL, then our problems would be solved"
Anecdotally, Google Search loads ~500ms faster than DuckDuckGo on the OG Pinephone.
https://www.google.com/search?client=firefox-b-e&q=test9999
vs.
How we achieve lightweightness? Currently our only sin is, our inclusion of jquery, that is just to have some cross browser way of interacting with DOM, then we hand craft required JS code based on features used in the form builder. We then ship a lightweight runtime, whose whole purpose is to load necessary JS code pieces to have a functional form that is lightning fast. Ps: we havent gone to the last mile in optimizations, but we definteley will. Even with current state, it is the most lightweight form builder out there.
It is open source, MIT licensed, built on modern stack(react, node.js, Kubernetes and Google Cloud) and we are also hosting a freemium version.
I think, there will be ever increasing need and market for lightweight products, as modern IT means a lot of products coming together. So each one should minimize their overhead.
Give our product a go and let us know what you think?
That would be an interesting direct comparison.
I am running on a relatively new Lenovo Legion (~ 18 months old) with 64kb of ram running windows 11. About 6 weeks ago I began getting the BSOD every time I streamed a live hockey game (I watch maybe 3 games a week from Oct to Jun via Comcast streaming or 'alternative' streams).
The crashes happened multiple times every game. After maybe 10 games of this, I began closing and reopening the browser during every game break. I've experienced zero crashes since doing that.
When the crashes started, I was using Chrome - but I still experienced BSOD crashes when I switched and tested Fox and Brave. Just very odd to start happening suddenly without any changes to my machine that I could pinpoint - no upgraded bios or nvidia that I can recall.
I hope you mean GB.
As an aside, I'll use this as a way to update my post. I found a discussion of someone having a similar problem and turns out it was a windows office driver relating to automatic office updates. I turned it off which has resolved the issue.
For example, when Musk took over Twitter, he actually fixed this issue for some time, I tested it. But now they have regressed again. The website will simply not show your timeline on a slow connection. It will show an error message instead. Why would slow connections result in an error message?!
A simple solution that e.g. Facebook (though apparently not Threads) and Google use, is to first load the text content and the (large) images later. But many websites instead don't load anything and just time out. Probably because of overly large dependencies like heavy JavaScript libraries and things like that.
Both the $999 Librem 5 and the $1999 Liberty Phone (latest models) have an i.MX8M, which means they have similar processing power as the $50 phones the article is talking about.
I tried to log into Pastebin today. The Cloudflare check took several minutes.
When I load a bloated website on an iPhone 15 Pro Max over a Unifi AP 7 Pro access point connected to a 1.2Gb WAN, it’s still a slow bloated website.
If you build websites, do as much as you possibly can on the server.
As an industry, how can we get more people to understand this?
After application evolves bloated, it's difficult to go back and un-bloat it.
Bloat is often introduced accidential/y, without need, and unnoticed just because developers test on modern and powerful devices.
If developer's regular test matrix included a device with minimal hardware pewer that was known to run the product smoothly in the past, the dev could immediately notice the newly introduced bloat and remove it.
A bloat regression testing.
I call this "ecological development".
We should all do this. No need to aim for devices that already have trouble running your app / website. But take a device that works today and test that you do not degrade with respect to this device.
It will be hard to get to pristine quality, but there ought to be some amount of low hanging fruit, where minimal changes bring noticeable improvement.
That or better crafting for web applications. It feels painful to me when I see payloads in excess of 4mb of compressed JS. It makes me really want to embrace wasm frameworks like yew or leptos. Things are crazy and nobody seems to notice or care.
I run a relatively dated phone (Pixel 4a) with text set to max size. So many things are broken or unusable.
No matter who it is, when people visualize how to solve a problem, they see how their area of concern contributes more clearly than others'. It's easy to visualize how our contributions will help solve a problem, and also hard to look past how doing something else will negatively impact your tasks. In reality, this medium requires a nuanced balance of considerations that depend on what you need to communicate, why, and to whom. Being useful on a team requires knowing when to interject with your professional expertise, but also know when it's more important to trust other professionals to do their jobs.
The web is clearly not designed for or tested on slow connections. UIs feel unresponsive and broken because no one thought that an action might take seconds to load.
Even back home in Germany, we have really unreliable mobile internet. I designed the interactive bits of All About Berlin for people on the U-Bahn, not just office workers on M3 Macbooks with fiber internet.
Just waiting on it to be practically usable
The problem isn't the technologies available to us. Majority of devs just have no desire to write efficient code.
Native apps do demonstrate that there are performance gains to be made with languages better suited for runtime performance (think threads, AOT compilation, etc)
Just because there is currently a culture in the web development world that de-emphasises the importance of performance, doesn't mean we shouldn't strive to offer better tools to developers.
Right now, wasm is the only feature on the web that has the potential to offer that capability to developers - so I'd say that it's worth wanting and asking for the choice to use better tools for web applications.
In a lot of cases, shipping a wasm blob is not that bad. Depending on the language; compressed and optimized blobs are only a few kilobytes and can be "code-split" such that they are lazy loaded.
Wasm binaries also evaluate faster than JavaScript which could lead to better "web vital" metrics (like "time to first paint/interactive", though anyone can write a slow application in any language so that's not a given).
Syntactically, there is nothing missing from other programming languages that make them unsuited to working with DOM APIs.
The real blocker is waiting for wasm to gain access to DOM APIs thereby dropping the need for JavaScript glue code - once that constraint is lifted, I see no reason why it wouldn't be practical to use an alternative to JavaScript for web development.
JavaScript is practical and useful in _most_ web development cases because the runtime is built in, the ecosystem around it is quite mature and the use cases aren't that complex - however there are many cases that would benefit from more performant languages (think YouTube, Jira, VSCode, banking apps, etc).
When thinking about the "next billion" internet users (related to the topic of the article), we are going to see more users with affordable devices that feature many cores with lower clock speeds. In such contexts it is vital to efficiently leverage the available client device hardware resources - something that JavaScript isn't well suited to and something most of us don't experience (the privilege of having fast computing hardware).
Take multi-threading as an example. JavaScript's single threaded non-blocking nature is safe/ergonomic from a programming perspective and fantastic on devices that feature fast individual cores - however it falls over when clients have slower devices with more cores.
Ideally, we need _the choice_ to follow a more conventional multi-threaded model in cases where we care about performance (a UI thread + worker threads, like we see in native apps/desktop applications). The only initiative that has the potential to get us there is wasm.
Yes! I've definitely felt like this while using his website. Of course, today I just fixed it with
main { max-width: 720px; margin: 0 auto; }
but tbh, I don't want to install an extension to customise the css on this one site...
It takes several seconds to load, even with moderate hardware and fast internet connections.
I don't have any issue with reddit usability, although i do use it a lot less since they nuked my cellphone app from orbit as a cash grab.
As far as I know, nothing changed on the video detail page to justify such a huge performance degradation. There's still a player, there are still comments, there are ads and suggested videos.
Everyone working on that pile of shit should be ashamed. They would've been better off literally doing nothing and just enjoy the incremental performance gains as the hardware got faster.
https://gitlab.com/edneville/gzip-disk
It doesn't stop client CPU burn, but it might help get data to the client device without on-the-fly compression a bit quicker, which in my experience is helpful from the server side too.It is a minimal, though modern-looking web chat. The HTML, CSS and JS together is 5024 bytes. The Rust backend source is 2801 bytes. It does not pull in anything from anywhere.
Not just the quote but the whole piece. I am glad this was brought out by Dan, and gets enough attentions to be upvoted. ( Although most are focusing on Server Rendering vs Client Side Rendering; Sigh) A lot of what it said would have been downvoted to oblivion on HN. A multi billion dollar company CTO once commented on HN, why should I know anything about CPU or Foundry as long as they give performance improvements every few years.
Not only Jeff Atwood, there are plenty of other Software developers, from programming languages authors, backend and Frontend Frameworks authors, with hundreds of thousands of followers, continue to pump out views like Jeff on social media. Without the actual understanding of hardware nor the business or selling IPs or physical goods.
Hardware Engineers has to battle with Physics. And yet gets zero appreciation. Most of the appreciations you see now around Tech circle are completely "new". For a long time no one heard of TSMC. ASML wasn't even known until Intel loss its leading node. Zero understanding of CPU design nor even basic development cycles. How it will takes years just to get a new CPU out. And somehow hate Qualcomm because they didn't innovate. A company that spends the highest percentage of revenue on R&D in tech industry.
Part of the plan was that they will remake our static homepage in Wordpress bc it will be easier to manage it for them and also easier to add a blog, which was part of the new plan. I know Wordpress is slow and i would say unnecessary also but i said yes bc i did not want to micromanage them.
A year later we parted our ways and i was left with WP where the page load was abysmal(3-5 seconds) and about 10Mb of bs. There was something called "Oxy" or "Oxy builder" which would add a tons of style,js and clutter to the markup and kind of SPA page load style but horribly failing.
So now i migrated the site to Jekyll, got rid of all the bs and it's back fast. And for me also again possible to really improve.
So for my businesses i'm not touching WP ever again and that will be a huge bloat reduction in itself
That's what operating systems are for.
Just give native apps what made the web popular in the first place:
• Ability to instantly launch any app just by typing its "name"
• No need to download or install anything
• Ability to revisit any part of an app just by copy/pasting some text and sharing it with anyone.
All that is what appears and matters to users in the end.
--
But I suppose people who would disagree with this really want:
• The ability to snoop and track people across apps (via shit like third-party cookies etc)
Nice work, webdevelopers!
Could you give an example? I used a shopping website yesterday, both on a laptop and on an android phone, and apart from cookie banner popups (design choice, not hardware limitation), did not have any significant inconveniences.
Aahh yes, the “I’ve loaded in my 38 different loading-shimmer-boxes, now kindly wait another 30 seconds while each of them loads more”
Can we go back to “your page is loaded when _everything _ finishes loading” and not these unhelpful micro-metrics web devs are using to lie to themselves and users about the performance of their site?
how does this even have 200 upvotes? i cant count more than 1 or 2 websites that doesnt have infinite bloat for useless nonsense like the cookie popup social media whatever 10 meme frameworks and 100 js libs injected into the page. HNers just read "bad stuff bad", respond "yup" like a zombie, and continue doing bad stuff
LetsEncrypt is stopping serving Android 7 this year. Android 7 will be blocked from 19% of the web: https://letsencrypt.org/2023/07/10/cross-sign-expiration The option is to install Firefox.
Users with old hardware are poor people. Nobody wants poor people around, not even using their website.
“Fuck the user”, that's what we heard from a PO when we tried to defend users, imagine if we tried to defend poor users.
Of course they are also guilty. LE isn't the most to blame in reality, it's just an example that old hardware isn't important to decision makers.
What's the acronym?
Unfortunately acronyms are context sensitive and many users here are not in your context... Maybe try to avoid using acronyms!
The actual websites where React is useful can be measured in single-digit percentages (effectively a full-blown application requiring a desktop-like experience, think a trading terminal). It is overkill for everything else.
Remember this the next time marketing asks the frontend team to implement that new tracking script and everyone assumes that users won't even be able to tell the difference.
I mean, maybe they can but the business doesn't care. If you polled "users" of cable television I doubt anyone would say they prefer the experience of commercials.
When the goal is to make people pay, a base strategy is to target user who are already spending money. So "fast enough on a current [device sales team is using]" becomes the baseline, and optimizing for older/weaker/cheaper environments isn't an proposition that will convince.
Except when you're ad supported. Then the balance will be a bit more in the middle.
We should just tax ad and spying on users bandwidth and front/backend end resource use.
The performance tests were created to mimic user behaviour but only involved company APIs. Not third party requests. No one in the top level, cared about this bit of information. We ran this performance test and saw the the response times are almost the same so it's time to pat ourselves on the back and move on ...
Management and product owners should understand how these things work, and shouldn't ask for bogus data when they do. But teams implementing the changes should just flat out refuse when they know the request isn't reasonable.
Probably there was an SDE-2 or SDE-3 who called bullshit on it and got ignored.
I've seen these kinds of requests plenty of ways. Sometimes those asking include a design or specs because they honestly thought that was the right way to do it, other times they are knowingly asking for (in this case) a useless test to check a box. In either case, IMO the right response is to ask questions to clarify the goals and build to that, changing the provided design or specs if necessary.
I've had to play this out dozens of times over the years and never earned enemies from if, at one point I won over the PM leader that everyone on the dev team warned me about. Its all about tact and approach, assume everyone is on the up and up and just ask good questions to clarify the goals. Its hard to get mad at that unless its done in a condescending or argumentative way.
The internet has grown, and the free sharing is still going strong. Have a look at Wikipedia, Hacker News, Arxiv.org.
To be honest, the stuff that was shared freely in 2000 was not all that great, and most of that which was, is still available. Remember that you had to buy a subscription to Encyclopaedia Britannica back then, and to all the academic journals.
Granted, there are some non-free information silos, but generally I'm pretty happy with the procrastination advice on Reddit being surrounded by annoying ads that drive me away.
Now it's all AI seo spam LADEN with data mining and ad boat on monolithic sites like Fandom they barely work on the newest iphone.
Wikipedia is a failed experiment.
https://www.britannica.com/topic/Encyclopaedia-Britannica-En...
(Be warned, there are ads on that page.)
When all this time, lightweight CSS and anchor links and some PHP was all we needed.
The second time round it loaded almost instantly.
I'm guessing there's some caching going on.
Can’t even post inline videos, bro.
\s
Jokes aside, I do miss this type of interaction. Especially for open source projects. It made finding solutions to common issues much easier when documentation was lacking or has not been updated in a long time.
Now all or most projects have adopted some form of: discord channel, slack group, subreddit, twitter. I remember searching for my similar issue in a slack channel only to realize the chat history has been limited because the owners did not pay the extra amount to archive messages beyond what was given for free.
It's the websites/web developers that are the problem.
obvs a good coder optimizes their own theme to get 100% score on lighthouse.
Lemme just give my grandma a list of instructions for doing this so she can get to Facebook. I'll let you know how it works out.