Let me start it by saying, i probably don't know that much, i'm just a random angry person on the web. Try to check all the info. It's a useful skill.
Computing rant
Do you like computers? Do you like what we do with them now? Personally, not really.
All the resources
It's actually a good thing how much more powerful computers have became. I'm not going to deny that extra RAM or faster CPUs are a good thing.
But what are we using it for? From the beginning, computers were scientific machines. Their role is to process data for us - to compute. Sure, they do still that... on the lowest level. A lot of people don't care about that, as long as they can scroll some feeds on social media. Sure, not everyone is a scientist, but a lot of technologies developed now are targetting those people in particular.
Is that a problem? There sure are a lot of implications of constantly consuming content served to people by some corporation, but that's not what i wanted to focus on. In this post i'm more upset about the waste of resources.
Take a look at your phone. How powerful is it? Surely somewhere on supercomputer from the past level! But does it run fast? What happened? This is why i'm upset. A lot of developers use growing amount of available resources as a justification of why they shouldn't bother optimizing the programs.
Can we really blame the developers?
It's hard for me to blame people for not understanding everything that's going on in a single modern application. All levels of modern tech stack - from hardware to application that you're using - are so complex, i believe that no single person can understand it completely - even a single domain.
Web frameworks are a great example to this point. They change all the time, i doubt that a lot of web developers who try to keep their knowledge up to date also have a lot of time to learn some details about the technologies involved to make the product more performant.
Personal example: simple GUI
I've been looking for a simple way to make some primitive UI for a computer emulator. I didn't find any. Everyone were suggesting some heavy middle layers between my application and the windowing system, like SDL2. Sure, it's a good library, but i think it's an overkill for my goals.
Let's take a look on another example of how graphics can be done: Plan 9 From Bell Labs. Sure, it has very primitive graphics, but it's really easy to use. There are some control files available to a program to draw on screen and receive events. And standard C library includes a lot of functions to work with graphics and events.
So how good is it? As a test application, i've made a program that draws some basic shapes and prints the code of last pressed key, all in C. It is 72 lines of code. A lot of it is boilerplate, but i still think it's better than many popular modern alternatives. It also almost doesn't use any memory while running. Well under 1MiB.
Conclusion
I just wanted to post a bit about the complexity of modern technologies and how it may be hurting us. I believe that if we had simpler solutions for most common tasks in programming, we would have less bugs and more options when picking apps to use.
Perhaps the reason for a lot of those problems is that we're stuck with legacy systems everyone's afraid to touch. In the Plan 9 example, the program uses some features unique to the system. They just don't exist in other systems, or at least not supported as well.
I believe we need more simple systems. The problem here is that developing systems is hard, especially the drivers. It is extremely unlikely for an electronics company to develop drivers for an unknown OS without any obvious benefits.
At the end, let's just say, do some simple software, try to not overcomplicate things. Do you really need all the libraries you've added as dependencies to your project?
I'll just continue making my emulator on Plan 9 instead of Linux.