The modern web is an insult to the idea of efficiency at practically every level.
You cannot convince me that isolation and sandboxing requires a fat 4Gb slice of RAM for a measly 4 tabs.
The modern web is an insult to the idea of efficiency at practically every level.
You cannot convince me that isolation and sandboxing requires a fat 4Gb slice of RAM for a measly 4 tabs.
For anyone unsure: Jevon's Paradox is that when there's more of a resource to consume, humans will consume more resource rather than make the gains to use the resource better.
Case in point: AI models could be written to be more efficient in token use (see DeepSeek), but instead AI companies just buy up all the GPUs and shove more compute in.
For the expansive bloat - same goes for phones. Our phones are orders of magnitude better than what they were 10 years ago, and now it's loaded with bloat because the manufacturer thinks "Well, there's more computer and memory. Let's shove more bloat in there!"
Case in point: AI models could be written to be more efficient in token use
They are being written to be more efficient in inference, but the gains are being offset by trying to wring more capabilities out of the models by ballooning token use.
Which is indeed a form of Jevon's paradox
Costs have been dropping by a factor of 3 per year, but token use increased 40x over the same period. So while the efficiency is contributing a bit to the use, the use is exploding even faster.
Jevon's Paradox is that when there's more of a resource to consume, humans will consume more resource rather than make the gains to use the resource better.
More specifically, it's when an improvement in efficiency cause the underlying resource to be used more, because the efficiency reduces cost and then using that resource becomes even more economically attractive.
So when factories got more efficient at using coal in the 19th century, England saw a huge increase in coal demand, despite using less coal for any given task.
Also Eli Whitney inventing the cotton gin to make extracting cotton less of a tedious and backbreaking process, which lead to a massive expansion in slavery plantations in the American South due to the increased output and profitability of the crop.
This happens not only with efficiency gains. There is risk overcompensation, which feels kinda the same. Cars that are more secure cause reckless driving, which in turn is the reason accidents happen more often, which eat into the safety gains.
I always felt American car companies were a really good example of that back in the 60s-70s when enormously long vehicles with giant engines were the order of the day. Why not bigger? Why not stronger? It also acted as a symbol of American strength, which was being measured by raw power just like today lol.
This also reminds me of the way video game programmers in the late 70s/early 80s had such tight limitations to work within that you had to get creative if you wanted to make something stand out. Some very interesting stories from that era.
I also love to think about the tricks the programmer of Prince of Persia had employed to get the "shadow prince" to work...
I'm pretty sure the "unused RAM is wasted RAM" thing has caused its share of damage from shit developers who took it to mean use memory with reckless abandon.
Would be nice if I could force programs to use more ram though. I actually have 100GB of DDR4 my desktop. I bought it over a year ago when DDR4 was unloved and cheap. But I have tried to force programs to not be offloading as much. Like Firefox, I hate that I have the ram but it's still unloading webpages in the background and won't use more than 6GB ever.
Will disabling the swap file fix that?
Don't fully disable swap on Windows, it can break things :-/
I didn't know that, that used to not be the case.
Maybe it has changed again, but in the past I gave it a try. When 16 GB was a lot. Then when 32 GB was a lot. I always thought "Not filling up the RAM anyway, might as well disable it!"
Yeah, no, Windows is not a fan. Like you get random "running out of memory" errors, even though with 16 GB I still had 3-4 GB free RAM available.
Some apps require the page file, same as crash dumps. So I just set it to a fixed value (like 32 GB min + max) on my 64 GB machine.
Programs that care about memory optimization will typically adapt to your setup, up to a point. More ram isnt going to make a program run any better if it has no use for it
Set swappiness to 5 or something similar, or disable swap altogether unless you're regularly getting close to max usage
With 32 and 64 GB systems I've never run out of RAM, so the RAM isn't the issue at all.
Optimization just sucks.
Decent sized for what?
Creative writing and roleplay? Plenty, but I try to fit it into my 16 GB VRAM as otherwise it's too slow for my liking.
Coding/complex tasks? No, that would need 128GB and upwards and it would still be awfully slow. Except you use a Mac with unified memory.
For image and video generation you'd want to fit it into GPU VRAM again, system RAM would be way too slow.
In most cases, you either optimize the memory, or you optimize the speed of execution.
Having more memory means we can optimize the speed of execution.
Now, the side effect is that we can also afford to be slower to gain other benefits: Ease of development (come in javascript everywhere, or python) at the cost of speed, maintainability at the cost of speed, etc...
So, even though you dont always see performance gains as the years go, that doesn't mean shit devs, it means the priority is somewhere else. We have more complex software today than 20 years ago because we can afford not to focus on ram and speed optimization, and instead focus on maintainable, unoptimized code that does complex stuff.
Optimization is not everything.
unoptimized code that does complex stuff.
You can still have complex code that is optimized for performance. You can spend more resources to do more complex computations and still be optimized so long as you're not wasting processing power on pointless stuff.
For example, in some of my code I have to get a physics model within 0.001°. I don't use that step size every loop, because that'd be stupid and wasteful. I start iterating with 1° until it overshoots the target, back off, reduce the step to 1/10, and loop through that logic until I get my result with the desired accuracy.
Of course! But sometimes, most often even, the optimization is not worth the development to get it. We're particularly talking about memory optimization here, and it is so cheap (or at least it was... ha) that it is not worth optimizing like we used to 25 years ago. Instead you use higher level languages with garbage collection or equivalents that are easier to maintain with and faster to implement new stuff with. You use algorithms that consume a fuck ton of memory for speed improvements. And as long as it is fast enough, you shouldn't over optimize.
Proper optimization these days is more of a hobby.
Now obviously some fields require a lot more optimization - embedded systems, for instance. Or simulations, which get a lot of value from being optimized as much as possible.
Unfortunately, a lot of dev studios tend to just build their games on the highest end systems they can and don't bother checking for lower-end hardware. For a lot of systems, there's plenty of programs that don't run "good enough". And sometimes I'll even have issies with M$ applications on decent workstation hardware. Notes and Teams are frustratingly slow to work with sometimes
I still remember playing StarCraft 2 shortly after release on a 300$ laptop and it running perfectly well on medium settings.
Looked amazing. Felt incredibly responsive. Polished. Optimized.
Nowadays it’s RTX this, framegen that, need SSD or loading times are abysmal, oh and don’t forget that you need 40gb of storage and 32gb of ram for a 3 hour long walking simulator, how about you optimize your goddamn game instead? Don’t even get me started on price tags for these things.
Software and game development is definitely a spectrum though, but holy shit is the ratio of sloppy releases so disproportionate that it’s hard to see it at times.
StarCraft 2 was released in 2007, and a quick search indicates the most common screen resolution was 1024x768 that year. That feels about right, anyway. A bit under a million pixels to render.
A modern 4K monitor has a bit over eight million pixels, slightly more than ten times as much. So you'd expect the textures and models to be about ten times the size. But modern games don't just have 'colour textures', they're likely to have specular, normal and parallax ones too, so that's another three times. The voice acting isn't likely to be in a single language any more either, so there'll be several copies of all the sound files.
A clean Starcraft 2 install is a bit over 20 GB. 'Biggest' game I have is Baldur's Gate 3, which is about 140 GB, so really just about seven times as big. That's quite good, considering how much game that is!
I do agree with you. I can't think of a single useful feature that's been added to eg. MS Office since Office 97, say, and that version is so tiny and fast compared to the modern abomination. (In fact, in a lot of ways it's worse - has had some functionality removed and not replaced.) And modern AAA games do focus too much on shiny and not enough on gameplay, but the fact that they take a lot more resources is more to do with our computers being expected to do a lot more.
'Biggest' game I have is Baldur's Gate 3, which is about 140 GB, so really just about seven times as big. That's quite good, considering how much game that is!
Not at all. For example, Rimworld saves all the map and world data in one big XML (which is bad btw, don't do that): about 2 million lines @75 MB, for a 30-pawns mid-game colony.
So you see, Data is not what uses space. But what uses space instead is, if you don't properly re-use objects/textures (so called "assets"), or even copy and repack the same assets per level/map, because that saves dev time.
Ark Survival Evolved, with "only" about 100 GB requirement, was known as a unoptimized mess back then.
Witcher 3 mod "HD Reworked Next-Gen" has barely 20 GB with 4k textures and high-res meshes. And you can't say that Witcher 3 is not a vibrant and big open world game.
Why are you comparing the most common screen resolution in 2007 to a 4k monitor today? 4k isn't the most common today. This isn't a fair comparison.
1080p is still the most common, though is 1440p is catching up very fast
BTW the demand for bigger screens and bigger resolutions is something I don't easily understand. I notice some difference between 1366x768 and 1920x1080 on a desktop, but the difference from further increase is of so little use for me I'd classify it as a form of bloat. If anything, I now habitually switch to downloading 480p and 720p instead of higher definition by default because it saves me traffic and battery power, and fits much more on a single disk easy to back up.
Pixel density is more important than resolution. Higher resolution is only useful outside of design work if the screen size matches
IMO the ideal resolutions for computer monitors is 24" @ 1080p, 27" @ 2k, and 32"+ at 4k+. For TV it's heavily dependant on viewer distance. I can't tell the difference between 2k and 4k on my 55" TV from the couch.
the main thing I noticed with a 768p monitor was gnome being unusable thanks to their poor ui density
Excel is sooo much than it used to be in Office 97. And it's way better than any other spreadsheet software I've tried.
Speaking of, anyone know of any alternative that handles named tables the same as Excel? Built-in filtering/sorting and formulas that can address the table itself instead of a cell range?? Please?
I've been hosting grist for a while and it is quite nice. Wasn't able to move all the stuff from classic spreadsheets though
Then factorio dev blog comes in and spend months optimizing the tok of one broken gear in the conveyor belt to slightly improve efficiency.
Absolutely. Every time I play a game from before 2016 or so it runs butter smooth and looks even better than modern games in many cases. I don't know what we're doing nowadays.
Comparing a 20 year old game with FMV sequences at 1080p is certainly a take 🤣.
Websites are probably a better example; as the complexity and bloat has increased faster than the tech.
Well yeah, why would I learn html when I can learn React?!?
(/s but I actually did learn React before I had a grasp of semantic Html because my company needed React devs and only paid for React-specific education)
Thought leaders spent the last couple of decades propaganding that features-per-week is the only metric to optimize, and that if your software has any bit of efficiency or quality in it that's a clear indicator for a lost opportunity to sacrifice it on the alter of code churning.
The result is not "amazing". I'd be more amazed had it turned out differently.
Fucking "features". Can't software just be finished? I bought App. App does exactly what I need it to do. Leave. It. Alone.
No, never! Tech corps (both devs and app stores) brainwashed people into thinking "no updates = bad".
Recently, I have seen people complain about lack of updates for: OS for a handheld emulation device (not the emulator, the OS, which does not have any glaring issues), and Gemini protocol browser (gemini protocol is simple and has not changed since 2019 or so).
Maybe these people don't use the calculator app because arithmetic was not updated in a few thousand years.
A big part of this issue is mobile OS APIs. You can't just finish an android app and be done. It gets bit rot so fast. You get maybe 1-2 years with no updates before "this app was built for an older version of android" then "this app is not compatible with your device".
arithmetic was not updated in a few thousand years.
Oh boy, don't let a mathematician hear this.
"More AI features"? Of course we can implement more AI features for you.
It's kind of funny how eagerly we programmers criticize "premature optimization", when often optimization is not premature at all but truly necessary. A related problem is that programmers often have top-of-the-line gear, so code that works acceptably well on their equipment is hideously slow when running on normal people's machines. When I was managing my team, I would encourage people to develop on out-of-date devices (or at least test their code out on them once in a while).
Premature optimisation often makes things slower rather than faster. E.g. if something's written to have the theoretical optimal Big O complexity class, that might only break even around a million elements, and be significantly slower for a hundred elements where everything fits in L1 and the simplest implemention possible is fine. If you don't know the kind of situations the implementation will be used in yet, you can't know whether the optimisation is really an optimisation. If it's only used a few times on a few elements, then it doesn't matter either way, but if it's used loads but only ever on a small dataset, it can make things much worse.
Also, it's common that the things that end up being slow in software are things the developer didn't expect to be slow (otherwise they'd have been careful to avoid them). Premature optimisation will only ever affect the things a developer expects to be slow.
It’s kind of funny how eagerly we programmers criticize “premature optimization”, when often optimization is not premature at all but truly necessary.
I will forever be salty about that one time I blamed of premature optimization for pushing to optimize a code that was allocating memory faster than the GC could free it, which was causing one of the production servers to keep getting OOM crashes.
If urgent emails from one of the big clients who put the entire company into emergency mode during a holiday is still considered "premature", then no optimization is ever going to be mature.
Optomisation often has a cost, weather it's code complexity, maintenance or even just salary. So it has to be worth it, and there are many areas where it isn't enough unfortunately.
And that lazy mentality just passes the cost to the consumer.
How is that mindset lazy? Unhappy customers also have a cost! At my last job the customer just always bought hardware specifically for the software as a matter of process, partly because the price of the hardware compared to the price of the software was negligible. You literally couldn't make a customer care.
In industrial software, I'm sure performance is a pretty stark line between "good enough" and "costing us money".
The pattern I've seen in customer facing software is a software backend will depend on some external service (e.g. postgres), then blame any slowness (and even stability issues...) on that other service. Each time I've been able to dig into a case like this, the developer has been lazy, not understanding how the external service works, or how to use it efficiently. For example, a coworker told me our postgres system was overloaded, because his select queries were taking too long, and he had already created indexes. When I examined his query, it wasn't able to use any of the indexes he created, and it was querying without appropriate statistics, so it always did a full table scan. All but 2 of the indexes he made were unused, so I deleted those, then added a suitable extended statistics object, and an index his query could use. That made the query run thousands of times faster, sped up writes, and saved disk space.
Most of the optimization I see is in algorithms, and most of the slowness I see is fundamentally misunderstanding what a program does and/or how a computer works.
Slowness makes customers unhappy too, but with no solid line between "I have what I want" and "this product is inadequate".
How is that mindset lazy?
Are you really asking how it's lazy to pass unoptimized code to a customer and make their hardware do all the work for you because optimization was too costly?? Like I get that you are in an Enterprise space, but this mentality is very prevalent and is why computers from today don't feel that much faster software wise than they did 10 years ago. The faster hardware gets, the lazier devs can be because why optimize when they've got all those cycles and RAM available?
And this isn't a different at you, that's software development in general, and I don't see it getting any better.
It's not just software development, it's everywhere. Devices are cheap, people are expensive. So it's not lazy, he's being asked to put his expensive time into efforts the customer actually wants to pay for. If having him optimize the code further costs way more than buying a better computer, it doesn't make sense economically for him to waste his time on that.
Is that yet another example of how the economy has strange incentives? For sure, but that doesn't make him lazy.
I never called them lazy, I stated that the mentality is lazy, which it is. Whether or not that laziness is profit driven, it still comes down to not wanting to put forth the effort to make a product that runs better.
Systemic laziness as profit generation is still laziness. We're just excusing it with cost and shit, and if everyone is lazy, then no one is.
If cost is a justification for this kind of laziness, it also justifies slop code development. After all, it's cheaper that way, right?
Wouldn't he only be lazy if he's not doing anything else more productive instead?
He gets payed to do a specific job, and does it the best way possible given the constraints. I don't see how you find lazyness in that.
The customer simply isn't willing to pay the extra time for it to be optimized, and he ain't doing it for free.
I don't know which job you do, but do you spend a lot of voluntary overtime just to do things the customer isn't even asking or paying for just because you think it's better?
Wouldn't he only be lazy if he's not doing anything else more productive instead?
Of course not. It's rather easy to see how one can choose to be lazy and not do hard work while being "productive" doing easier tasks. But this isn't about the dev, it's about the culture.
He gets payed to do a specific job,
Again, stop thinking I'm calling the dev lazy, you're completely missing my point.
and does it the best way possible given the constraints. I don't see how you find lazyness in that.
This is the laziness. The constraints imposed by management to get new features out the door at the expense of making their existing features work better is a hallmark of the current development era.
I'm not even going to respond to the last bit because it's entirely irrelevant to (and completely misunderstands) the point I'm making.
Can you then give me your definition of "lazyness" The dictionary just gives me "the quality of being unwilling to work or use energy; idleness."
And i don't see it anywhere in this situation. They're asked to do a job a certain way (or for management, to make sure it happens in a certain way), and they do that to the best of their ability.
Could they do it better from an performance/software engineering standpoint if they had infinite time/budget? for sure. But that's not the world we live in.
In a way I understand him, the culture is too one sided in its values. There isn't a balance or a good middle ground. If you appreciate irony, it's too optimised for "features". For which I generally agree. So the people upholding these values are too lazy to find the balance.
As an aside, every Dev I know would love to endlessly iterate and improve a single thing. So I understand finding that balance isn't easy either.
The "optimized for features" bothered me a bit of concept.
I think i now narrowed it down on how i see it: It's optimized for predictability, and lack of need of really skilled people. Real optimization requires real skill, and is inherently unpredictable. You can aim high, but how achievable it is, isn't always clear up front. But the current way, makes software engineering more predictable, and hiring also, you just need average programmers who can more or less use frameworks the way they're intended, and that's enough.
It's just planning for what you know is predictable, and you can actually promise to your customers. And it does kind of suck, but from an economic/business sense, i can kind of understand it...
And i don't see it anywhere in this situation. They're asked to do a job a certain way (or for management, to make sure it happens in a certain way), and they do that to the best of their ability.
Nah, I'm sick of trying to get you to understand that it's not the person I'm talking about, but the mentality of management through the whole process. I don't know if you're just not reading the words I write or what, but I'm not willing to keep repeating the same point to a wall
Your spelling is terrible
why do anime girls have to be right all the time?
On Linux it really is noticeable
Well, until you open a browser... or five, because these days nobody wants to build native applications anymore and instead they shove webapps into electron containers.
Right now, my laptop doesn't have to run much. Just a combination of KDE, browser, emails, music player, a couple of messengers and some background services. In total, that uses about 9.5 GB of RAM. 20 years ago we would have run the same workload with less than 1 GB.
Two possible and opposite interpretations of your comment:
My PC is 15 times faster than the one I had 10 years ago. It's the same old PC but I got rid of Windows.
The tech debt problem will keep getting worse as product teams keep promising more in less time. Keep making developers move faster. I’m sure nothing bad will come of it.
Capitalism truly ruins everything good and pure. I used to love writing clean code and now it’s just “prompt this AI to spit out sloppy code that mostly works so you can focus on what really matters… meetings!”
top 92 comments