Technology will, by itself, degrade

Sunday, January 12th, 2020

I didn’t recognize Jonathan Blow by name — he’s the “indie” game designer behind Braid, which I haven’t played, but which I have mentioned — but he recently gave a speech about a topic that interests me, Preventing the Collapse of Civilization:

He presents the key point fifteen minutes in:

This is why technology degrades. It takes a lot of energy to communicate from generation to generation, there are losses.

Nikita Prokopov summarizes it this way:

The software crisis is systemic and generational. Say, the first generation works on thing X. After X is done and becomes popular, time passes and the next generation of programmers comes and works on Y, based on X. They do not need to know, exactly, how X is built, why it was built that way, or how to write an alternative X from scratch. They are not lesser people or lazier, they just have no real need to write X2 since X already exists and allows them to solve more pressing tasks.

The biggest a-ha moment of the talk was that if you are working on Y and Y is based on X, that does not imply automatically that you would know X also. Even if the people who build X are still around, knowledge does not spread automatically and, without actual necessity, it will go away with the people who originally possessed it.

This is counter-intuitive: most people would think that if we’ve built, for example, a space ship or a complex airplane in the past, we could build it again at any time. But no, if we weren’t building a particular plane uninterruptedly, then after just 50 years it is already easier to develop a new one from scratch rather than trying to revive old processes and documentation. Knowledge does not automatically transfer to the next generation.

In programming, we are developing abstractions at an alarming rate. When enough of those are stacked, it becomes impossible to figure out or control what’s going on down the stack. This is where my contribution begins: I believe I have found some pretty vivid examples of how the ladder of abstractions has started to fall and nobody can do anything about it now because we all are used to work only at the very tip of it.

I still think a good general education would teach how to rebuild civilization. (I haven’t read my copy of How to Invent Everything: A Survival Guide for the Stranded Time Traveler yet, but it looks promising.)


  1. Bob Sykes says:

    Programmers are notorious for not documenting their work. Comment lines are missing from most code, and written manuals are often either not written or are mere abstracts.

    Also, the mere size of some projects prohibits understanding. The Shuttles were reputed to fly on 10 million lines of FORTRAN.

  2. Harry Jones says:

    A properly designed stack uses well-designed interfaces that don’t need changing because they always work and be adapted for new needs. This way lower levels can be swapped out without breaking what’s above.

    This is why we can still have TCP/IP even though 10baseT is deader than disco.

    Any and every electronic or software component can be swapped out for something newer so long as the bus specification doesn’t change. Get the bus right. Get the chassis right. Overdesign it a bit, and provide for reserved fields for future enhancement.

  3. Freddo says:

    Software engineers: software is hard
    Computer/mobile hardware engineers: ha
    Boeing engineers: too soon

  4. Bruce Charlton says:

    Add to this the (by now proven, and continuing) decline in intelligence, generation upon generation; plus problems such as micro-specialisation, convergence, always-increasing bureaucracy, anti-merit policies of affirmative action, drowning of valid signals by increased/ habitual dishonesty/ hype/ outright lying… (I could go on.)

    The answer is obvious and — at this point — unavoidable. We should prepare — I mean spiritually; because no realistic practical preparation is possible.

  5. CVLR says:

    The software crisis is caused by the prioritization of performance above all else. Everything loses to performance: memory safety, comprehensibility, even decentralized computation and, ultimately, general computation itself.

    Systems programmers loath conditionals, GCC and LLVM are each several million lines beyond the powers of mortal comprehension, running a server is so unpalatable that everyone prefers to outsource their computation to the same company, and the predominant computational device is a thin client.

    It didn’t have to be like this. Guy Steele and Gerald Sussman were right there, beckoning gently, showing us the way. But we didn’t listen.

    We should have listened.

  6. Kirk says:

    I fail to understand why programming should be any different than any other realm of human endeavor…

    Go looking for the explanation for how the Ulfbert swords were made; try to discover how they made what was called “Damascus Steel”. The knowledge was lost, the techniques forgotten.

    Hell, this is endemic to anything we do. There was a certain sort of plastic foam that was key and essential to how we built nuclear warheads during the 1960s and 1970s. With the various anti-nuke treaties, that manufacturer went by the wayside, bankrupt. The poor bastards who were tasked with refurbishing the warheads in the 2000s were forced to pay someone to reinvent the wheel in order to recreate that foam.

    Then, there’s the social crap. My grandmother was a schoolteacher in the early decades of the 20th Century. She had no problem bringing kids to a point of functional literacy and numeracy, even working in a one-room schoolhouse in the northeastern mountain wastes of Oregon. Somehow, the knack for doing that has been lost, and our multi-million dollar schools with academically certified “experts” can somehow fail at the same basic job.

    You want an explanation for it? I’ll give you one: Nobody recognizes the water they swim in, or thinks that the environment they take for granted is something that might, maybe, change. Vegetius either didn’t know, or did not understand the import of describing precisely how the Romans marched, so he didn’t bother to pass on to us whether they stepped off from the left (unlikely, given Roman traditions about the sinister nature of left-handers…) or right, let alone if they even marched in step in the first place. We still don’t know. If we did, we might have more insight into the history of some battles.

    Hell, for that matter, the exact details of how the Romans traded off fighting in the front ranks of a manipular legion is still a bone of contention. Wasn’t recorded, we don’t know.

    So, yeah… Computer scientists? Welcome to the club, and I’d love to know why you thought you’d somehow be different.

  7. Gaikokumaniakku says:

    I could have sworn that one of the books in Frank Herbert’s Dune series includes the quote “Any machine will fail, given time,” but I couldn’t find the page number when I looked. Frank Herbert aside, I frequently get obsessed with the question of how to express industrial knowledge in sustainable formats.

    I used to make the mistake of asking factory managers to explain how their factories work so that I could document the process. It’s amazing how nasty industrial engineers can get when you ask them to explain some things that they perceive as trade secrets. So part of the problem is that some of the experts are extremely committed to keeping their secrets hard to access.

    Another problem is that you can’t buy a decent student chemistry set any more. How the hell am I supposed to fill in the gaps in my education when everyone thinks chemistry is too dangerous to be learned?

  8. Harry Jones says:

    The key to not having secrets lost is never to make things secret in the first place. There is open source code running on my computer that is decades old. It just works is all.

    But proprietary software? I’ve been playing with QEMU. Aside from games, there’s no closed source from decades back that’s worth running. Games only matter because they’re disconnected from the real world, so you don’t need to import or export recent data.

    And ancient computer hardware? Not much hope of running that stuff. On the other hand, not much need – unless it’s standing in the way of some old data files that you really want. In which case, should have transferred the files when you had the chance.

  9. CVLR says:


    Software is different because there’s no law of nature that says that software has to become more and more useless over time. The physical representation in hardware degrades as the physical machine degrades, but the code itself is more like math than anything else: inviolable and eternal.

    And if there were an economic incentive to produce a mass-system at a much higher level of reliability, it would be simple and straightforward to do so. In particular, interoperability was a nice idea, but it doesn’t work; you need to bind the language implementation and the instruction set.

    Fortunately, all the information is out there. Unfortunately, the market isn’t providing. A tremendous consolidation has occurred, from dozens of options to two or three, at every level: architecture, compiler, operating system.

    Someone should do something about this.

  10. CVLR says:

    Gaikokumaniakku: “Another problem is that you can’t buy a decent student chemistry set any more. How the hell am I supposed to fill in the gaps in my education when everyone thinks chemistry is too dangerous to be learned?”

    But wouldn’t want terroriss to be able to commit terrorissm, would you, my fellow law-abiding citizen?

  11. Kirk says:

    The issue I have with regards to it all is the sheer bloody waste of it all.

    Back when, I was what you might describe as a bit of a fledgling DOS power user, who’d had a bit of experience with CP/M. When the OS wars were going on, I looked at the generally kludgy nature of Windows, the essentially toy-like nature of the Mac OS, and I plunked down for the biggest failure of the lot, OS/2. Now, OS/2 was a thing of beauty and power, once you got it running–There were features in it and its associated “extras” that I still miss, to this day. I haven’t seen any Internet browser that was as well-thought out in some regards as the native OS/2 one, for example. In that browser, if you wanted to see your browsing history, it produced a tree outline so that if you’d backed down a particular branch of research, you could call it up, and look at something from earlier on. In today’s browsers, that utility feature simply isn’t there.

    Similarly, there were a lot of OS/2 programs that had functionality that the Windows equivalents simply did not have. DeScribe, for example, was a word processor that basically mimicked a lot of what you had in Adobe Pagemaker, in terms of being able to create actual documents that were ready for printing. And, it worked–None of this “Well, let me move this illustration over a few spaces… Oh, crap… I’ve summoned Satan, and my document is now gibberish…”.

    All of that work is basically gone, now. If you wanted to replicate or even run DeScribe, you’re screwed. I can’t even find a file conversion utility to look at documents created under it, these days, and when the functionality was there in Word, it usually produced a stream of useless crap.

    So, the point I’m getting at with this that there are a bunch of “lost” programs back there, that have simply vanished. And, some of them were a hell of a lot better for actually doing work with, compared to the crapware that became financially successful.

    What I think they ought to be doing with all this stuff is to say that “Hey, if you’re not supporting this or selling it, you’re required to open it up and make available all the binaries with the Library of Congress…”, an institution that ought to be making its business the preservation of this sort of thing. It’s one thing to have a patent on something, but if you go out of business, you need to make your IP open so that people can continue to use your product, especially if it is something like that foam needed for making nuclear weapons.

    Likewise, publishers ought to be able to only copyright things that are available. The minute you can’t buy a new copy at a reasonable rate, bang–It’s in the public domain. Period.

  12. Graham says:

    As Kirk suggested, the moral applies far beyond computer software, hardware, or even technology.

    Within that realm, I rather like some of those solutions on the issues of copyright and preservation. Even the web could use something better than Internet Archive, but that site is at least an effort. For the actual content of software, designs of hardware, etc., preservation should be an institutional priority.

    Two lighter notes-

    Scottish comedian Billy Connolly in the 1990s did a video series called “Billy Connolly’s World Tour of Scotland”. At one point, he takes the viewer to a medieval house in Glasgow, Provand’s Lordship, and describes it’s name, age, and some history. Then he takes us to the hole/construction site where once was the council housing he grew up in. He then asks us rhetorically, citing Provand’s Lordship, “What did we know then about building houses that we don’t know today?”

    Silly, sure. I’ll bet that ancient pile was cold and damp and it didn’t have plumbing or electrical infrastructure or anything more high maintenance than mortar. Still, who among us doesn’t see both the humour and the barb in a set up like that?

    And in Christian Cameron’s novel of Alexander the Great, told from Ptolemy’s POV [highly recommended], there is a scene that has stuck with me. After seizing Babylon, Alexander and his generals are escorted into the depths of the temples and shown the halls of records, with data on things like the rise and fall of the Euphrates going back a couple of millennia. The king reflects on the mere 400 years or so of his rude kingdom. It’s a well written sequence.

    OK, their medium was limited in its storage capacity and complexity, consumed much physical space and labour/time, and even so ultimately most of it has been lost. But still, not all, and that after even more millennia. What did they know about archiving that we don’t know today?

  13. Graham says:

    For Bruce Charlton,

    Do you know any good discussion of the Flynn Effect that incorporates an effective critique? I’ve been persuaded by the idea in the past.

  14. PseudoKlausius says:

    “I still think a good general education would teach how to rebuild civilization.”

    I’ve come across the claim that Soviet engineers were given exactly such a general education, then sent off on civilising missions to remote Siberian outposts. Along the same lines, the Soviet space program had a reputation of being relatively low tech and that the cosmonauts had to be jacks-of-all-trades, most of all generalist engineers and only secondly pilots. As a friend likes to point out, if it it doesn’t get nuked, then Russia is a good candidate for surviving the downfall of civilisation, having come through two complete breakdowns of institutions and one catastrophic war in the last hundred years.

Leave a Reply