Ask HN: Why does the modern web hate users?

64 points by wusspuss ↗ HN
Twitter takes 20 seconds to load on my phone made in 2020. It then takes about 5-10 more seconds for me to close all the popups and that's IF it doesn't fail along the way (which it does sometimes), IF I don't misclick anything (which the website makes painstakingly easy).

All of that to load a list of 280 chars text messages, occasionally with a picture or a video. How come even my pocket supercomputer with 8 cores and 8GB RAM takes that much time to display just some text and pictures?

It's yet worse with reddit.

I do understand that some companies may be motivated to break their own websites to force users to install spyware ("it's better in the app!"), but making a broken website doesn't take dozens of megabytes of JS. Same slowness could be achieved with a few setTimeout()s. What's more, websites are slow even when they aren't trying to push an app down your throat - e.g. the desktop versions of those same websites are hardly better, and even websites that don't have an app to "offer" are oftentimes just as overengeneered.

What I'm trying to understand is what is the motivation behind this? I wouldn't have any questions if webpages required manpower and optimizations to be fast - but on the contrary, anyone with most basic html skills can come up with a faster frontend than twitter's[1] AND cover that same functionality (text, a few images and a couple of forms - ALL of this is covered by HTML alone, doesn't even need a single line of JS!). This means that companies pay people to make their websites worse, and to do that in a laborious manner - again, not just some setTimeouts()s, but dozens of megabytes of code (and that's compressed!). And I can't help but wonder - what is the incentive for that? Why? A business should generally save money wherever possible and only spend it to make profits, shouldn't it? I just can't see how the crime against everything decent that is the twitter frontend could possibly benefit the company, or anyone for that matter. If anything it would harm it. And it costs it money.

[1] - see e.g. Nitter, Invidious, Teddit - all of those much more robust than the sites they grab data from. Also pretty sure that even if the people behind these did get paid, it was orders of magnitude less than what the people these companies have working on their frontends get paid.

89 comments

[ 2.1 ms ] story [ 157 ms ] thread
A more interesting question would be why haven't users punished "slow" websites by not using them?
I guess they are addicted in spite of the flaws.
Punish how? The problem is that there are no alternatives to those services.
By installing ad blockers and content filtering.
Sadly, it's not enough to make those websites switch from a bloated spa to server-side.
Not sufficient perhaps, but it’s a start.
Because network effect. Because alternative services not only don't have the vast user bases to begin with, they also don't have the capital to spend on marketing. When they do, it's pretty obvious they aren't benevolent.
The answer lies in entropy.

A mix of misaligned incentives (users are not the customers), tyranny of metrics and the fact that developers use overpowered machines (compared to the rest of the world) [0].

Add on top of that the inevitable bureaucracy and conflicts of interest of any large organization, and you end up with these bloated apps. Developing good software and fighting entropy (apps bloat) require a lot of efforts, and you can't achieve this when nobody is accountable (high churn), or even have that goal.

[0] https://www.reddit.com/r/RedditEng/comments/qzoxp0/mobile_de...

In a word --- greed.

Despite what Gordon Gekko told us, it isn't always good. Working to wring every last dime out of any system leads to self destructive behavior. In the end, Gordon Gekko himself served as an example.

Have you checked your phone for malware? I have a very crappy phone, a 120$ samsung, and I don't struggle that much.

Have you tried using an adblocker?

> Have you tried using an adblocker?

Users shouldn't need adblockers to have a decent web experience! I find it just gobsmackingly absurd that ads make users pay with crippled load times and annoyance.

Homeowners shouldn't have door locks to have a decent homeowner experience!

it's just the state of the world, there is nothing you can do about it

>Have you checked your phone for malware?

Unfortunately there are no phones without malware in the form of at the very least android on the market, you can't even remove the malware.

And reddit's and twitter's programs, including those written in js, are malware too. I was just wondering why do they over-engineer malware that much

Not that android's not over-engineered though

Modern front end javascript frameworks are made to offload the compute from the server to the end user. This saves the company money while giving the end user a worse/slower experience and drained batteries. However when I point this out react zealots get angry but never hit back with good counter arguements.

Blame Facebook and Google for starting this awful trend.

Yes, I find it strange that the advocates of modern JavaScript based sites say they are faster when my experience as a user is the complete opposite, even on modern hardware.
While this is true, what compute does something like Twitter's UI really need? It's only displaying a list of short messages, which doesn't seem like a heavy task even for a netbook.
Exactly. A simple html page that can be served immediately requires UI framework engine load, multiple pre fetches, data calls and then the final render/re-renders. SSR/Hybrid does slightly better but still the time to first interaction is becoming worse every year.
>Modern front end javascript frameworks are made to offload the compute from the server to the end user

Which is why I roll my eyes every time someone recommends using vintage laptops from the days they were user upgradable (ThinkPads, MacBooks, etc) and scream from the top of the hills what a great experience that is and why everyone should join in on that.

Yeah I get it, as a HW engineer and tech enthusiast and big right to repair advocate, I also appreciate how upgradable older machines were and how easy to repair they were and I still keep some old machines kicking around, but the modern web is simply a jarring experience on those old machines compared to the experience on modern machines with the latest processors that I cannot in good conscience recommend it to people, if they can afford something decent.

If you live in Vim and the terminal and just use your laptop to SSH into stuff then yeah, they work just fine, but for consuming content on the modern web or heavy productivity tasks I can never recommend staying on vintage HW if your time has any value and if you can afford the upgrade to newer HW.

It's just not a nice experience and with most web-devs using M1 class machines it doesn't look like things will improve for the users on less powerful hardware which I guess here lies the problem.

In Hollywood/Netflix productions, video mastering is done on super accurate $50K monitors but they use in parallel a $300 Walmart grade TV, set to the shitty "Vivid" setting to make sure the final content also looks good on the average TV average consumers have in their homes.

I think the same thing should be done in web development. Feel free to develop the front-end on your kitted out $6000 M1 MacBook Pros but testing should also be done on your average $500 Walmart laptop to check it runs well.

It's fascinating how most of hackernews is arguing against making usable products for 70% of the internet users. Go on https://gs.statcounter.com/screen-resolution-stats and look at the screen resolutions used in africa, india, china and most of the non developed world. Do you think these devices are in any means powerful?

Let them eat Megabytes.

>It's fascinating how most of hackernews is arguing against making usable products for 70% of the internet users.

Don't know who you're referring to but I wasn't arguing against making usable products. I'm not even a web developer. I merely stated the facts grounded in the real world. Most of the web is dogshit slow. What is more likely to happen from the two: 1) Web-devs starting to optimize their code to run well on old hardware or 2) People upgrade to HW that can run the current web a little bit better.

> used in africa, india, china and most of the non developed world. Do you think these devices are in any means powerful?

I find it funny the moments the HN users try to shoe-horn the poverty of the third world into various arguments, as if that's somehow a consideration for most people in rich countries on how they conduct their lives. Spoiler alert, most people only care about what happens in their surrounding, and in their personal bubble, and that's it, and most app-devs and web-devs care about the userbase they can monetize the most, which is why some app devs, especially in the US, never port their apps to Android as well and are fine with only with the more affluent iOS majority userbase. So bringing up the third world poverty and inclusiveness in such contexts feels deeply ironic to me.

Yeah, I'd like that too, that web-devs and app devs would not discriminate between iOS and Android and all websites would run great on older machines, but that's not the truth. The truth is that most websites developed in the west are not optimized property therefore heavily favor those with modern machines and some apps are even Apple exclusive to the detriment of those left out.

I've seen Facebook offer Lite version of their mobile client and messaging apps but that's only due to their huge userbase in the developing world, which like ou said, owns mostly low-end devices.

It's the "WorldWideWeb".
Yes, it's the "WorldWideWeb", not the "EqualityWideWeb". Wealth inequality is a thing, and it exists even in the west. But how does that help us? The web is still slow at the end of the day for those on older HW. Does crying about it help how? Or does upgrading to newer and better HW help those who can afford to?

And if western web-devs cared so much about the experience of the users in poor countries, why haven't they optimized it already to run better on older devices?

webdevs ≠ corporations
What's your point exactly?

When most people go online they go to consume content on the websites of the biggest corporations like Google, YouTube, Netflix, Reddit, Facebook, TicTok and so on.

That's what most of the internet is for most average consumers.

The fact that indie devs exist who care about well optimized websites doesn't change this.

The cormobidty of keeping a service alive and renewing it by forcing more and more unwanted features on the users is a fact. Every manager wants to parade around the new shiny thing without listening to their development team. It shows that you are not a webdev because you don't know the inner workings of a big tech corp if you really think it's just some indie devs that care about speed and optimization. The devs very much care.
By web-devs I didn't mean your average employee but any company doing web development and making bad decisions.

I have nothing against the individuals doing web-development, it's just a job to eat and pay rent.

I can't believe people are missing the obvious here.

Why are websites now less and less optimized? Because people use apps and APIs. Ergo, they're just fetching the data set.

CloudFlare Pages and GitHub Pages are bringing in a new era of fast, static websites. It isn't all doom and gloom. Furthermore, plenty of people are now using static site generator plugins with CMS like WordPress so that there's no database access required for each page load, which is really what slows things down.

>CloudFlare Pages and GitHub Pages are bringing in a new era of fast, static websites.

Static site hosting with a brand name smashed onto it is a new era? GitHub itself btw is broken on palemoon for one thing. Not here to defend palemoon but it does show one thing: GitHub's frontend is over-engineered.

If you think this is simply "hosting" then you're out of touch with why it's interesting. Instead of being served from a central server ala a VPS or colocated box, or even a central server augmented with a CDN, it is instead served from a ton of geographically-local servers. Oh yeah, and it starts at free, with unlimited bandwidth. This is without getting into Workers et al.

Not a GitHub Pages user, also not a Palemoon user, so couldn't say, but Palemoon is niche. There's not even an official macOS version.

>it is instead served from a ton of geographically-local servers.

All owned by the same company. I'd agree about it being revolutionary if it was on some distributed p2p network like freenet, torrent, ipfs etc. But to call some company doing things in a slightly different manner a new era? Come on

I said "interesting", not "revolutionary", to my knowledge anyway. If I did say "revolutionary", even I don't agree with me.
Yeah, this is why I turn more and more to alternative front-ends like Invidious for YouTube, scribe.rip for Medium, teddit for Reddit, and so on. On that note, I'm actually starting to feel like online services should be required to allow (or be forbidden from explicitly blocking) alternative front-ends. I should be allowed to interface with APIs with whatever client I want, and I am beginning to think that should be a right. Currently people using software and online services are basically completely at the mercy of software vendors who have basically zero motivation to respect the user. I'm not really willing to subject myself to very much BS on the web anymore and without these alternative front-ends I'd just completely opt out of the respective services.

Oh FWIW my personal site is static files built with Hugo SSG, and a minimum of JS. I don't think I will ever use a server-side technology for my personal site again. I do think a growing number of users are "seeing the light" in this regard.

How many developers in the US work at companies targeting a worldwide audience? Out of those that do, how many have one site that targets a worldwide audience?
How often do you actually browse with old hardware? I have a 2009 MacBook Pro that I and my family use almost every day for basic web browsing. It has no trouble with Reddit, YouTube, Facebook, PBS Kids, even newspaper sites. We do block ads, which probably helps.

Is it as fast as my M1 MacBook Air? No, of course not. Is it unusably slow? No.

>How often do you actually browse with old hardware?

On a daily basis.

It's a matter of perspective in the end. I upgraded from a notebook with a 6th gen Intel chip which I thought was fine to a notebook with a 5th gen Ryzen and the difference blew me away and made me realize how sluggish things were on my older machine in comparison.

There's nothing wrong per se with my old machine, on it's own it's fine, but the newer on is so much faster in comparison, it's night and day for me.

For my parents the old machine is fine not it's own but they're coming from one with a core 2 quad so there's that perspective.

$500 Wal*Mart laptop? Why be rich uncle pennybags when you could instead use an RPi4?

The only common tasks on the Pi4 that have unacceptably slow performance are web browsing and any IO speeds for the primary SD card.

My web browsing VM host is a Thinkpad X230 with an i7-3520M and it runs browsers just fine. It only slows down when I have too many loaded tabs in firefox, and that is mainly the firefox process itself (other VMs are unaffected).

I'm sure if I upgraded CPU, things would become a bit quicker and I would perceive the older performance as slow, similar to every computer upgrade from 1990-2010. But it's really not as dire as you're making it out to be.

Also the javascript heavy web is for the most part an entertainment medium. I'm loading a link to Twitter (one of the most pointlessly heavy sites) and it takes several seconds, I'm already wasting time and so wasting slightly more isn't a big deal. If I wanted to optimize that path, I'd just not click the link to Twitter in the first place. Or if I needed to use Twitter professionally, I'd install a responsibly-developed third party client.

(Having said that the M1 is interesting for its low power consumption)

Yeah, I do most of my web work on $2k-8k workstations but then I test on a pretty broad range of devices, including phones, laptops (currently using one from 2013 to type this msg), "obsolete" OSes and even text-mode browsers and of course screen readers. I believe in the broad universal accessibility of the web as was originally promised and try to ensure that same degree of accessibility whenever possible. It's hard to gauge how common that mentality is, but I hope it isn't too rare!
Considering how ludicrously fast modern computers are, offloading your calculations to them (on its own) cannot possibly explain why web sites are so slow. Games routinely perform millions of trigonometry calculations in tens of milliseconds, web pages render some images and text!

Edit: Ugh, yes, I know network is part of the equation. Parent specifically called out client-side rendering though and that's what I'm responding to.

It's simple: websites aren't static like they used to be. CMS query a database for each page load, which is inefficient as hell for serving up what's essentially just an article with no interactive elements, hence the use of static site generators on top of a CMS, or CloudFlare Pages, or GitHub Pages.
(comment deleted)
You solve this by putting a static cache in front of your CMS. It's a very common web architecture. No need to offload anything to the client.
When were websites that did anything, ever “static”? I was creating websites that had to read from a database in 2001.
This is the point: the overwhelming majority of websites, especially blogs, articles, and general information such as store info, services, portfolio, opening times et al, could all be static instead of running a database query on every page load.

Caching on CMS like WordPress via plugins helps, but they still query a database on each page load. Ergo, the rise in popularity of static site generators even on top of WordPress. Not everything needs to read from a database for every page load.

tl;dr, not all websites need to "do" anything other than serve static information, but the way in which websites are commonly created and served is piss-poor. Just because the served content is static files doesn't mean that a CMS can't generate it if users want a graphical editor in their browser, and still want their theme of choice.

Slow networks (not necessarily yours, but all the servers in between)
Pretty sure reddit or twitter would be just as hellish to use if you had their frontend files stored locally

Oh wait, they already are cached locally.

I don't think the problem is "offload[ing] the compute from the server to the end user".

It's sending incredible bloat powered by inefficient frameworks and programming practices, and careless use of the bandwidth.

There are frameworks and programming practices that allow doing the same things without burning people's computers and making people wait. Making people wait and burning their bandwidth and data plan is just disrespectful but nobody cares as long as the app works fine on the customer's new phone or laptop.

I'm saying it as someone who does frontend development so it's not just guessing.

I'm writing a Svelte SMS app whose whole frontend is 3 times less heavy than just React itself, and fast on underpowered hardware. I've also built a networked Scrabble game that's instantaneous on an iPad from 2010. I've not focused on performance. This stuff is not impossible to figure out. It's just that these apps don't need to produce and diff entire virtual doms on every mouse move, do not come with custom web fonts, do not embed an entire icon pack of which 10 icons are used, do not use a 100 kb CSS reset framework, do not use 4K images to draw buttons and do not bundle the whole npm planet to work. The amount of features provided by current browser engines is incredible and it is possible to build amazing things by embracing them without breaking a sweat.

React and this state of the frontend world depress me.

It's okay to do client side computation. Just don't do it by sending megabytes of interpreted code for that.

I agree with this take. Even though I avoid the clusterfuck of the front end ecosystem like the plague, I have a coworker who is a big proponent of Svelte and from what I’ve seen, it’s really well optimized.

That being said, if I were a front end developer, I would look at the job openings and see most jobs ask for React experience and be more concerned with resume driven development.

It's clear that React is the winning framework currently, with probably Angular and Vue following. I would not blame anyone looking to be employed as a frontend developer to go with React.

That's part of the problem and it's a vicious circle.

And most people like React and I can understand that. It's easy to use and understand. At least at first (debugging subtle (performance or not) bugs related to React's model is… not always easy but these bugs usually arrive when your app is already big enough. This is probably true of any framework).

What's more, most people are not that sensitive to performance and if they are, they might not be aware of React's problems before learning it and practicing (which is also true of any framework).

And also, nobody is fired for picking React.

>Modern front end javascript frameworks are made to offload the compute from the server to the end user. This saves the company money

Does it? I doubt hiring people to produce dozens of megabytes of compressed (!) javascript costs less than the cpu cycles it takes to produce html, especially if that's succinct html, not said megabytes of diarrhea. And "people" here almost definitely does not mean "that one guy who makes the frontend" - no single human could ever produce such abomination. For one thing he just wouldn't have the time! And then if we're frank there are no traces of humanity in twitter's front end - only the pungent smell or festering corporate development.

> Modern front end javascript frameworks are made to offload the compute from the server to the end user. This saves the company money while giving the end user a worse/slower experience and drained batteries.

I think it actually has a lot more to do with mobile. Back in the day you could just send everyone the same HTML/JS/CSS rendered on your server and it would work for everyone.

Now things are more complicated: people want "native apps" on their Android and iOS and whatnot, and also want a "desktop" version and a "web version".

So you build a "light" server API, and put a lot of logic in the frontend. Not to save money, but because all the frontend logic is different on every platform (and in different languages: JS on web, Java or Kotlin on Android, Obj-C or Swift on iOS).

Mobile complicated these things a lot more than people realize.

But with mobile apps, you can cache more assets on the client and in the case if iOS, as much work as Apple does to optimize WebKit. Objective C/Swift is still much faster.

Mobile apps are also more bloated than needed. But at least you only have to load them once.

Then again, client side frameworks started taking off in 2012.

>Back in the day you could just send everyone the same HTML/JS/CSS rendered on your server and it would work for everyone.

HN itself works perfect on mobile or anywhere for that matter and is very lightweight. I don't think it's because they optimized it. They just didn't fuck with it.

>Now things are more complicated: people want "native apps" on their Android and iOS

Do people want those? I believe it's just companies shoving those down people's throats

For HN, this is also an "I have seen the enemy and he is us" situation.

I say this with love, but judging from every week threads talking about half-million total comp at FANGs, there is probably no internet forum more responsible for the state and direction of the modern web than HN.

With Mega Corporations themselves changing back to server side rendering due to the slow web frameworks like React, your reasoning stands vindicated.[1]

As a side note, I would also like to mention that OP in spite of having probably the fastest hand held computer wasn't able to mitigate some of the issues of the web like useless scripts, Ads etc. because Apple doesn't provide that control to the users; Where an android at fraction of the cost with Firefox and UBlock Origin/No Script could have provided a better web experience.

[1] https://twitter.com/amilajack/status/1484970825568505856

You're talking about the functionalities shown to the user.

I'm pretty sure Facebook tracks what you look at and what you scroll past, wouldn't be surprised if Twitter did too, for example.

The desperate search for monetization. Twitter is free, so it will get worse until you stop using it or they somehow manage to get you to click on an ad. Same with Reddit.

Sometimes this is the desperate attempt to neutralize a competitor by cloning it. That's why Twitter copied "spaces" from Clubhouse, and Youtube and Instagram have copies of Tiktok in them (mostly hosting content with tiktok watermarks on, hilariously)

Getting you to click on ads does not takes megabytes of JavaScript diarrhea.
Yeah but a completely-dynamically-rendered web app slathered in frameworks for A/B testing, feature flags, analytics & tracking, cookie permissions, media middleware, localization, theming and browser compatibility sure does.
>completely-dynamically-rendered web app slathered in frameworks for A/B testing, feature flags, analytics & tracking, cookie permissions, media middleware, localization, theming and browser compatibility

Getting you to click on ads does not take that. The only point in the list that makes money is spying I mean "analytics and tracking" but that doesn't take dozens of megabytes of js diarrhea and a thousand frameworks calculating DOM diffs and whatnot

Because todays web development is all about developer experience not user experience.

It is insane when you think about how much memory has been used to fly to the moon and how much it requires to run todays favorite chat app.

I wouldn't call having to learn a million frameworks with a million layers of abstraction to accomplish the same stuff you could accomplish with plain html in a both human- and machine-time-consuming manner a pleasant developer experience.

Quite the contrary I find it almost insulting to have to spend time on this.

I do not claim the developer experience is a success story. But it is how the frameworks are trying to win developers.
I just checked and on my 2020 phone Twitter opens and loads in about 1-2s on Chrome Android. Functionality of some mobile sites like reddit and Facebook is limited but the js bloat argument seems exaggerated and if it's that much slower for OP I'm guessing it's due to their connection or some other issue.
Note that most of the open source / hobbyist web actually works properly.

I don't think the answer is primarily that it's a matter of money - I think most large companies end up with "web design by committee".

If Zuckerberg redesigned the entire Facebook homepage from top to bottom it'd probably be a hell of a lot faster than it is now. But instead it's the product of an enormous corporate structure and there is no-one to step in and say "guys, this is shit, start again and let's do it properly, no you can't have your 1 meg tracker in there, not even one of them, write a barebones one".

One man or small team software projects in general are better for this reason as well, with a massive team over time cruft accumulates.

... with a massive team over time cruft accumulates.

A massive team only occurs with a large corporation attempting to monetize and wring every last dime out of the product.

So in other words --- greed.

>One man or small team software projects in general are better for this reason as well

I think these fall on both sides of the bell curve. One person can design something clean and beautiful, and one person can also be a one-man mess of bad decisions. I've picked up after both.

One man would hardly ever design something as abhorrent as twitter or facebook frontend - he just wouldn't have the time
>"guys, this is shit, start again and let's do it properly, no you can't have your 1 meg tracker in there, not even one of them, write a barebones one".

Is it even really about trackers? Even with adblocker on purging 50% of the page, these things are still slow.

I think a fair amount of it is just organizational dynamics, game theory, human nature, etc.

When you build an organization around one of these sites/apps, as the product ages, each work group ends up trying to justify their existence. It's very rare that anyone periodically tries to see if the current headcount and budget for any group still makes sense, and reduces or eliminates groups as that happens. This spread and growth also means the groups all end up with different ideas of what the overall goals, measures, etc, are.

So they all grow based not on whether they need to, but because it's human nature to empire build. And to do that, you need to be "busy". That busy work eventually pushes out to prod, and ends up as more bloat. Multiply that by each group, and you get what you're seeing.

I thought Office Space (1999) was an exaggeration. Maybe back in its day it was but apparently today it is an understatement.

I'd like to see an Office Space remake where the main character's job isn't the 2000 switch but building a bloated frontend with React.js + Vue.js + Soy.js with blockchain, machine learning, dependency injection, inversion of control and scrum+agile as well as the revolutionary framework buzzword.js weighing just under a 100 megs.

I think it's largely Parkinson's law.

Computers are faster so it becomes viable to build slower, more complex and less efficient systems.

By large, computer systems have similar capacities as they did 20 years ago, and similar performance too; only difference is that back then we accomplished the same thing on a potato processor, and today we use a world brain.

That doesn't explain over-engineering. I would understand building slower and less efficient systems if that took less resources. Or more complex systems if it achieved something. But modern web takes more resources to develop and achieves nothing
I think it does. Having an enormous hardware resources means we can piece together software from components others have built, which in turn are pieced together from components others have built, and built on frameworks built from libraries built from components built from dependencies.

Today if you want to print "1 item" or "2 items", many would probably pull a library. 25 years ago, you would either build the logic yourself, or consider the logic unnecessary clutter and write snprintf(buffer, 25, "%d item(s)")

The resources available means most developers don't even consider performance until it's unbearably slow. I do think this is dumb, we could do so much more if we gave it half a consideration, but as things are, we don't.

But I totally get your frustration with how shitty web services are these days. Just to prove to myself how ridiculous it is to wait for pages to load as long as they do, I built a personal wrapper[1] for Reddit that uses static rendered HTML. reddit.com has like a 6 second page load. I'm at like 300ms at best if you have high ping to my server, and usually serve sub 10 Kb-pages (to Reddit's nearly 10 Mb-payloads).

[1] https://reddit.marginalia.nu/

>Today if you want to print "1 item" or "2 items", many would probably pull a library. 25 years ago, you would either build the logic yourself, or consider the logic unnecessary clutter and write snprintf(buffer, 25, "%d item(s)")

Well that's what I am talking about. Hardware resources allow devs to be lazy, to not optimize.

But snprintf(buffer, 25, "%d item(s)") is easier than learning and setting up whatever library it is you want to pick, and thus is the lazy solution. You don't need to think about optimization to pick it. On the contrary you'd need some good reason to not pick it.

Growing hardware resources can explain the growing popularity of higher level, interpreted languages for example - they take resources and save time.

But it can't explain e.g. twitter, and that's what my question is all about. It would actually be the lazy solution to make the frontend in pure html. Yet they chose whatever unholy mess it is they chose. It took them more time and resources to build AND it takes more computer resources. So it's like anti-optimization - but it still takes dev time. And I can't wrap my head around it, why would they do this?

You'd think it works like this: you may trade features and dev time for optimizations. But they trade dev time for the opposite of optimizations, and essentially no features.

It's like if they paid a street sweeper to make streets messy. And they didn't just pay this one guy to run around the whole city throwing garbage around - they hired teams of guys to meticulously lay out litter in the streets. Nobody asked for that litter, it achieved nothing, didn't even profit the people doing it. But they spend tons of money on paying those guys, training them, team building, organizing scrum meetings...

I think this is a major factor. A lot of the hardware gains over the that period have been used by developers to make their own lives easier.

When I was in university made a small 2d game engine in J2SE. Performance wasn't great, so I had to use sprite sheets, pallette swaps, masking 256 color images etc just to make things playable in most cases.

When I graduated I decided to get into mobile development, to my surprise doing things like just dumping a bunch transluscent PNG's into the workspace were recommended in the docs. Seems like the web had a similar trajectory.

I think this question embeds two assumptions that aren’t constructive.

First of all, it associates the “modern web” with Twitter and Reddit. There is more to modern websites and apps than those two companies. There are a lot of beautiful and useful websites that are built with modern tools.

Second, the question assumes users are hated. Quite the opposite is often true. We should assume most app and website builders want users to return and want to appeal to users interests. Designing with users needs is central to the practice of UX design and research.

I think this question could be rephrased to. Why do twitter and Reddit use perceived anti-patterns instead of good UX? The answers being they can be effective tools to drive ad revenue, increase time spent with the service and increase user base to name a few.

Which mainstream website is actually nice to use? The only one that I use on a regular basis that is pretty good is GitHub.

The AWS console is slowly getting more consistent.

Plenty of sites I use daily have nice features and reliability and while they aren't all perfect -- they help me do my job, learn and communicate. It's pointless to go down the rabbit-hole of identifying which sites I find useful or interesting with those that I don't enjoy using. Opinions will vary, but my point is that it's not in any way helpful to make generalizations about the "modern web" hating users. The "modern web" is a meaningless term that (in the OPs question) seems to define as the definition of "modern web". These two sites do not represent all modern websites in any way, they are mainstream content driven apps with the end goal of monetization, eyeballs, and user persona profiling. How are nitter or teddit not also the modern web?
>There are a lot of beautiful and useful websites that are built with modern tools.

Mind sharing some?

>Why do twitter and Reddit use perceived anti-patterns instead of good UX

I'm by far not talking about UX alone.

Ad monitization and development abstractions.

Platforms gotta monetize by gathering/selling user data. Developers want abstractions to make programming more pleasant.

It’s kind of hilarious that our advances in HW just means that our software resource usage expands to fill the gap.

> Twitter takes 20 seconds to load on my phone made in 2020.

I think they expect you to be so enthralled with it that you will keep it open, only having to actually go through loading it when you reboot the phone for OS updates.

Facebook has always been poorly made. Remember when notifications and chat was just _broken_ all the time? I think Twitter used to be better and Reddit certainly did.

I blame poor engineers (just because they're paid a lot doesn't mean they are good)