Ask HN: Why does the modern web hate users?
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 ] threadhttps://joinpeertube.org/
You can't vote twitter or youtube out of power.
You can't code their wealth away https://www.youtube.com/watch?v=FEU632_Em3g
The power of those very large platforms are their content, not their tech.
"We simply don't expect software to work anymore." - Jonathan Blow
[0] https://news.ycombinator.com/item?id=30097248
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...
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 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.
it's just the state of the world, there is nothing you can do about it
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
Blame Facebook and Google for starting this awful trend.
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.
Let them eat Megabytes.
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.
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?
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.
I have nothing against the individuals doing web-development, it's just a job to eat and pay rent.
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.
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.
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.
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
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.
Is it as fast as my M1 MacBook Air? No, of course not. Is it unusably slow? No.
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.
The only common tasks on the Pi4 that have unacceptably slow performance are web browsing and any IO speeds for the primary SD card.
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)
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.
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.
Oh wait, they already are cached locally.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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 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
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.
Quite the contrary I find it almost insulting to have to spend time on this.
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.
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.
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.
Is it even really about trackers? Even with adblocker on purging 50% of the page, these things are still slow.
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'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.
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.
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/
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...
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.
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.
The AWS console is slowly getting more consistent.
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.
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.
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.
I blame poor engineers (just because they're paid a lot doesn't mean they are good)