That still wouldn't account for it. The code to collect this is tiny and the data isn't stored locally. The whole point is for them to suck it up into their massive dataset.
And analytics. And offloading as much computation to the client, because servers are expensive and inefficiency is not an issue if your users are the ones paying for it.
The Samsung shop hands out 1.4mb JSON responses for order tracking, with what I estimate 99% redundant information that is repeated many times in different parts of the structure.
347 MB for me, no wonder why I am always struggling with storage for my 128 GB phone (with not expandable storage of course), and I don't even have that many games, even less ROMs 😅
Native alpha sounds good since it's foss and uses vanadium's webview. Are you still logged in to paypal (any annoying website) a couple of months later. Or does it revoke your rights after a while?
I only use it rarely and I hate providing my info for 5 minutes just to do one transaction.
Cheaper & faster development by leveraging large libraries/frameworks, but inability to automatically drop most unused parts of those libraries/frameworks. You could in theory shrink Electron way down by yoinking out tons of browser features you're not using, but there's not much incentive to do it and it'd potentially require a lot of engineering work.
Storage is cheap on a PC, it's not cheap on mobile where it's fixed and used as a model differentiator. They overcharge you so much. Oh, and they removed SD card slots from nearly all phones.
Yep. Apps are 20x bigger with no new features...that you are using.
Let's not forget that the graphics for applications has scaled with display resolution, and people generally demand a smooth modern look for their apps.
In the case of normal apps like PayPal graphics shouldn't be a huge factor since it should be vectorized and there is pretty much no graphics in apps like PayPal.
Isn't that just the same pig, just wearing different makeup? I'm not a fan of msedgewebview2.exe allocating 500+ MB RAM just because Teams is open, but maybe that's Teams fault...
Not quite. instead of a bundled pinned version of electron, it is an arbitrary version of edge's WebKit fork shared across all programs using it. That means you don't need to keep multiple copies of the webkit libraries loaded into memory.
That's not to say that building things on web technology is an efficient use of resources. Even if multiple programs are sharing the webview2 library, they're still dealing with the fundamental performance and memory problems caused by building an app in JavaScript.
As for why teams is so memory hungry? I would blame Teams.
Discord manages to make a half decent, highly responsive webview app, and that's with the overhead of having its own separate instance of electron.
EDIT: the original poster was also talking about application binary size, not runtime memory consumption. Application binary size should actually be significantly helped by linking webview to instead of bundling electron.
I mean, Object Pascal was doing the "write once, run anywhere" thing decades ago. Java, too. The former, especially, can make very small programs with big features.
Java (and Object Pascal, I'm assuming) have very old-looking UIs. Discord's gonna have trouble attracting users if their client looks like a billing system from 2005. Also, what do you do about the web client? Implement the UI once in HTML/CSS/JS, and again in JForms?
So if you're picking one UI to make cross-platform, and you need a web client, do you pick JForms and make it work on the web? or React and make it work on desktop?
I think maybe you're confused. Java drives a significant percentage of Android apps. It absolutely can do modern UI. I can almost guarantee you've interacted with a Java program this year that you never considered.
Java was doing web clients before the web could and still can. I don't know much about Delphi's web stuff, but I know they've targeted it for years now.
WASM and transpiling blur the lines, too. LVGL can provide beautiful interfaces on the web as well as platforms Electron could never target, and works with any language compatible with the C ABI.
I'm not saying these strategies are without their own warts, but there are other ways to deliver good experiences across platforms with a ~single codebase in a smaller payload. But mostly nobody bothers because they just reach for Electron. It's this era's "nobody ever got fired for picking Intel".
We need more people working with and on alternatives, not just for efficiency but also for the health of the software ecosystem. Google's browser hegemony is feasting. Complexity has become their moat, preventing a fork from being viable without significant resources. Mozilla is off in a corner consuming itself in desperation.
A US-based company holds a monopoly over the free web and a hell of a lot of our non-web software. So maybe let's look for ways to avoid feeding the beast, yes? And we can get more efficient software in the process.
Isn't jfx still actually using HTML and CSS, though? like it's cool that the UI logic is in Java, but doesn't using CSS mean you still need to lug a rendering engine around, even if not a whole browser?
Yea, electron has flaws, but it's basically the only way to make a truly cross platform native and web app. I would rather take a larger installed size and actually have apps that are available everywhere.
The sad truth is there aren't enough developers to go around to make sleek native apps for every platform, so something that significantly frees dev time is a great real world solution for that.
The alternative is "just serve it as a regular website". It doesn't need to be an app to do its job. Name a functionality which only exists in electron but not in the standard browser API.
isn't it a combination of younger developers not learning to programme under the restrictions of limited memory and cpu speed, on top of employers demanding code as soon as possible rather than code that is elegant or resource efficient or even slightly planned out
Mostly the latter. We don't do any optimizations on our product whatsoever. Most important thing is to say yes to all the customers and add every single feature they want. Every sprint is spent adding and adding and adding to the code as much as we can and as quickly as we can. Not a single second is allotted to any discussion about performance or efficiency. Maybe when something breaks, but otherwise we keep piling on more crap at full speed non-stop. I have repeatedly been told "the fast way is the right way" followed by laughter. I was told to "merge this now" on multiple occasions even when I knew that the code was shit, and told the team as much. I am expected to write code now and think about it later.
As you can expect, the codebase is a bloated nightmare. Slow as shit, bugs galore, ugly inconsistent UI, ENORMOUS memory use, waaaaaay too frequent DB access with a shit ton of duplicate requests that are each rather inefficient themselves. It is a rather complex piece of lab management software, but not so complex that it should be struggling to run on dedicated servers with 8 gigs of RAM. Yet it does.
Plus everything better work perfecly out of the box on any hardware, and there is a lot of different hardware. Compatibility layers are often built into the package.
Java, for instance, recommenda that you package the whole (albeit slimmed down) JVM inside the package for the target platform, rather than relying on the java runtime installed already.
The users arent expected to know any of that anymore.
yep, a lot of apps are just repackaged chrome running a web page.
which begs the question to companies that require use of the app instead of just having a working website i can use on my copy of chrome/firefox that's already on my phone...
1 reason is that they want as much data as possible. They sell the user data. Or they use the user data to improve their targeted advertising. They want more ad clicks.
Re app versus site, many know how to block ads on browsers. With an app, the firm is hoping they can show you ads. Ads can be removed from some apps but the layperson doesn't know.
Generally maybe but for apps specifically, it's the default choice of IDE, Android Studio, bundling tons of libraries for added functionality bound to Play Services.
Which would probably be illegal in EU now, if any judge had the tech see-through for it.
Modern devs dump any dependency and sub-dependency under the sun into their project and don't bother about optimizing it. That's how you end up with absurdly large applications. Especially electron is a problem in this regard.
You can still write optimized and small software. However, for most businesses, it's just not worth their time. Rather using an additional couple hundred megabytes of dependencies on the client system.
The hp printer app says it needs your location to connect to WiFi. It says it needs your location all the time when not using the app, again to connect to WiFi
That's one of the features Google should have stolen from Cyanogen/LineageOS long ago which had permissions differentiated between precise location and approximate
If the goal is to not have apps be too large, you probably don't want to send the full variable and function names and all of the comments over the wire every time someone loads a webpage. That would be a very inefficient use of bandwidth, wouldn't it?
Nailed it. Things have changed to allow cheaper (interpretable in several ways) developers to create "good enough" software as quickly as possible. If that involves inefficient frameworks, technology, and practices that unlock this, then so be it; if the "best" code is the code that makes money, and money is what corporations prioritize above all else, and there is a way to do that quicker and cheaper, the outcome is obvious and now ubiquitous. Furthermore, if nobody at the top cares, why should anyone on the ground care? The problem compounds.
If it runs "fast enough" on a completely clean system that would cost the average user $1500, then companies assume that that means that it is a good product.
If you want better software, you have to give developers worse hardware to develop on, and more time to develop.
I’d like to object to that. Frameworks are often built by dedicated and paid developers, so they tend to be above average in terms of efficiency. But being frameworks, they have to facilitate lots of use cases, so they also tend to be bigger than what you would write if you had 6 months to roll your own. And 36 more months to kill all the worms that got out of the can, to mangle a proverb.
I wouldn’t say skill issue, more of time issue. You only get a week to implement something. Quicker to use existing libraries than try to optimise yourself.
Cheaper less skilled or less experienced programmers take longer to get similar results. One week with a a skilled programmer is a lot more value than one week with an unskilled programmer.
Even more if you want to invest some of that experienced programmer time to get the new guy up to speed.
Is that the JS bundle only? I think you're forgetting the need to ship a rendering engine, a JavaScript engine, and the rest of the JS you inevitably bring in if you're using something like React.
Because companies give zero fucks. They will tell you they need tons of IT people, when in reality they want tons of underpaid programmers. They want stuff as fast and cheap as possible. What doesn't cause immediate trouble is usually good enough. What can be patched up somehow is kept running, even when it only leads you further up the cliff you will fall off eventually.
Management is sometimes completely clueless. They rather hire twice as many people to keep some poorly developed app running, than to invest in a new, better developed app, that requires less maintenance and provides a better user experience. Zero risk tolerance and zero foresight.
It still generates money, you keep it running. Any means are fine.
God, I hate Corsair. Not only do you need to download their garbage software to fucking turn off the RGB on a headset, you have to have it running or the RGB will turn on again!
Thanks for sharing that. My device isn’t listed, but I’d be surprised if Corsair changed how their shit works that much between devices. I’ll give it a try (it supposedly even works on Linux <3)
It's like Moore's law. The number of bytes for a basic app doubles every 2.5 years.
When I was young, we'd get a few different games games on a single 1.4 Mb floppy disk. The games were simpler, sure, but exactly the same games now would be far bigger in bytes.
At least games make sense, as the graphics get better. Though in some cases, the compression is also better. Like PS5 games are smaller on average than their PS4 versions, even though they have higher resolution textures in most cases, just because the PS5 has better compression/decompression tech.
Better than that, the lack of reliance on spinning disks means that asset duplication and data read order is less of a requirement to reduce load times. It can still be argued that there's just too many polygons, since simply scaling things back would be plenty effective in reducing storage usage and load times.
Like PS5 games are smaller on average than their PS4 versions
My favorite example of this is Subnautica. The system didn't call on the assets as quickly, or a different way I can't remember all of the details but essentially they had to put like five copies of every asset on the ps4 version to get it to run properly. The ps5 accesses the assets fast enough it only needs one copy. At least that's how it was explained to me.
this entire thread is about software being dogshit? (this specific comment thread is about compression being moderately improved on one console, but that's not really significant)
Games is the one example that actually makes sense though. The game code size hasn't really increased tremendously, but the uncompressed assets have only gotten more detailed and more numerous.
It's all because of Electron, unnecessary libraries, and just bad coders. Asus Armoury Crate weighs a lot and is so slow, but it's basically a simple app. Total Commander has much more features, but it's fast, lightweight, and consumes 9 MB of RAM.
I've said this on reddit before, but once for a joke I tried to make a windows program to play doot.wav during October at random, and tried programming it on Linux.
Sinds playing audio and working with the system tray was tricky, I ended up with electron.
So yeah, an atrocious 120 mb application to play a 6kb wav file with a Math.random(). I don't remember the memory consumption, but it was probably just as gross.
Once I wrote an annoying program adding acceleration to the mouse cursor, so it was difficult to click any UI item. It was written in Object Pascal with Win API and weighted 16 KB. And I think in C it would be even smaller.
Oh, they have new functionality. It's all in the back end, detailing everything you do and sending it to the parent company so they can monetize your life.
That topics always made me curious tho....take a sample AAA games back then has smaller size compared to shitty Unity 2D games nowadays and i wonder why ?
Less triangles and smaller textures. Crt monitors had less resolution and practically built-in anti-aliasing so they could get away with (and had to) "worse" assets.
Also since ssd-s have become mainstream unity uses less compression so it would load relatively faster.
Basically because monitors got better, standards got higher, competition got fiercer, storage got bigger and faster, etc.
And it's not like there weren't shitty games before, just everybody forgot about them.
I like how the game Banished is made. From a requirenments/looks ratio it is IMO great. One guy made it. Ghosts of Tsushima also looks amazing and is great from a techical perspective, but it is heavy.
Yea, textures are the biggest thing (unless there's video). But don't underestimate vertices, even when using strips. Unity, i think, just ships textures as BCn, meaning 1MB per 1k texture (would be 3-4MB raw). It's even better for the gpu then raw. Then there's normal maps, etc.
Another thing is lighting data, be it some textures, probes, or whatever. That can also take up plenty of space.
I think this is a European thing. "IT" is a general term for any tech work, whereas in the US that term refers to technician level network infrastructure and sysadmin work.
I'd argue that deploying from one codebase to 3+ different platforms is new functionality, although not for the end user per se.
I wish though that more of the web apps would come as no batteries included (by default or at least as a selectable option), i.e. use whatever webview is available on the system instead of shipping another one regardless of if you want it or not.
But if your tool chain is worth anything the size of each binary shouldn't be bigger.
To oversimplify things a bit: it's just #ifdefs and a proper tool chain.
In the web development world on the other hand everything was always awful. Every nodejs package has half the world as dependencies...
Imo the biggest one people don't account for is this: Dev salaries are incredibly high. if you want fast performance the most optimal way would be to target the platform and use low level native code, so C++ or Swift.
It would cost you like 20x more than just using electron and it will cost you bigly if you have multiple platforms to maintain.
So it turns out having 1 team crunching out an app on electron with hundreds of dependencies is cheaper, naturally that's what most companies will do.
Don't want to use electron ? Then it's kind of the same issue except this time you're using Java and C# and you have to handle platform specific things on your own (think audio libraries for example). It's definitely doable but will be more costly than using a cross platform chromium app.
Certainly not for running an LLM on all your files to figure out which ads to show you in the start menu. Why would you even imply something like that?
Why get one new phone when you can get ten and install cloud software on them to run them as a cluster so that they have enough power to run all the latest apps?
With that in mind, I LOVE how lean and fast some FOSS apps/projects are. One of my motivations to go searching for FOSS alternatives is when something seems slow for no reason.
That's not why. It's the dependency trees that run a dozen layers deep and end up importing "isEven". If you're building a react app odds are good you'll import way more code than you ever write yourself.
And no one should be leaving commented-out code in their app, that's what source control is for.
Every decent piece of software has crap loads of resources: icons, texts, translations, manuals, sounds, fonts, etc. Even hello world app contains at least one resource - "hello world" string and what's funny is that executable meta data required by operating systems and the string take more space than the actual code to print this string.
* legitimate telemetry data
Legitimate interest to train AI
Let me (lemme?) translate this into customer-friendly business language:
Enhanced user experience
That still wouldn't account for it. The code to collect this is tiny and the data isn't stored locally. The whole point is for them to suck it up into their massive dataset.
Electron everywhere.
And analytics. And offloading as much computation to the client, because servers are expensive and inefficiency is not an issue if your users are the ones paying for it.
I saw an ad request with an inline 1.4 MB game. Like, you could fit Mario in there.
The Samsung shop hands out 1.4mb JSON responses for order tracking, with what I estimate 99% redundant information that is repeated many times in different parts of the structure.
Web "Apps" are also quite bad. Lots of and lots of stuff we're downloading and it feels clunky.
Sometimes that's bad coding, poor optimization, third party libraries, or sometimes just including trackers/ads on the page.
I vaguely recall a recent-ish article that an average web page is 30mb. That's right, thirty megabytes.
It's amazing how much faster web browsing becomes when I run PiHole and block most of it.
Suddenly the TV is pretty snappy, and all browsers feel so much smoother.
That’s straight up not true. It’s not even remotely close to that.
https://httparchive.org/reports/page-weight
And I'm sitting here uneasy thinking how the hell I'm going to compress my map data any further so that my entire web app is no bigger than 2 mb. 😥
No, you need to go further: https://512kb.club/
Oh god, I'm not ready for the trauma and the emotional scars... D:
Some devs will include a whole library for one thing instead of trying to learn another way to do that thing.
A whole library which was meant to to 10 things, but you only use one. And that for x libraries
Nowadays libraries are built with tree-shaking in mind, so when it’s time to deploy the app only the code that’s actually used gets bundled.
Paypal has 500 mb and just shows a number and you can press a button to send a number to their server.
It's insane
You made me check it, and on my android device it's 337 (just the app). Jesus Christ.
Mine has 660MB with 7MB user data, 15MB cache.
LMAO, he also made me check it.
347 MB for me, no wonder why I am always struggling with storage for my 128 GB phone (with not expandable storage of course), and I don't even have that many games, even less ROMs 😅
Check out the apps Hermit and Native Alpha. They make web pages run like an app. I've only run into a couple sites where they don't work right.
Native alpha sounds good since it's foss and uses vanadium's webview. Are you still logged in to paypal (any annoying website) a couple of months later. Or does it revoke your rights after a while?
I only use it rarely and I hate providing my info for 5 minutes just to do one transaction.
Dude!! What a badass concept, cannot wait to give this a shot!!
Has to send a number to Apple’s server too! actually not even sure if that’s client side.
Cheaper & faster development by leveraging large libraries/frameworks, but inability to automatically drop most unused parts of those libraries/frameworks. You could in theory shrink Electron way down by yoinking out tons of browser features you're not using, but there's not much incentive to do it and it'd potentially require a lot of engineering work.
Yeah, though the joke is funny, this is the real answer.
Storage is cheap compared to creating custom libraries.
Also the storage is the cost for the user, and google in the case of play store. So the developers have no incentive to reduce the size.
Storage is cheap on a PC, it's not cheap on mobile where it's fixed and used as a model differentiator. They overcharge you so much. Oh, and they removed SD card slots from nearly all phones.
Nah it's fine. Clean up used apps every once in a while. Base phones have more than enough space.
64kb should be enough for anyone
is that the size of doom or something lol
Its a reference to an old he said she said quote attributed to bill gates from the 1990's
“640K ought to be enough for anyone” — Bill Gate
https://quoteinvestigator.com/2011/09/08/640k-enough/
Yep. Apps are 20x bigger with no new features...that you are using.
Let's not forget that the graphics for applications has scaled with display resolution, and people generally demand a smooth modern look for their apps.
In the case of normal apps like PayPal graphics shouldn't be a huge factor since it should be vectorized and there is pretty much no graphics in apps like PayPal.
The issue comes from frameworks.
Ads and trackers
Don't forget poor optimization
That doesn't make the software take up more space on a drive. Optimizing is likely to result in a slightly larger install that runs more efficiently.
. . . does. Import whole ass library, use one function, once. Probably one of the easiest to implement yourself. Boom, file grew. Repeat.
Lodash wants to know your location
Fucking Chrome/Electron is why.
I honestly wouldn't mind that if they could all use the exact same runtime so the apps could be a few MB each, but nooooo.
See: Webview2
Unfortunately, it is extremely painful to work with😔 Enjoy rolling your own script versioning and update systems instead of using squirrel et al
Edit: I think Tauri works by targeting this and webkitgtk via their wrapper library, unfortunately I can't get my coworkers to write rust
Isn't that just the same pig, just wearing different makeup? I'm not a fan of msedgewebview2.exe allocating 500+ MB RAM just because Teams is open, but maybe that's Teams fault...
Not quite. instead of a bundled pinned version of electron, it is an arbitrary version of edge's WebKit fork shared across all programs using it. That means you don't need to keep multiple copies of the webkit libraries loaded into memory.
That's not to say that building things on web technology is an efficient use of resources. Even if multiple programs are sharing the webview2 library, they're still dealing with the fundamental performance and memory problems caused by building an app in JavaScript.
As for why teams is so memory hungry? I would blame Teams.
Discord manages to make a half decent, highly responsive webview app, and that's with the overhead of having its own separate instance of electron.
EDIT: the original poster was also talking about application binary size, not runtime memory consumption. Application binary size should actually be significantly helped by linking webview to instead of bundling electron.
400mb iphone banking app entered the chat
Is there any alternatives to electron ? And why people's doesn't move on to alternatives if electron is huge & heavy resources ?
I mean, Object Pascal was doing the "write once, run anywhere" thing decades ago. Java, too. The former, especially, can make very small programs with big features.
Java (and Object Pascal, I'm assuming) have very old-looking UIs. Discord's gonna have trouble attracting users if their client looks like a billing system from 2005. Also, what do you do about the web client? Implement the UI once in HTML/CSS/JS, and again in JForms?
So if you're picking one UI to make cross-platform, and you need a web client, do you pick JForms and make it work on the web? or React and make it work on desktop?
I think maybe you're confused. Java drives a significant percentage of Android apps. It absolutely can do modern UI. I can almost guarantee you've interacted with a Java program this year that you never considered.
Pascal is more niche, but it can do modern, too.
Java was doing web clients before the web could and still can. I don't know much about Delphi's web stuff, but I know they've targeted it for years now.
WASM and transpiling blur the lines, too. LVGL can provide beautiful interfaces on the web as well as platforms Electron could never target, and works with any language compatible with the C ABI.
I'm not saying these strategies are without their own warts, but there are other ways to deliver good experiences across platforms with a ~single codebase in a smaller payload. But mostly nobody bothers because they just reach for Electron. It's this era's "nobody ever got fired for picking Intel".
We need more people working with and on alternatives, not just for efficiency but also for the health of the software ecosystem. Google's browser hegemony is feasting. Complexity has become their moat, preventing a fork from being viable without significant resources. Mozilla is off in a corner consuming itself in desperation.
A US-based company holds a monopoly over the free web and a hell of a lot of our non-web software. So maybe let's look for ways to avoid feeding the beast, yes? And we can get more efficient software in the process.
Isn't jfx still actually using HTML and CSS, though? like it's cool that the UI logic is in Java, but doesn't using CSS mean you still need to lug a rendering engine around, even if not a whole browser?
Yea, electron has flaws, but it's basically the only way to make a truly cross platform native and web app. I would rather take a larger installed size and actually have apps that are available everywhere.
The sad truth is there aren't enough developers to go around to make sleek native apps for every platform, so something that significantly frees dev time is a great real world solution for that.
The alternative is "just serve it as a regular website". It doesn't need to be an app to do its job. Name a functionality which only exists in electron but not in the standard browser API.
::: spoiler Tap for spoiler
Get electroned :::
AHHH, please trigger warning
I'd rather have the Rickroll, please 😐
isn't it a combination of younger developers not learning to programme under the restrictions of limited memory and cpu speed, on top of employers demanding code as soon as possible rather than code that is elegant or resource efficient or even slightly planned out
Mostly the latter. We don't do any optimizations on our product whatsoever. Most important thing is to say yes to all the customers and add every single feature they want. Every sprint is spent adding and adding and adding to the code as much as we can and as quickly as we can. Not a single second is allotted to any discussion about performance or efficiency. Maybe when something breaks, but otherwise we keep piling on more crap at full speed non-stop. I have repeatedly been told "the fast way is the right way" followed by laughter. I was told to "merge this now" on multiple occasions even when I knew that the code was shit, and told the team as much. I am expected to write code now and think about it later.
As you can expect, the codebase is a bloated nightmare. Slow as shit, bugs galore, ugly inconsistent UI, ENORMOUS memory use, waaaaaay too frequent DB access with a shit ton of duplicate requests that are each rather inefficient themselves. It is a rather complex piece of lab management software, but not so complex that it should be struggling to run on dedicated servers with 8 gigs of RAM. Yet it does.
Much the latter.
Plus everything better work perfecly out of the box on any hardware, and there is a lot of different hardware. Compatibility layers are often built into the package.
Java, for instance, recommenda that you package the whole (albeit slimmed down) JVM inside the package for the target platform, rather than relying on the java runtime installed already.
The users arent expected to know any of that anymore.
yep, a lot of apps are just repackaged chrome running a web page.
which begs the question to companies that require use of the app instead of just having a working website i can use on my copy of chrome/firefox that's already on my phone...
why do you need hardware access to my device?
1 reason is that they want as much data as possible. They sell the user data. Or they use the user data to improve their targeted advertising. They want more ad clicks.
Re app versus site, many know how to block ads on browsers. With an app, the firm is hoping they can show you ads. Ads can be removed from some apps but the layperson doesn't know.
Generally maybe but for apps specifically, it's the default choice of IDE, Android Studio, bundling tons of libraries for added functionality bound to Play Services.
Which would probably be illegal in EU now, if any judge had the tech see-through for it.
Simple reason - dependencies.
Modern devs dump any dependency and sub-dependency under the sun into their project and don't bother about optimizing it. That's how you end up with absurdly large applications. Especially electron is a problem in this regard.
You can still write optimized and small software. However, for most businesses, it's just not worth their time. Rather using an additional couple hundred megabytes of dependencies on the client system.
In terms of programming, absolutely some bloat there.
But I would wager a majority (or plurality) would actually be high(er) res media assets, embedded animations and video etc.
It's the ads.
I’d wager it’s the multilevel dependency of countless prebuilt components when devs are only going to use a small fraction of their capabilities.
I don't get paid to optimize, I get paid to implement features.
The only sector where that is applicable is games.
Tell that to my banking apps!
Tree shaking should fix this to a large degree though
The hp printer app says it needs your location to connect to WiFi. It says it needs your location all the time when not using the app, again to connect to WiFi
I think that's to do with how permissions work.
Having wi-fi access can technically tell the app where you're located so you need to give it location access
Which is stupid because it then also gets GPS access.
Can confirm.
Now, I just need to know why my calculator needs access to my contacts.
That's because it gets lonely and needs someone to text.
It's because one is the loneliest number.
You just reminded me of one particular calculator app which put "+" button behind a paywall
That's one of the features Google should have stolen from Cyanogen/LineageOS long ago which had permissions differentiated between precise location and approximate
#include "the_entire_fucking_internet.h"
You know we’ve reached peak bloat and stupidity when JavaScript web apps have a compilation step, and I don’t mean JIT.
I’d rather take a compile step than having no type safety in JS, even as a user.
Except... the compilation step doesn't add type safety to JS.
As an aside, type safety hasn't been something I truly miss in JS, despite how often it's mentioned.
I think they are talking about typescript which is compiled into javascript
Ok, that could be true. I assumed they meant the "building" phase that some frameworks go through.
If the goal is to not have apps be too large, you probably don't want to send the full variable and function names and all of the comments over the wire every time someone loads a webpage. That would be a very inefficient use of bandwidth, wouldn't it?
Don't we have compression built into http already?
I guess it’s easier and safer to make a string replace for each function name beforehand than hoping the compression algorithm will figure that out.
Also, as SpaceCowboy points out, comments are completely useless for the final web page. There’s no need to even compress them.
Bloatware, spyware, scope creep from middle managers feeling uncomfortable letting a dev have a slow day.
uh, please do ask, why does opening a fucking glorified text and image processing app require 1 gigabyte of ram.
Who wrote this software? The guy from the bible who was the model for greed and gluttony? Jesus christ.
I don't remember those being particularly emphasised traits of his.
it's going to be ret conned if you give it long enough, just like every part of the bible.
Skill issue
Nailed it. Things have changed to allow cheaper (interpretable in several ways) developers to create "good enough" software as quickly as possible. If that involves inefficient frameworks, technology, and practices that unlock this, then so be it; if the "best" code is the code that makes money, and money is what corporations prioritize above all else, and there is a way to do that quicker and cheaper, the outcome is obvious and now ubiquitous. Furthermore, if nobody at the top cares, why should anyone on the ground care? The problem compounds.
Priorities are fucked.
If it runs "fast enough" on a completely clean system that would cost the average user $1500, then companies assume that that means that it is a good product.
If you want better software, you have to give developers worse hardware to develop on, and more time to develop.
Shhh. There could be application development managers listening... (I'm joking.... Mostly.)
I’d like to object to that. Frameworks are often built by dedicated and paid developers, so they tend to be above average in terms of efficiency. But being frameworks, they have to facilitate lots of use cases, so they also tend to be bigger than what you would write if you had 6 months to roll your own. And 36 more months to kill all the worms that got out of the can, to mangle a proverb.
I wouldn’t say skill issue, more of time issue. You only get a week to implement something. Quicker to use existing libraries than try to optimise yourself.
It’s both, and they are in a sense the same.
Cheaper less skilled or less experienced programmers take longer to get similar results. One week with a a skilled programmer is a lot more value than one week with an unskilled programmer.
Even more if you want to invest some of that experienced programmer time to get the new guy up to speed.
Don't worry, vibe coding is going to solve everything 😂
React
Why? Its libraries are a few kilobytes each.
https://bundlephobia.com/package/[email protected] - 7.3 Kb
https://bundlephobia.com/package/[email protected] - 3.6 Kb
Is that the JS bundle only? I think you're forgetting the need to ship a rendering engine, a JavaScript engine, and the rest of the JS you inevitably bring in if you're using something like React.
Oh, I focus mainly on web. 'Forgetting' to ship engines is my bread & butter. lol I see you meant React (+Electron).
Because companies give zero fucks. They will tell you they need tons of IT people, when in reality they want tons of underpaid programmers. They want stuff as fast and cheap as possible. What doesn't cause immediate trouble is usually good enough. What can be patched up somehow is kept running, even when it only leads you further up the cliff you will fall off eventually.
Management is sometimes completely clueless. They rather hire twice as many people to keep some poorly developed app running, than to invest in a new, better developed app, that requires less maintenance and provides a better user experience. Zero risk tolerance and zero foresight.
It still generates money, you keep it running. Any means are fine.
Ironically the management that does have a clue often is hamstrung somewhere up the chain.
I just updated Epic Games Launcher. BEHOLD:
::: spoiler 1st update
::: ::: spoiler 2nd update
:::
::: spoiler Almost a gigabyte for a mostly blank interface, wtf.
:::
i have a better one, corsair ICUE. 4gb for a fucking png simulator.
God, I hate Corsair. Not only do you need to download their garbage software to fucking turn off the RGB on a headset, you have to have it running or the RGB will turn on again!
Thanks for sharing that. My device isn’t listed, but I’d be surprised if Corsair changed how their shit works that much between devices. I’ll give it a try (it supposedly even works on Linux <3)
ironically, i've found that razer has particularly good open community support on linux.
It's actually pretty good. Works, unlike synapse, which is fucking malware that tries to reinstall itself repeatedly.
It's like Moore's law. The number of bytes for a basic app doubles every 2.5 years.
When I was young, we'd get a few different games games on a single 1.4 Mb floppy disk. The games were simpler, sure, but exactly the same games now would be far bigger in bytes.
At least games make sense, as the graphics get better. Though in some cases, the compression is also better. Like PS5 games are smaller on average than their PS4 versions, even though they have higher resolution textures in most cases, just because the PS5 has better compression/decompression tech.
Better than that, the lack of reliance on spinning disks means that asset duplication and data read order is less of a requirement to reduce load times. It can still be argued that there's just too many polygons, since simply scaling things back would be plenty effective in reducing storage usage and load times.
The other problem for bigger GB games is texture resolution. Games don’t always need 8K or 4K textures. 2K is good enough.
My shitty eyes can’t detect any difference past 720p
I only notice that the bigger the resolution, the smaller the text when the game in question has poor scaling options for the 2D elements..
My favorite example of this is Subnautica. The system didn't call on the assets as quickly, or a different way I can't remember all of the details but essentially they had to put like five copies of every asset on the ps4 version to get it to run properly. The ps5 accesses the assets fast enough it only needs one copy. At least that's how it was explained to me.
Compression is mostly done in software.
uh, bad news for you.
All programming is done in software my guy.
Great! Your point?
this entire thread is about software being dogshit? (this specific comment thread is about compression being moderately improved on one console, but that's not really significant)
Games is the one example that actually makes sense though. The game code size hasn't really increased tremendously, but the uncompressed assets have only gotten more detailed and more numerous.
Memory is cheap and data sells enough to many parties. Most apps are just store front for Ads and data collection.
No wonder why open source apps are quite light.
Usually, instead of having 8-bit art, you have epic songs and very high definition textures. That is a good deal of why.
I think the epic songs and 4K textures are missing in my MS Office.
Yeah but they made xlookup, that's worth a few hundred megabytes
All hail xlookup
That’s weird. Have you tried reinstalling?
Textures and songs are not a thing on most apps right? For android, using Kotlin has created much bigger appsize than old java
Kotlin doesn't have much impact on binary size.
For smaller apps maybe. I've seen apps that should take less than 1mb rise to 15mb or so
That's not due to kotlin.
Why else?
How would I know without looking at the app binary?
Backed devs: sweats
It's all because of Electron, unnecessary libraries, and just bad coders. Asus Armoury Crate weighs a lot and is so slow, but it's basically a simple app. Total Commander has much more features, but it's fast, lightweight, and consumes 9 MB of RAM.
I've said this on reddit before, but once for a joke I tried to make a windows program to play doot.wav during October at random, and tried programming it on Linux.
Sinds playing audio and working with the system tray was tricky, I ended up with electron.
So yeah, an atrocious 120 mb application to play a 6kb wav file with a
Math.random(). I don't remember the memory consumption, but it was probably just as gross.Which faang company are you sr. engineer at?
Once I wrote an annoying program adding acceleration to the mouse cursor, so it was difficult to click any UI item. It was written in Object Pascal with Win API and weighted 16 KB. And I think in C it would be even smaller.
I remember there was a pretty funny prank program that would make the user's mouse pointer leave behind little poops on the screen at random.
Bro, just use AI, bro, you don't need developers, bro, also skip the testing, bro, who is going to hack your SaaS, bro
Just let ai code bro its so much better and more reliable, just does what its told it works so good bro, ai is the future its so smart.
Oh, they have new functionality. It's all in the back end, detailing everything you do and sending it to the parent company so they can monetize your life.
That topics always made me curious tho....take a sample AAA games back then has smaller size compared to shitty Unity 2D games nowadays and i wonder why ?
Less triangles and smaller textures. Crt monitors had less resolution and practically built-in anti-aliasing so they could get away with (and had to) "worse" assets.
Also since ssd-s have become mainstream unity uses less compression so it would load relatively faster.
Basically because monitors got better, standards got higher, competition got fiercer, storage got bigger and faster, etc.
And it's not like there weren't shitty games before, just everybody forgot about them.
I like how the game Banished is made. From a requirenments/looks ratio it is IMO great. One guy made it. Ghosts of Tsushima also looks amazing and is great from a techical perspective, but it is heavy.
Yea, textures are the biggest thing (unless there's video). But don't underestimate vertices, even when using strips. Unity, i think, just ships textures as BCn, meaning 1MB per 1k texture (would be 3-4MB raw). It's even better for the gpu then raw. Then there's normal maps, etc.
Another thing is lighting data, be it some textures, probes, or whatever. That can also take up plenty of space.
Yeah but like, what new features do apps have which weren't available in those times? Embedded videos maybe? Doesn't justify the bloat.
For games a lot of it has to do with 4K textures/art assets. It’s just so many more pixels to store for the worlds and characters.
Kinda tired of people referring to my work as "IT"
IT sector
Still no.
I'm not setting up routers or configuring laptops.
I'm designing and building systems.
"IT" being used this way just means "touch computer."
So you work with information technology? 😉
Agreed, anyone that falls below the CIO gets called IT.
What about the CTO?
I think this is a European thing. "IT" is a general term for any tech work, whereas in the US that term refers to technician level network infrastructure and sysadmin work.
No, people misuse the term in the US, too.
What would you prefer?
Feral Developer Level 3
Since I'm an engineer and I engineer things, maybe "engineering."
Do you make engines?
No, I drive trains.
Have one of those cool hats?
And I get to toot the whistle
I'd argue that deploying from one codebase to 3+ different platforms is new functionality, although not for the end user per se.
I wish though that more of the web apps would come as no batteries included (by default or at least as a selectable option), i.e. use whatever webview is available on the system instead of shipping another one regardless of if you want it or not.
But if your tool chain is worth anything the size of each binary shouldn't be bigger. To oversimplify things a bit: it's just #ifdefs and a proper tool chain.
In the web development world on the other hand everything was always awful. Every nodejs package has half the world as dependencies...
That’s how a bunch of apps broke when M$ got rid of explorer
Because the app stores keep adding new requirements that you have to add code to deal with and it gets worse every year and seemingly every day.
Isn't it strange that a shop is demanding code?
Remember that day when GDPR dropped and website suddenly started loading much faster.
There's lots of valid reasons for this.
Imo the biggest one people don't account for is this: Dev salaries are incredibly high. if you want fast performance the most optimal way would be to target the platform and use low level native code, so C++ or Swift.
It would cost you like 20x more than just using electron and it will cost you bigly if you have multiple platforms to maintain.
So it turns out having 1 team crunching out an app on electron with hundreds of dependencies is cheaper, naturally that's what most companies will do.
Don't want to use electron ? Then it's kind of the same issue except this time you're using Java and C# and you have to handle platform specific things on your own (think audio libraries for example). It's definitely doable but will be more costly than using a cross platform chromium app.
Technically there is no "most optimal". Optimal is basically best.
Performance/optimisation wise is an environmental catastrophe..
Stares at Mullvad...
Why are you asking? Are you trying to prematurely optimize these apps?
They only came out 10 years ago. If we optimize now, how will we integrate an AI chat agent feature next year?
Certainly not for running an LLM on all your files to figure out which ads to show you in the start menu. Why would you even imply something like that?
*shifty eyes* Um yes
Tell me you are rich enough to always have a new phone without telling me you are rich enough to always have a new phone.
Why get one new phone when you can get ten and install cloud software on them to run them as a cluster so that they have enough power to run all the latest apps?
"Program is slow? Just get better hardware, brah!!! It's cheap, bruh!!!"
Fuck you and anyone that thinks like that
It's truely a sad norm
Did my husband made this meme? Because he is constantly saying this 😂😂😂😂
Duh, it's because more and more code is ran remotely. Wait...
Is this the appropriate point to reference the suckless community? I mean, that's THE point of the movement...
And every CoD and most big title games..
It's the secret sauce, called unnecessary frameworks and user analytics modules.
With that in mind, I LOVE how lean and fast some FOSS apps/projects are. One of my motivations to go searching for FOSS alternatives is when something seems slow for no reason.
It's not always the case, but it's often the case
KDE Plasma has been getting so much more efficient with every release that you can almost recommend it for low-end systems.
Lazy devs not removing old non functional commented code and background code additions ?
Though I do get it if they don't want to remove the old code if their employer is an asshole
That's not why. It's the dependency trees that run a dozen layers deep and end up importing "isEven". If you're building a react app odds are good you'll import way more code than you ever write yourself.
And no one should be leaving commented-out code in their app, that's what source control is for.
Most resources are not consumed by wonky code or dependencies. Most resources are consumed by images and sounds.
Surely it depends on the specific software.
I imagine the ability for an app to watch me take a shit consumes about the same resources regardless of platform.
Every decent piece of software has crap loads of resources: icons, texts, translations, manuals, sounds, fonts, etc. Even hello world app contains at least one resource - "hello world" string and what's funny is that executable meta data required by operating systems and the string take more space than the actual code to print this string.