'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.
We've been trained to be a consuming society of disposable goods. The latest and greatest feature will always be more important than something that is reliable and durable for the long haul.
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!
Not only do we write document scan and OCR software (ExactScan, OCRKit, Recompres, etc.) that fits on a couple of floppies (well ExactScan non Pro would fit on two 1.44MB I guess), without hundreds of imported dependecies and such: https://exactcode.com/ – On my new youtube channel I recently showed how to program hardware accelerated 3d in a couple of hundred lines of code! Enjoy: https://www.youtube.com/watch?...
Support your state's Right to Repair bill! Part of the reason "everything sucks now" is that we let these fuckers sell us crap that only they can fix.
I assert that Agile is antithetical for this kind of work. It's critical that infrastructure be built to completion (in both functionality and quality). A lot of infrastructure doesn't lend itself to "requirements on 3x5 cards" For example, how would you handle "consistent concurrent updates" in a distributed system? That's an architectural/key design issue that has substantial repercussions throughout a distributed system.
I've worked on several projects producing on reliable software infrastructure. One was all new code, most others included a lot of COTS. Each had a substantial effort to capture 'architecture' and 'requirements,' including establishing what "100%" looked like so we could track progress to completion, and so the users/customers of of the infrastructure had an idea what features and capabilities they could depend on.
DevOps might work, -if- there's a substantial investment in up front architecture, design, and build planning.
(My sense of "architecture" here includes non-functional considerations, deployment issues, and even identifying human contributions to the system, i.e. how the infrastructure will be configured and maintained.)
Letter Perfect for the Atari 800 was an 8K ROM cartridge.
Image: http://www.atarimania.com/utility-atari-400-800-xl-xe-letter-perfect_13691.html
Documentation (100 page PDF): http://www.atarimania.com/8bit/files/letter_perfect.pdf
Remember times when an OS, apps and all your data fit on a floppy?
Sure do. I also remember that it did close to fuck all in the way of useful tasks compared to the devices I have right now. Is there a point to this nostalgia over what now is primitive technology? If your OS fits on a single disk it is either a VERY narrowly focused device that doesn't do much else or it is a very primitive system that cannot do much. Just because something isn't coded in hand written assembler doesn't mean it is bad.
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.
No they made it DO MORE. It didn't get slower out of incompetence or laziness. (well mostly anyway...) It is a more complicated system that does tasks that weren't previously possible with the older hardware. It's NOT "basically the same" if you really look at it carefully. A lot of new technology has been added which comes at a cost. You could run the old system on the new hardware and it would run faster but do fewer useful things. Pick your poison. I remember running the same DOS system that ran on my 286 on a 486 and it was a whole lot faster but it didn't really take full advantage of that extra speed for most tasks. The code was written the way it was because of the hardware limitations of the day. No different than today.
It just seems that nobody is interested in building quality, fast, efficient, lasting, foundational stuff anymore.
This statement presumes A) that software in the past was all those things (it wasn't) and that B) that the meaning of all those things is clear (it isn't). Define "quality". Define "fast". Define "efficient". And under what context are we talking? That statement makes for a good sound bite but it's as vague as an astrology reading if you really think about it.
very wrong, applications now are built on many bloated layers such that no can understand or secure it.
The massive security holes constantly being found prove it, and the vast majority of those are due to the same mistakes self-confident high IQ morons keep making.
The amount code it takes to do actually a job is much smaller than the size of code we have nowadays, by a factor of at least 10.
it is not "natural", it is laziness, arrogance and ignorance. Each and every security and bug flaw is the fault of that idiotic mindset.
The customer has no choice in the matter. The people that make the decisions and hire/fire are the ones that do. Lets take a look at a typical DevOps or NoOps shop:
1: The devs are mainly junior to intermediate level. Senior devs get the axe because they cost too much.
2: What matters is getting deliverables that marketing has already sold to a customer.
3: The devs are asked each day about said deliverables in the Scrum stand-up meeting.
4: If the devs don't cough that deliverable up -yesterday-, they get replaced by someone else who can.
In this environment, technological debt is someone else's problem. All that matters is getting stuff working and the code artifacts into production. Security, or readability? That's other people's problems.
This is the modern company. The days of people writing code in assembly to get everything to work perfectly and still have room on a floppy disk are over.
Blame the bad top brass, who short their stock before a security breach is announced so they can swing a new yacht, and who can't hear anything over their own ego. That is where the fault resides.
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.
The Kuhn Rikon Swiss Peeler. Go into any high-end restaurant kitchen, and there's a good chance you'll find a couple of these marvels. You, the home cook, can own this wonder too, but it will set you back: $4.49.
Now go into a home kitchen supply store and you'll find peeling gizmos costing four or five times as much that don't work as well. Somebody once gave me a Wustof peeler that costs over $50, and you know what? It's just as good as the Rikon at over 10x the price. It's pretty to look at, and nicer to hold, but it doesn't get your spuds naked any faster.
So why do people shell out $20,$30, even $50 for a vegetable peeler if the best peeler in the world? Because of what I call the "SUV theory of marketing": people equate heavyweight with quality, not design, performance or durability.
Office automation software hit Rikon Swiss levels of quality twenty years ago. It's possible that iOS hit Rikon Swiss levels of quality around five years ago, with support for the A7 secure enclave. After you get to a certain point, the only way to add to perceived quality is to do stuff that adds weight. Looking at iOS releases, it's probably fair to say that there have been some genuine functional improvements since iOS 7, in areas like multitasking and battery life. A lot of changes are superficial stylistic ones that dont' really matter. In some ways the operating system has found new ways to be intrusive on your attention. Those superficial changes are all excess weight added to create the perception of quality.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
living paycheck to paycheck.
There's no middle tier because the middle class has been hollowed out and, well, the middle tier was for them. By "middle class" I don't mean the numeric definition but the more generalized one of a class that has a significant amount of discretionary income.
One thing that's important to realize is that the notion that people are "living beyond their means" is generally a false narrative used by the rich and powerful to keep you and me from questioning the system. There's tons of data to back this up. All the gains since 2008 have gone to the top 1%. Wages stopped growing (and is large swaths declined) in the 70s even as productivity exploded. Essentials like Housing and education are eating up 60+% of peoples income. The commodities market was deregulated resulting in massive food price inflation. For me, I'm going to pay approximately 50% of my income between taxes and healthcare this year and my roads are falling apart, I pay for my kid's school out of pocket and I hesitate to go to the doctor. Meanwhile my country's fighting 8 (count 'em) offensive wars (meaning wars against countries that didn't attack us).
Basically, there's a fall scale class war going on that only one side is fighting...
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/