Is Software Abstraction Killing Civilization? (2021)
41 comments
·February 8, 2025recursivedoubts
llm_trw
I'd strongly suggest having a look at the Cardiac [0] and MIX [1] computers. Shift operations are pretty important and having a dedicated multiplication/division is also very useful.
The fact that all of these are (or can be) decimal machines makes it much easier for people to understand what's going on.
Jumping to binary before you understand how a computer works is like learning logic in Latin.
[0] https://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_...
layer8
The concept of files and file systems is useful to regular computer users, even when they have no interest in knowing how things work under the hood. The issue is with mobile OSs, and that software companies like their apps to be a walled garden for your data as much as possible, and therefore resist exposing your data as files living in a normal shared file system. Even if you already work with files, they have you “import” your existing data into their storage system, and you have to manually “export” (or “share“) any modifications as a new, separate copy.
recursivedoubts
Yes, also the curse of modern desktop os’s trying to trick people into storing data in the cloud. The notion of just having files somewhere accessible and organized in a reasonable manner isn’t clear to many (most?) of my students.
ilrwbwrkhv
I think JavaScript on the server and React and these things has really made the web a mess of software development compared to how little stuff it actually does.
I know for a fact a bunch of kids now do not even know that HTML is what gets rendered in the browser. They think that React is itself what browsers render.
Not to mention the absolute idiot of a CEO of Vercel who thinks React is the Linux kernel of development.
Swizec
> They think that React is itself what browsers render
My kingdom for native JSX in the browser. That would be awesome.
Something similar to how we have WebGL and Canvas, but for pure JavaScript UI without the extra step of DOM reconciliation.
There’s a small (and growing) cohort of people working on rendering React Native directly on canvas or webgl (I think). Supposedly gives you super smooth UX, but I haven’t knowingly tried it yet.
ninkendo
> rendering React Native directly on canvas or webgl
I just threw up in my mouth a little. I can’t wait to:
- not be able to double click to highlight text a word at a time, because the developers of the “super smooth UX” didn’t know that’s what typical text does.
- or triple click to highlight a paragraph at a time
- or have the standard menu available when I highlight text (which I often use to look up words, etc)
- or have text editing support any of my OS’s key bindings, like ctrl-left to move the caret one word, ctrl-shift left to highlight in the process, etc etc
- or any one of the hundreds upon hundreds of common control behaviors, accessibility behaviors, system-wide settings on text behaviors, etc etc etc be respected
Of course if they’re anything like the Flutter folks, they’ll look at every one of these things and say “well, I guess we gotta implement all that” rather than understanding the basic fact that common UI elements offered by the OS should actually be reused, not reimplemented poorly.
I really worry about what software will look like 20 years from now. At this rate we’re just going to forget every thing we learned about how it should behave.
mhitza
> There’s a small (and growing) cohort of people working on rendering React Native directly on canvas or webgl (I think)
Sounds terrible for accessibility.
__MatrixMan__
That was the whole point of react, right? To create something that wouldn't work at all without JavaScript enabled and would be enough of a mess that Facebook could effectively hide their malware in it.
I think many of Blow's points are good, but that he overlooks that much of the degradation isn't a facet of some kind of generational drift or information entropy but is straight up malevolence on the part of people making the decisions.
gardenhedge
What malware has Facebook hidden in React?
piperswe
I think they were referring to spyware hidden in Facebook's JavaScript, which uses React
booleandilemma
No one knows, it's been hidden til this day
sd9
Blow often makes fantastic points about development, and often completely misses the mark.
He’s accomplished great things and has ideas worth listening to - but also plenty of nonsense that’s presented indistinguishably.
I felt quite strongly that the collapse of civilisation talk was one of those pieces of nonsense, and I’ve largely ignored it (despite listening to it twice). I’m grateful to OP for providing a more principled rebuttal.
Don’t even get me started on Casey Muratori, who tries to do the Blow thing but doesn’t even get the good parts right.
bena
Does he though?
It seems like he just makes these broad critical statements then pisses off to continue to do nothing.
I wouldn’t even say he’s accomplished great things. He’s accomplished some decent things.
He’s released two games which barely qualify as games. They’re more like puzzles. You don’t need to play them ever again after you finish the first time. Braid is ok. And the Witness is just Flow. And then after that he’s been working on a programming language for the past decade which he hasn’t released to the public because “it’s not finished”.
He got lucky and made his nut and ever since then has thought of himself as way more talented than he is.
mjr00
> He’s released two games which barely qualify as games.
Everyone's entitled an opinion, but it's worth pointing out that Braid is not only widely considered one of the best games ever made[0], its success was also instrumental in the explosion of indie games in the late 00s/10s. The Witness didn't quite reach the same heights, but it got an 87 on Metacritic and was a financial success.
Even if it's only two games, that's a much stronger resume than most. You can argue that he takes too long to develop games, but other studios also take 8 years to makes game and come out with Concord or Dragon Age: Veilguard.
[0] https://en.wikipedia.org/wiki/List_of_video_games_considered...
yoyohello13
I do agree, although I do like him. I find it fun to listen to Blow’s rants and part of me feels like he is right to a degree. It would be nice if programmers knew more about the platforms they are developing on.
But it’s pretty clear that Blow’s process does not make him particularly productive. The dude obviously works insanely hard. I can’t imagine how much he would be able to produce if he leaned on some abstractions.
torlok
I think you're getting close to ad hominem. It should be sufficient to point out how little overall people like Blow have accomplished. Blow is a hard worker, and yet it took him and his team 8 years to develop The Witness, which as you pointed out isn't anything revolutionary. I think there's a weird form of elitism at play here. Working close to the hardware isn't hard. There was a point in my early 20s where I too felt like I'm better, because I know how a computer works, or that making games in pure C is harder than in C++. As an adult this is cringe. I work in embedded, and I can tell you there's enough low level programmers out there to threaten my job security.
xanthor
Have you shipped a commercial-quality 3D game engine and game? How long did it take you?
harrall
If an older web developer rants about abstraction, they will target React developers.
If a Python dev rants about abstraction, they will target older web developers.
If a C++ application dev rants about abstractions, they will target Python developers.
If a firmware dev rants about abstractions, they will target application developers.
If an electrical engineer rants about abstractions, they will target firmware developers.
Drawing the line for “excessive abstraction” based on what you personally know and calling everything afterwards as “killing civilization” is quite a take.
dostick
It appears that author is from that newer generation, and completely misses points because he just don’t know. Ironically the article is an example of what Blow was talking about. similar happens if I talk about how Figma is destroying the design world on unprecedented scale by normalising bad UX, UI and product management found in Figma itself, and get responses from younger designers that everything is great, completely baffled. You have all that knowledge because you grew up in that environment. They didn’t, and not likely they can learn the equivalent of culture and experience anywhere.
xandrius
Could you expand on how Figma is destroying the design world?
low_tech_punk
I'm curious too. I want to understand "Figma is destroying the design world on unprecedented scale by normalising bad UX, UI and product management found in Figma itself".
null
gtsop
Which points do you think the author has missed?
senordevnyc
So your rebuttal is that they’re wrong because they’re young and inexperienced? OK, maybe, but what exactly are they wrong about? You haven’t actually added anything to the conversation with this ad hominem attack.
rat87
Also I couldn't find the authors age but judging by the fact they say they still use an Amiga they're probably at least in their 40s(unless they're a huge retro fan)
rat87
He demolished Blows argument so I don't think it's important to bring up age but it does seem like he is likely at least in his mid forties. The Amiga was popular in the late 80s
> "The argument that software is advancing is obviously false" I still regularly use my beloved Amiga computers. A couple of weeks ago, I was copying a file to an Amiga's hard drive when the computer suddenly decided to crash on me. Not because I did something wrong, but because old home computer OS:es weren't very stable. This resulted in a corrupted hard drive partition and the OS failed to re-validate the file system. My only option was, in the end, to re-format the partition.
I don't even know much about design but I can tell your claims about Figma are totally wrong, in a similar fashion to blows claims. It's the nostalgia talking. You're forgetting the fact that user interface has always had a lot of crap, just like software just like everything. The positives of the old cream of the crop is remembered while all the crap and even all the failings of the well designed things are forgotten
null
low_tech_punk
I think this post is related: We are destroying software (https://antirez.com/news/145)
I don't disagree that software engineering is not as rigorous as it was. But software has also spread into much wider area, allowing many more people to participate as programmers, all thanks to abstractions.
I'm drawn to the romantic/pure/spartan aspect of low level programming too but I also need to make a living by solving problems in practical and scrappy ways.
null
ninetyninenine
No it’s not. Software is killing the US and not because it abstracts low level stuff. It’s because it abstracts reality in such a way that the US is becoming a nation of software engineers ignorant of even how to build the stuff it programs. We’ve moved up the stack and moving up the stack requires people knowledgeable about the bottom.
One can’t exist without the other so the world isn’t getting destroyed. China is handling the bottom of the stack. And by understanding the bottom of the stack they also become good with the top.
I used to hear shit like China only knows how to manufacture stuff the US is good at design. And I keep thinking well if you submit an entire design to China to manufacture you don’t think they will figure out how to design? Knowing how to design is easy. Manufacturing or turning that design into reality is hard.
Software isn’t killing civilization. It’s killing the US and that may seem like the world if you lived here all your life.
torlok
As somebody who works in embedded, and does kernel programming and low level networking, I wish any of Blow's fear mongering was true. It would do wonders to my feeling of job security and self importance.
keninorlando
I miss assembler and maximizing code efficiency to juggle 2k of ram.
chgs
Plenty of hand written assembler in core programs like ffmpeg. Sure most people glue together tedious JavaScript frameworks but there’s still people doing real work.
yoyohello13
Not sure if you’re being sarcastic, but I do unironically miss this.
gtsop
It is unfortunate that someone needs to pick apart a flawed thesis in such detail (as the author did with Blow). The pure empiricist is equaly as detached from reality as the pure theorist, and as such Blow is making up arguments just because they fit his experience, cherry picking examples that fit his rants and promoting the exception to be the rule.
rat87
No
https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...
Of course not
And if it were it wouldn't be something
c or c++ related but all the banks and unemployment systems still written in COBOL
I teach the systems class at Montana State, where we go from transistors up to a real computing system, and I have students that don't understand what a file system really is when they start my class
I agree that blow is wrong on some details, but I really think we need to be thinking hard around a NAND-to-Tetris style education that starts in high school for our technical students.
I use "outdated" models like Little Man Computer and a simple visual MIPS emulator which, even though they aren't realistic, at least give the students a sense of where we came from, with a level of complexity that a normal human can get their head around. When I look at modern 64 bit architecture books that get suggested for me to teach with I just laugh.
Anyway, not to say I agree 100% with Blow on everything, but connecting technology down to the roots is a hard problem.