'It Just Seems That Nobody is Interested in Building Quality, Fast, Efficient, Lasting, Foundational Stuff Anymore' (tonsky.me)
Nikita Prokopov, a software programmer and author of Fira Code, a popular programming font, AnyBar, a universal status indicator, and some open-source Clojure libraries, writes: Remember times when an OS, apps and all your data fit on a floppy? Your desktop todo app is probably written in Electron and thus has userland driver for Xbox 360 controller in it, can render 3d graphics and play audio and take photos with your web camera. A simple text chat is notorious for its load speed and memory consumption. Yes, you really have to count Slack in as a resource-heavy application. I mean, chatroom and barebones text editor, those are supposed to be two of the less demanding apps in the whole world. Welcome to 2018.
At least it works, you might say. Well, bigger doesn't imply better. Bigger means someone has lost control. Bigger means we don't know what's going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared. 16Gb Android phone was perfectly fine 3 years ago. Today with Android 8.1 it's barely usable because each app has become at least twice as big for no apparent reason. There are no additional functions. They are not faster or more optimized. They don't look different. They just...grow?
iPhone 4s was released with iOS 5, but can barely run iOS 9. And it's not because iOS 9 is that much superior -- it's basically the same. But their new hardware is faster, so they made software slower. Don't worry -- you got exciting new capabilities like...running the same apps with the same speed! I dunno. [...] Nobody understands anything at this point. Neither they want to. We just throw barely baked shit out there, hope for the best and call it "startup wisdom." Web pages ask you to refresh if anything goes wrong. Who has time to figure out what happened? Any web app produces a constant stream of "random" JS errors in the wild, even on compatible browsers.
[...] It just seems that nobody is interested in building quality, fast, efficient, lasting, foundational stuff anymore. Even when efficient solutions have been known for ages, we still struggle with the same problems: package management, build systems, compilers, language design, IDEs. Build systems are inherently unreliable and periodically require full clean, even though all info for invalidation is there. Nothing stops us from making build process reliable, predictable and 100% reproducible. Just nobody thinks it's important. NPM has stayed in "sometimes works" state for years.
At least it works, you might say. Well, bigger doesn't imply better. Bigger means someone has lost control. Bigger means we don't know what's going on. Bigger means complexity tax, performance tax, reliability tax. This is not the norm and should not become the norm. Overweight apps should mean a red flag. They should mean run away scared. 16Gb Android phone was perfectly fine 3 years ago. Today with Android 8.1 it's barely usable because each app has become at least twice as big for no apparent reason. There are no additional functions. They are not faster or more optimized. They don't look different. They just...grow?
iPhone 4s was released with iOS 5, but can barely run iOS 9. And it's not because iOS 9 is that much superior -- it's basically the same. But their new hardware is faster, so they made software slower. Don't worry -- you got exciting new capabilities like...running the same apps with the same speed! I dunno. [...] Nobody understands anything at this point. Neither they want to. We just throw barely baked shit out there, hope for the best and call it "startup wisdom." Web pages ask you to refresh if anything goes wrong. Who has time to figure out what happened? Any web app produces a constant stream of "random" JS errors in the wild, even on compatible browsers.
[...] It just seems that nobody is interested in building quality, fast, efficient, lasting, foundational stuff anymore. Even when efficient solutions have been known for ages, we still struggle with the same problems: package management, build systems, compilers, language design, IDEs. Build systems are inherently unreliable and periodically require full clean, even though all info for invalidation is there. Nothing stops us from making build process reliable, predictable and 100% reproducible. Just nobody thinks it's important. NPM has stayed in "sometimes works" state for years.
Nobody has a clue anymore whether they're building on a poured concrete foundation or a bag of cats.
When the speed of your processor doubles every two year along with a concurrent doubling of RAM and disk space, then you can get away with bloatware.
Since Moore's law appears to have stalled since at least five years ago, it will be interesting to see if we start to see algorithm research or code optimization techniques coming to the fore again.
Perpetual growth also means selling more than last time, and the only way to do that is to make people want your new stuff. This is possible only in two ways: First, your new stuff is so much better than the old one that people WANT it, or second, the old one is already broken so people have to buy it.
Since inventing new stuff that people want badly enough to drop another wad of dough for it even though the old one's still working is hard but making stuff that breaks easily is easy...
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Unix solved most of the problems associated with an operating system. It's just that most folks don't take the time to learn their history or look at existing solutions. Instead NIH and "I can do it better" syndrome are the rule. I see this constantly on /. and elsewhere. Folks acting like very old technology is brand new, or acting like something that was invented yesterday isn't a blatant copy of previous tech. Even Window is still trying to catch up to technology that's been in various Unix variants for 20+ years. Unix is the way and the light. Specifically, I think the BSD's have the right mindset. As a nice bonus, the non-graphical installation runs off all the Ubuntites. Yay!
The kind of quality and efficiency that the summary seems to be talking about is expensive. The buying market wants cheap. Creating cheap solutions means grabbing third-party libraries and gluing them together....as much as possible. Once it basically works you just move on. That keeps development costs low and time to market low, which is exactly what the market wants.
Of course, people might say they want lean and mean, but, when they whip out their wallets they always go for cheap and already-available. So, companies that deliver that defeat companies that spend all their time paying down technical debt and optimizing performance.
So, software bloat is, essentially, the consumer's fault.
There is a big chunk of consumers, probably 20%, that always buy the cheapest possible thing without regard to quality. It's the market Walmart caters to, and I have no problem with businesses that explicitly target "cheap". But that should be a niche, dammit!
Socialism: a lie told by totalitarians and believed by fools.
Poor software engineering means that very capable computers are no longer capable of running modern, unnecessarily bloated software. This, in turn, leads to people having to replace computers that are otherwise working well, solely for the reason to keep up with software that requires more and more system resources for no tangible benefit. In a nutshell -- sloppy, lazy programming leads to more technology waste. That impacts the environment. I have a unique perspective in this topic. I do web development for a company that does electronics recycling. I have suffered the continued bloat in software in the tools I use (most egregiously, Adobe), and I see the impact of technological waste in the increasing amount of electronics recycling that is occurring. Ironically, I'm working at home today because my computer at the office kept stalling every time I had Photoshop and Illustrator open at the same time. A few years ago that wasn't a problem.
Every now and then Apple does take a step back and work towards making things smaller and faster instead of just newer.
Apple said something during their keynote last week that stuck with me afterwards, mostly because it was so unexpected.
Towards the end of the keynote, they had their VP for environmental and social issues up on stage to talk about how things were going (i.e. the part of the keynote I usually tune out of, since it's rare they ever say anything new). After reiterating that they've now completed the transition to running all of their facilities on 100% renewable energy (i.e. no energy credits), they turned to the topic of what their next initiative will be. Here's the relevant quote (emphasis mine) from that part of the keynote:
We hope to one day eliminate our need to mine new materials from the earth. Now, as you can imagine, this is a massive effort. So, to reach that goal, we have to do three things.
First, we have to find new ways to make our products with recycled or renewable materials that are sourced responsibly. Then we'll have to ensure that our products last as long as possible. And then finally, after a long life of use, we have to ensure that they're recycled properly.
And then about a minute later she expands on that second point:
Second, we also make sure to design and build durable products that last as long as possible. That means long-lasting hardware coupled with our amazing software. All of these devices [images of iPhone 5s through iPhone X displayed on screen], including the iPhone 5s, run iOS 12, and iOS 12 is designed to make your iPhone and iPad experience even better, even more responsive, faster...just better! And because they last longer, you can keep using them, and keeping using them is the best thing for the planet.
To say the least, hearing an executive of a major consumer products company say something that was so blatantly anti-consumerism on a stage caught me by surprise. Here's a major company saying that they want people to NOT buy their products because their customers are using their products for longer instead of buying new ones. And then they backed that statement up by releasing a software update a few days later that improved speeds on all of their oldest still-supported devices. I was skeptical of their claims about iOS 12's improvements, but I've actually become a beneficiary of it, since my iPhone 5s from 2013 is markedly faster with the just-released iOS 12, enough so that I ditched my plans to upgrade this year and instead decided to stick with the 5s for yet another year.
Can you really not see the connection between inefficient software and environmental harm? All those computers running code that uses four times as much data, and four times the number crunching, as is reasonable? That excess RAM and storage has to be built as well as powered along with the CPU. Those material and electrical resources have to come from somewhere.
But the calculus changes completely when the software manufacturer hosts the software (or pays for the hosting) for their customers. Our projected AWS bill motivated our management to let me write the sort of efficient code I've been trained to write. After two years of maintaining some pretty horrible legacy code, it is a welcome change.
The big players care a great deal about efficiency when they can't outsource inefficiency to the user's computing resources.
No, in about 100 years they'll be mining all of what we now call "garbage dumps". Lot of good raw materials in there, once you know how to deal with the toxins.
I've abandoned my search for truth; now I'm just looking for some useful delusions.
It was on youtube interviewing him with his recent book. The context was he was talking about the 1% genetic difference between humans are apes(or whatever) and how even the most intelligent of apes are only as smart as a typical 3 year old human. He was saying that we think the laws of the Universe are "hard", but that's hubris because a species 1% different from us may have their 3 year old children being as smart as our smartest physicists, and what's difficult to us may be a simple logic problem to them.
Many problems in life we that call "difficult" are because they require physical effort or lots of knowledge which may be incredible difficult to acquire. But problems of pure reasoning, like many "difficult" aspects of programming, are only relatively difficult to the person(s) claiming it to be, not an inherent fact.
I don't claim to be "smart" as in better at everything, but I do have my strengths. In those strengths, I have solved issues that have stumped entire communities of seasoned professionals for years within seconds of reading of the problem. My guess is most people are like me and we're just not letting people who have intuitive understandings of certain issues to be fully utilized. I've heard of people who can't do basic arithmetic, but are gods at Calculus, but were prevented from even learning Calculus until much later and became recognized as leading physicists in their niche. It was only happenstance that a teacher allowed them to skip remedial math and go into advanced math. There's probably many more out there.
A big problem of intuition is it's nearly impossible to explain and few believe you if they can't understand. Let me explain how you ride a bike. Sit on the seat and start peddling.
Find a modern app that doesn't use 17 different frameworks and external libraries. Each of which ist designed to be general purpose, meaning it does more than the app needs. And each of those external libraries brings in more external dependencies, each of which... How to write "Hello, World" in only 2GB. This is modern software development, and it is seriously insane.
Enjoy life! This is not a dress rehearsal.
The market only buys cheap because of the years of expensive brands turning out to be rebadged crap. It's to the point where paying more just means you paid more. So the consumers figure if they're likely to get crap either way, they might as well get cheap crap rather than expensive crap.
You can't just pay a bit more for quality because paying a bit more means nothing. You can't actually make something that costs a bit more due to higher quality because nobody will believe that it's actually better or that once you establish a reputation you won't cheap out and stick them with the same old crap in a more expensive box.
It might help somewhat if truth in advertising saw some meaningful enforcement once in a while.
I'm sorry but I used to work at a retail store with lots of people barely getting by. YES a lot of these people would spend money frivilously, like buying new jeans or dresses when they already had a closet FULL of clothes. (How do I know? I just asked.)
Meanwhile I'd keep wearing the same stuff for 10+ years, and only bought new when I had no choice.
- Those people who were my minimum wage coworkers were indeed "living beyond their means" while I was living within my means (and watching my bank account grow). It is a CHOICE of how to live, not a trap.
"I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall