Files
davideisinger.com/static/archive/andrewkelley-me-jlnnop.txt
David Eisinger 53a15c22a3 Finish april post
2024-04-08 00:10:54 -04:00

280 lines
15 KiB
Plaintext

[1]Andrew Kelley - Why We Can't Have Nice Software (2024 Feb 04)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why We Can't Have Nice Software
The problem with software is that it's too powerful. It creates so much wealth
so fast that it's virtually impossible to not distribute it.
Think about it: sure, it takes a while to make useful software. But then you
make it, and then it's done. It keeps working with no maintenance whatsoever,
and just a trickle of electricity to run it.
Immediately, this poses a problem: how can a small number of people keep all
that wealth for themselves, and not let it escape in the dirty, dirty fingers
of the general populace?
This is a question that the music industry faced head-on, and they came up with
EULAs, enforced via the state's monopoly on violence, and DRM, a way for
software to act antagonistically against its own users. Software can do useful
things like encode media into bits, and then copy those bits. That's
dangerously useful, and it had to be stopped.
The True Cause of Bitrot
What about bitrot, you say? It takes ongoing maintenance to keep software
working, doesn't it?
Let's think critically about bitrot for a moment because, as a reminder, bits
don't actually rot - that's kinda the point of bits. In the best case scenario,
bitrot happens due to progress - perhaps a dependency has made improvements but
requires breaking API compatibility, or better hardware comes out and the
software needs to be recompiled for that hardware. In this case, it's kind of a
happy outcome. Some labor is needed to enhance the software in response, but
then, once again, it's done; ripples disappearing from the surface of a lake
hours after a stone is thrown into it.
The darker side of bitrot is due to businesses trying to make more profit than
last year, and launching marketing initiatives. For example, Microsoft shipped
a Windows Update that puts advertisements into the start menu, advertisements
into the task bar, and changed the control panel's user interface to unify it
with their business incentives - namely a superficial makeover to justify
customers paying additional money for what is effectively worse software - it
has new bugs and is now ridden with advertisements. This caused a bunch of
churn in their own codebase, as well as other software trying to use native
user interfaces on Windows.
It's all so incredibly wasteful. And that's the point, isn't it?
The programmers at Microsoft could have done less work, or worked on bug fixes
instead. The UI designers could have done less work, or tweaked their existing
design instead of making a new one. The managers could have done less work.
Customers could have paid little to no additional money for a Windows Update.
This all would have culminated in a more robust version of Windows that
customers preferred, instead of one that is effectively boycotted like Vista
and Windows 11.
It's actually a problem that software is too efficient and has this nasty
tendency of being completed. Software offers us a glimpse into a post-scarcity
society, but it is being actively sabotaged by those who seek to turn a profit.
Platform Waste
Consumers love standards. Standards allow multiple parties, perhaps even
competitors, perhaps especially competitors, to have interchangeable components
with each other, which gives consumers options, and negotiation power.
For-profit companies hate standards. They would rather have their own special
cable, for example, that only works for their devices, and only they are
allowed to manufacture them. To be more specific, underdog companies like
standards because it lets them compete. The established players don't want to
have to play fair.
You can see this playing out right now with the [2]EU formally adopting a law
requiring Apple to support USB-C chargers. At the time of writing there is no
such law in the United States, but it is [3]being discussed by politicians.
Standards allow software to be more efficient. By sticking with a standard for
a period of time and then coordinating an upgrade to a newer one, software
churn is minimized, resulting in a fixed amount of software development labor
needed.
On the other hand, without a standard, for-profit companies are incentivized to
fiddle with their product in a wasteful manner. For example, Apple has in the
past made insignificant changes to their charging cable, making it not
compatible with the one from the previous year. This resulted in more profit
for Apple since consumers found their existing cables useless and had to buy
new ones. Ultimately this resulted in more money being spent in the economy,
increasing the country's GDP. Economists rejoice; the Earth weeps.
Think about how many messaging apps have come and go and how much programmer
hours have been wasted on them. We almost had XMPP be mainstream, but then
Google outgrew their "don't be evil" diaper and put on their "make profit" big
boy pants. If your goal is to turn a profit, it's obviously the correct choice
to invest into a platform that you own. So then we got a half-dozen buggy
messaging apps from Google that didn't even work with each other, let alone
Apple's platform or the other contemporary players.
The new hotness is Discord, which is already starting, predictably, [4]to decay
. I can't believe a human sat down and wasted hours of their life coding "super
reactions". It's not something that really needed to happen.
Imagine if all these programmer hours spent on all these products actually
centered around a proper standard, which evolved along with consumers' needs
rather than these companies' ongoing need to fiddle with the knobs and sliders
until profit comes out. The thing is, if this actually happened, then what
would these employees spend their time on? At some point society would be
pretty much done implementing messaging software. Messaging app updates would
be rare, and bugs in messaging apps would be rare. We would reach peak
messaging.
Peak Dishwasher
Decades ago, we already did it. We reached peak dishwasher. Dishwashers
achieved perfection, and it was no longer possible to improve them. The
mechanics were optimal, the user interface was ideal, and consumers had no
desire for any changes.
One would, naively, think of this as an accomplishment. But how is a company
supposed to make more profit than last year? By any means necessary, of course.
They invented these dishwasher detergent pods that are actually a downgrade -
slightly more time consuming to use than powder, more expensive to manufacture
and purchase, worse for the environment, and most offensive of all - actively
sabotage the dishwasher's prewash feature making the product actually function
worse than before!
And from a business perspective, it is a critical success. They found a way to
make consumers spend more money on dishwashing. The line goes up, for one more
year. But it's not enough. It has to go up every year. What else can we do?
I found myself in a position where I needed to buy a new dishwasher last month,
and, already being aware of this problem, did my very best to buy one that
worked well. I picked one that had 5/5 stars on Consumer Reports.
Unfortunately, the dishwasher that I ended up with is my worst nightmare.
It takes 30 seconds to boot up, presumably because of the Bluetooth and WiFi
driver in it. Many of the configuration options are hidden behind a proprietary
app. The buttons are hidden and touch based instead of being visible and
depressing with natural tactile feedback. I still haven't yet done the chore of
going into my router and disabling it from accessing the Internet. I had to
give it access to use the app to find out why it was broken. Until I do that
chore, there's a chance it could auto update and have a firmware bug and stop
working, or just waste my bandwidth. Who knows what it's up to?
Meanwhile, I had to call a repair technician to fix the door latch already, as
well as the soap dispenser latch. Both things have since failed to work
properly again and I still need to do the chore of calling the company to get a
repair done a third time.
Before we moved, we had an older dishwasher that worked perfectly. No Internet,
no Bluetooth, and the door latches worked flawlessly through thousands of runs.
The problem with the requirement for each year to be more profitable than the
last is that once you reach the peak, once it's not possible to actually
improve your product any more, you still have to change something. Since you
can't change it to make it better, you therefore will change it to make it
worse.
What Blockchains and LLMs Have in Common
Plenty of people roll their eyes at blockchain being the new buzzword, or about
how tech is overobsessed with AI (LLMs) right now. It's easy to chock it up to
it being a silly, harmless fad perpetuated by uneducated or misguided people,
but in reality it's a lot more intentional than that.
Most tech workers work 40 hours per week at some company. That's a lot of
collective hours spent on something. What factors go into deciding, as a whole,
what that effort is spent on? Employees have some choices in the matter, but in
the end those choices are limited to job offers. Job offers are created by the
owners of companies who decide what they want to invest their money into.
In other words, venture capitalists decide what is the current hotness
precisely by directing large amounts of labor towards whatever they want.
Empirically, VCs are primarily motivated by seeking a return on investment. The
goal is to turn a big sum of money into an even bigger sum of money. In theory,
this is because with an even bigger sum of money, you can then start to spend
that money on directing an even larger amount of labor towards whatever you
want, bypassing democracy to influence the future of humanity, but in practice,
most VCs get fixated on that return on investment until they die.
If you were to criticize blockchain technology from a purely technical
perspective, you might point out the flaw that proof of work requires an
exponentially increasing amount of computational power, and thus electricity,
in order to keep the blockchain database alive over time. You might point out
how inefficient of a database it is. But you would be missing the point.
Blockchain technology excites investors precisely because of how wasteful it is
. Even if we had fusion (!!) it would eat up all that energy and more. It's
difficult to express the magnitude of how wasteful this is, and the fact that
it's built into the system intentionally is sinister.
Blockchain technology is a kind of software that doesn't get completed or
perfected. Rather it's the opposite; the longer it is in existence the more
work it creates for everyone to do. The waste is a feature; it's how the [5]
line goes up.
Reminds me of this scene in The Fifth Element where Zorg says:
Life, which you so nobly serve, comes from destruction, disorder, and
chaos. Now take this empty glass. Here it is: peaceful, serene, boring. But
if it is destroyed... look at all these little things! So busy now. Notice
how each one of them is useful. What a lovely ballet ensues, so full of
form and color. Now, think about all those people that created them.
Technicians, engineers, hundreds of people who will be able to feed their
children tonight so those children can grow up big and strong and have
little teeny children of their own and so on and so forth. Thus adding to
the great chain of life.
You can find this scene on YouTube but I won't link it for fear of accidentally
causing someone to view an advertisement.
LLMs offer an even more ideal kind of software to the investor. First of all
they require an enormous amount of capital to train, and specialized hardware
to run, making them suitable to offer as a service, where the amount of profit
can be made to go up in a controlled manner. What a delicious idea.
More to my point, they offer a host of subjective, ill-defined tasks that are
immune to being completed. They've managed to take something well-defined,
well-scoped, and completable, and turn it into an untameable monster that will
be sure to offer software churn for decades to come.
Have a peek at this blog post that is going around lately: [6]The pain points
of building a copilot
These people are brimming with excitement about all the new problems that LLMs
are bringing to the table. Some choice quotes:
Prompt engineering is time consuming and requires considerable trial and
error...As one developer said, "it's more of an art than a science".
Testing is fundamental to software development but arduous when LLMs are
involved. Every test is a flaky test.
The field is moving fast, and it requires developers to "throw away
everything that they've learned and rethink it."
Developers are having to learn and compare many new tools rather than
focusing on the customer problem. They then have to glue these tools
together.
It is still the wild, wild west ... It will be interesting to see how
software engineering will evolve, either through new processes or tools,
over the next several years.
LLMs are a way to make software take orders of magnitude more computational
power, electricity, and human labor, while delivering a product whose extremely
volatile quality is impossible to assure. The work will never be completed; it
will only create the need for ever more labor.
For investors, all this churn is attractive. It's disruptive.
It's why we can't have nice software.
Conclusion
Technology, and in particular, software, offers a glimpse of magic; a perpetual
motion machine; wealth created from nothing. It offers us a chance to work
together on something beautiful; to achieve perfection by ratcheting
improvements over time.
In the end, this opportunity is squandered in a doomed quest for endless
growth.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thanks for reading my blog post.
[7]Home Page | [8]RSS feed | [9]Sponsor the Zig Software Foundation
References:
[1] https://andrewkelley.me/
[2] https://www.cnn.com/2022/10/24/tech/eu-law-charging-standard/index.html
[3] https://techcrunch.com/2022/06/17/senators-call-for-us-to-adopt-common-charger
[4] https://www.eff.org/deeplinks/2023/04/platforms-decay-lets-put-users-first
[5] https://www.youtube.com/watch?v=YQ_xWvX1n9g
[6] https://austinhenley.com/blog/copilotpainpoints.html
[7] https://andrewkelley.me/
[8] https://andrewkelley.me/rss.xml
[9] https://ziglang.org/zsf