Jonathan Blow – Preventing the Collapse of Civilization
youtube.com
youtube.com
* Knowledge is ephemeral. Even recording knowledge doesn't imply or guarantee that it will be passed down the generations entire. In fact, throughout history there are times when humankind 'forgot' how to do certain things.
* This applies to software. Software is getting so much more complex (as is hardware) that the knowledge for how to do the intricate or demanding things isn't held by many people, which makes it brittle. Adding layers of complexity on top of each other has created a tower of abstraction that people usually only know a part of, which makes the entire stack brittle if not enough people know every part of it and something breaks (maybe in a hundred years, but if that truly happens, there will be no way to fix it).
Jonathan Blow makes some recommendations about how to avert what he calls 'the collapse of civilisation'. To summarise:
* Simplify tools and processes. Reduce complexity, reduce dependencies.
* Get a better, more intuitive understanding of your technologies and tools at a lower level.
He doesn't explicitly solutionise this, but I would argue that his game 'The Witness' discusses this at varying levels of detail. The gameplay and puzzles demonstrate breaking up knowledge into small composable chunks which can be taught intuitively and wordlessly. The additional materials more explicitly discuss knowledge, learning, understanding and (more generally) truth seeking. If one wanted to avoid the collapse of civilisation, as outlined by the talk, one should play this game and contemplate its message deeply.
I wish, just once, that technology people would actually consult historians of science when making these sorts of claims. There is an entire community of people who study this topic for their entire lives and write books about it.
Yet myths persist. So many of the examples of "civilization forgot" are actually just false or at the very least the conclusions drawn about society from these stories are highly misleading.
He makes the same claim about alchemists fire. Again, ill supported.
There are a tremendous number of reasons why ancient technology might not have surviving records to today. Amateur historians love to just assume this is due to "civilizational collapse."
He also seemingly inverts things. Is civilizational collapse the cause of loss of technology? Or is it the opposite? Does technological de-sophistication cause civilizational collapse? He seems to argue both in his talk.
To that end, I don't think he needed to consult a historian in order to make his point any more valid, but he could probably have done with a historian proofreader to tidy up any flowery language that might detract from the overall message.
https://en.wikipedia.org/wiki/Dark_Ages_(historiography)
"The term employs traditional light-versus-darkness imagery to contrast the era's "darkness" (lack of records) with earlier and later periods of "light" (abundance of records).[3]"
Not having records being categorized metaphorically as darkness, and more records as "Enlightenment" is pretty high regard for a word used the same way in the contemporary context as something an accountant or dentist keeps in a filing cabinet.
I'd say these "historians of science" you speak of would corroborate that the lost works of Euclid https://en.wikipedia.org/wiki/Euclid
and the near permanent loss of Plato's works to the whole of Europe for hundreds if not over a thousand years as, uh, kind of a big deal.
https://en.wikipedia.org/wiki/Plato#Textual_sources_and_hist...
To quote:
"Science historian David C. Lindberg criticised the public use of 'dark ages' to describe the entire Middle Ages as "a time of ignorance, barbarism and superstition" for which "blame is most often laid at the feet of the Christian church, which is alleged to have placed religious authority over personal experience and rational activity".[52] Historian of science Edward Grant writes that "If revolutionary rational thoughts were expressed in the Age of Reason, they were made possible because of the long medieval tradition that established the use of reason as one of the most important of human activities".[53] Furthermore, Lindberg says that, contrary to common belief, "the late medieval scholar rarely experienced the coercive power of the church and would have regarded himself as free (particularly in the natural sciences) to follow reason and observation wherever they led".[54] Because of the collapse of the Western Roman Empire due to the Migration Period a lot of classical Greek texts were lost there, but part of these texts survived and they were studied widely in the Byzantine Empire and the Abbasid Caliphate. Around the eleventh and twelfth centuries in the High Middle Ages stronger monarchies emerged; borders were restored after the invasions of Vikings and Magyars; technological developments and agricultural innovations were made which increased the food supply and population. And the rejuvenation of science and scholarship in the West was due in large part to the new availability of Latin translations of Aristotle.[55]"
ETA: Also didn't realise you're the same person I replied to below!
Your catch proves that issue is not remotely settled, and to my mind, indicates that more rigorous counsel with historians will only add depth to debate, rather than resolve it.
I would suggest UncleMeat just advocate that people like Jonathan Blow take the history out entirely, and argue why this contemporary technology isn't good enough relative to our resources and skills.
Arguments about sourcing feel like face saving rather than legitimate criticism of the view bought forward by UncleMeat. After all the original video is completely unsourced but apparently beyond reproach in that regard. Also where we have sourcing (for example the Dark Ages wiki) it only strengthens the point made by UncleMeat as they were indeed correct about the views of historians.
More broadly if we want discussion to be well sourced we shouldn't apply that selectively and in particular selectively against the people who disagree with us.
I'm not interested in getting suckered into believing some randall carlson gobbledygook, the type I might leap to assume UncleMeat would find quite problematic.
I just think UncleMeat initially came in, said something along the lines "this is bad, don't do this, ask people who know better" and it has been made clear they had the capacity to contribute more that what read to me as nothing more than the logical fallacy that is an appeal to authority. They have clarified their position enough to where I can no longer be left with such impression.
Largely yes. The term "the dark ages" was developed by Petrarch, a man who was so obsessed with the Romans that he had himself crowned with laurels to signify his inheritance of Rome. And this is also largely unrelated to history of science, since "the dark ages" (as expressed by both Petrarch and pre-20th century historians) does not refer to loss of scientific knowledge.
> Not having records being categorized metaphorically as darkness, and more records as "Enlightenment" is pretty high regard for a word used the same way in the contemporary context as something an accountant or dentist keeps in a filing cabinet.
But Petrarch was hundreds of years before the Enlightenment and would have hated it. He believed that the Romans were the peak of civilization ever. It was not possible to top them. The idea that modern humans could improve upon what they did would have been anathema to Petrarch and most Renaissance thinkers.
But most importantly, these historians of science would take issue with Blow's conclusions from specific examples. He lists a few "lost" technologies and then concluded methods to prevent technological loss that are entirely unrelated to the examples he lists. At most, all they demonstrate is that it is possible for some things to go unrecorded.
meheleventyone has demonstrated how easily even just referencing the article I myself posted could undermine my argument.
I'm not a historian. But my wife is. And she ranted for a while after the first ten minutes of this talk for precisely this reason. I could have provided more scholarly sources. It is an internet forum - I didn't think people would call me names if I didn't. That historians of science don't like the term "The Dark Ages" isn't exactly cutting edge scholarship.
I don't believe that he did put a lot of research into the historical background. It is possible I am wrong. The reason I believe this is because at least one historian I trust who works in an adjacent subfield went on a big rant about these being classic misconceptions.
I believe that Blow is very smart and quite knowledgeable about software. I also believe that a lot of engineers believe that they can make huge claims about the nature of history without consulting professionals. These errors are often harmless but the are also often harmful, either causing us to draw false conclusions about the past or today.
Like you say below, Blow would have been better off skipping the first 10m of his talk.
Unfortunately as far as I can tell, we don't have a circuit of public intellectuals, who happen to be historians, giving well thought through talks to lay people. We have ted talks on a good day, and those are often filled with dumb things said by smart people who should know better.
You and I haven't even touched with a ten foot pole the other side of the coin of that "Western History" implies. I won't attempt to in this thread either.
https://www.jstor.org/stable/2707236?seq=1
The same wikipedia article says that Petrarch noted for initiating the Italian Renaissance by way of rediscovering letters of Cicero who happens to have died in 43bc. He is then credited with founding Renaissance Humanism in the context of the above.
The above claims seem some plausible given the summary texts that mention Petrarch given by the page on Humanism given by the Library of Congress
https://www.loc.gov/exhibits/vatican/humanism.html
One recontextualization of the concept of the dark ages of the type implied by UncleMeat (my interpretation what was implied, not UncleMeats) is given by this publication by The University of Michigan.
https://www.press.umich.edu/15299
This is all very interesting, but I'd like to point out absolutely none of it seems to automatically leave the dilettante historian like myself from coming away with the impression that knowledge, scientific or otherwise, has not been lost in a meaningful way and thus throughout history did not necessitate some obsessed persons to resuscitate it.
Blow just says "then the roman empire fell and that knowledge was lost" when discussing the Lycurgus Cup. He just states this. No citation or investigation. This is the classic oversimplification of both technological record keeping and the nature of the collapse of rome. There is no clear evidence that the "fall of rome" (which means about a dozen different things that happened over 1000 years) is responsible for the mechanism for creating such glass being unrecorded.
He makes the same claim about alchemists fire. Again, ill supported.
There are a tremendous number of reasons why ancient technology might not have surviving records to today. Amateur historians love to just assume this is due to "civilizational collapse."
We still don't know how to read Linear A; it is on the wrong side of the Collapse and we don't have a Rosetta Stone or other transitional artifact yet which includes it. It is not unreasonable that it could take us millennia to recall how to do things which we've forgotten.
He also makes the point that collapse often happens over the course of many generations. ~100 years for the bronze age collapse and ~300 years for the collapse of the Roman Empire. I think this is a key point because it is something we don't intuit easily. He then goes on to say that the loss of knowledge that results in such collapses is often the result of a lack of generational transfer of knowledge (hence the slow collapse). This is a well known problem, the Bus Factor. If we want to prevent the collapse of our civilization we need to vastly increase that number on a societal level.
* An industry that can't produce robust software has produced several server operating systems capable of uptimes that far exceed the expected life time of the hardware they run on. [0] Writing this, I checked in on a random server I've got access to. The uptime is 350 days.
* I reboot my personal Linux laptop only when I myself want to install the latest kernel update. The current uptime is 46 days and I use that machine for programming, watching movies, surfing and whatever else I feel like doing.
* I'm willing to bet a few bucks that there are more C and assembly language programmers around now than there has been at any previous point in time.
* I'm pretty sure Blow couldn't have made his presentation slides, recorded his talk, uploaded it to a web site and then watched it in a web browser using Ken Thompson's three week Unix, even if it was running on modern hardware.
* It's true that the OS in both abstract and concrete ways removes capabilities from the CPU, but it also adds a lot of capabilities such as multitasking.
* Pretty much all of the things listed on his "You Can't Just..." are perfectly doable in E.G. Linux. It's not the OS that removes this capability, it's the work of companies trying to protect their revenue (through DRM, IP laws, patent enforcement etc.). I can (and still do) write software in a simple editor without a language server in sight, etc.
Meanwhile, my old Amigas - which I love to bits - crash fatally all the time. Just a few weeks ago, one of them pulled a hard drive partition along with the crash and I actually had to reformat it because re-validation failed (luckily I had nothing of importance on it).
[0] https://arstechnica.com/information-technology/2013/03/epic-...
The same game, replicated in Unity, requires a several gigabyte download just for the developer to light up a white pixel on a black background in Unity.
Is the juice of Unity worth the squeeze? It depends on the game I think. Using Unity to get a Super Meat Boy clone on a Nintendo switch starts to ride the line of absurdity (i.e. using a massively complex and capable game engine to make a knock off of a beefed up version of a flash game that was paying homage to games written in 6502 assembly and booted instantly and never crashed).
The crucial part here is that software caused the hard drive to fail. That was my point - I think it's easy to forget how fragile most home computer OS:es were 25-30 years ago compared to today.
Abstraction fosters ignorance and complexity is fragile, I agree with him on those points. But I also think he makes very sweeping, erroneous statements about software and development.
There are tradeoffs being made in all three choices and each will suit a different context.
Maybe you'll think "What about Celeste?" at which point you'll have only proven both of our points equally at best.
I thought your whole point was that everyone already has a stable browser, and shipping games as some bare metal or in some half bare metal form is really the developers imposition if the game could have just as well run in a browser.
From the Godot download page:
"Godot is currently not code-signed for macOS. See the last section of this page for instructions on allowing Godot to run anyway. Alternatively, you can install Godot from Steam to work around this." So what does that leave, Windows and Linux on x86-64?
Isn't this the kind unjustified hoops that Jonathan is criticizing, that people criticize Apple for not making it viable for a clearly legitimate OSS project to have to deal with? It definitely isn't something that would make me confident recommending a middle school game programming class to depend on working one semester to the next.
You've decided to take one of those options and attribute a bunch of arguments to me I've never ever uttered.
I still don't think you've addressed my core point, and it's quite probable I wasn't clear enough to make that possible.
My white pixel example was referencing the talk, where I interpreted Jonathan saying almost verbatim about the barriers to just lighting up a single pixel on a modern computer. I made the assumption that everything he opines on publicly is in the context of him making games.
Is this whole stack overflow thread just a bunch of masochistic programmers, or is it needly complex to achieve consensus on how to plot a pixel in a browser canvas? I'll take responsibility for begging the question in jest. https://stackoverflow.com/questions/4899799/whats-the-best-w...
If one wants to start the game they are going to make in the same engine the are going to finish making it in, for most people, unity is going to be worth the gigabyte download. If you just want to teach kids html/css, the server stack in python, and how to change the color of one pixel in the browser is lesson one day one on a raspberry pi, fantastic. If one wants to write a mario clone and ship it in electron, bravo.
I actually did this whilst playing about with Zig a while ago. I made an offscreen buffer, rendered pixels to a frame buffer array in WASM and then copied them into the offscreen buffer. Not going to win speed awards but it worked, was fast enough and was super simple. Also it meant I could scale the canvas to scale my image. This was for a very small screen representing windows in a building. My proof of concept was approximately 30 lines of JS and the same again in Zig. Most of the latter is type definitions.
Although given that Canvas is supposed to be a friendly abstraction it definitely feels like a weird oversight. Personally for pixel sized things I love PICO-8.
You have a good point to make, but the argument you've employed is bad. When you said,
> In the days of the Amiga or the Archimedes, it was quite possible to boot entire app or os/app combo and just leave the computer on indefinitely, without it crashing itself even if untouched.
You've mixed up reliability with understandably & maintainability. In an uptime competition, a retrocomputer will lose the game to many modern computers, it's almost guaranteed. But it's not the point. The point is what happens after it's down. If it's a retrocomputer, it's possible for a single person to understand every aspect of the computer and to perform troubleshooting down to the component level. It's also easy for a single hobbyist to build one's own computer using the 6502 chip. But it's usually impractical or impossible on modern hardware. My personal understanding on the thesis of the talk is that modern computers have much less understandably & maintainability than retrocomputers, and this, in the long term, makes the civilization as a whole, less reliable. It's not a question of how durable we can make a single computer to be.
You can make a better argument if you stop saying how reliable retrocomputers are and focusing on understandably and complexity.
Notice I said "even if left untouched." Perhaps that was too charitable, as these retropcs, without memory protection, would often crash if metaphorically "touched." It would happen often with productivity apps, much less so with games. As time has gone on with pcs, this seems to have flipped, a fair trade for the time being.
I think I now understand your argument now.
Was it linux? Not exactly a product of industry.
This annoys me as well. Visual Studio Code is about changing individual bytes in tiny plain text files. I don't think it has a single feature that didn't exist before. Yet its startup time is somehow closer to that of a full-fledged IDE, almost as long as the whole operating system needs to boot. Same with websites; a freshly configured email client can download a thousand messages from the server in a shorter period than it takes to load most news articles in the browser.
And the most baffling thing to me is that such things are so widely accepted. I've seen many users shrugging it off with a "that's just how computers are" mindset; many things are implemented so badly people don't even expect them to work properly.
This may sound a lot like "old man yells at cloud" material, but in the end it can't be denied performance is often at least an order of magnitude away from where it could be - my current laptop has 32 times as much RAM as my first PC, and it still swaps just as frequently.
Only if you are being amazingly reductive. VSCode is about changing desirable sequences of bytes into more desirable sequences of bytes, where the definition of "desirable" is stupendously complex and depends on state that exists on many other computers around the world. If you just want to change bytes you can open notepad or nano and watch as they boot instantly. VSCode is much closer to Eclipse than nano in its capabilities.
> And the most baffling thing to me is that such things are so widely accepted.
To me I think about things like screen refresh rate or keyboard latency. Some people demand 120hz or incredibly low keyboard latency. But I'd wager that the percentage of people who care about such things are a rounding error. Even among hardcore gaming enthusiasts, optimal fps has only doubled over the past three decades. So there is way more real time to do stuff, and developers fill that time! They might fill it with features or they might fill it with lower development costs.
What exactly can it do that Vim or Emacs can't? Vim starts up literally 100 times faster on my machine, with 17 active plugins. It also runs everything in a single thread and is still more responsive than VSC in almost all scenarios.
What are those stupendously complex features that somehow make a slow start unavoidable? Or to go with your comparison, why do you think Eclipse has a good reason to start so slowly, on a modern 8+ thread CPU and SSD?
Emacs I haven't tried nearly as much, but it has a poor Windows OS experience, and is also historically a "bloated" software ("Eight Megabytes and Constantly Swapping").
Of course there is no reason Vim couldn't be modified to do everything VSCode does but better, but until that happens VSCode will still have a place in my toolbox.
To me, this is the most damning evidence that our industry sucks at its job. We're so bad at making our products that users expect them to be slow and broken all the time.
What makes it stand out particularly is the careful collection and articulation of concrete examples and historical references.
https://news.ycombinator.com/item?id=25714719
Jonathan does a better job than I did explaining the premise of how retrocomputing isn't just a means to nostalgia, but a means to make sure and verifying we've improved personal computer hardware/software since the initial boom. Emulators don't give us the insight into the whole stack or understanding on the true reliability of these old systems.
As Jonathan says, if our laptops today aren't capable of 99.999 percent uptime, then none of the software runnning on it can be either.
In the days of the Amiga or the Archimedes, it was quite possible to boot entire app or os/app combo and just leave the computer on indefinitely, without it crashing itself even if untouched.
Unfortunately, it is a really shallow analysis of this topic. He'd do well to speak to experts in history of technology/science when drawing such huge conclusions about humanity. This is just enough history to get people into trouble.
They often weren't consistent in their arguments over time - instead crafting their argument to most elicit an emotional response in the reader so that they were compelled to reply.
He is often quite blunt though. He doesn't usually go out of his way to say things nicely and, being somewhat in the same boat, I think this is mostly because he's just sick of seeing the same bullshit over and over. It is frustrating.
Here is a challenge... can you join the 1 MIPS club?
Can YOU do useful work with 1,000,000 Instructions per second? A VAX 11/780 was enough compute power for a small academic department in the 1980s, and would have dozens of Terminals attached, with people doing real work. It was almost exactly 1 MIPS. Can you live within that constraint?
Let's make it easy, and assume I/O is as fast as modern hardware, and terminal/keyboard management isn't part of your 1 MIPS. (But SHOULD be counted, somehow)
Could you constrain yourself to fit in that box, yet still get work done?
Pick your favorite CPU, give yourself as much memory as you think is necessary, and chose how much disk space you think is enough. Then try to work within that box.
How would a web server in that environment fair?
With that said, I frequently do perfectly usable stuff on a 0.6 MIPS Amiga, in high level languages no less. I've even written a web server in ARexx, which is interpreted. Granted, it won't serve a whole lot of simultaneous users on an Amiga 500, but it works perfectly fine and even runs basic CGI stuff.
I couldn't recommend it more.
He talks about simplification as a solution. I buy that - but he doesn't talk about education.
If they pay those people and pay them well then there will be people working on those areas. If they only pay for software plumbers then obviously they will get more plumbers.
They pay for plumbers(+). Seriously. Even intensely creative and curious folks must pretend to be plumbers in their workplaces to appease project management derps. The stuff that makes one have job satisfaction often gets done without asking for permission and without allocated time/staff/budget.
(+) Nothing against plumbers. Many have more lucrative and intellectually stimulating jobs than software engineers.
Visiting a civilization of extremely advanced beings who... 'maintain' a big machine that does everything for them; it solves safety, hunger etc. and let them lead a life mostly hedonistic.
Only very few know how to maintain the said machine... They themselves don't even understand how their ancestors built it; and if they were to disappear or the machine to be destroyed, the civilization falls as it has forgotten everything about keeping itself afloat.
In the modern world, most 'senior developers' are glorified plumbers.
It works, they don't know why.
So when it doesn't work, they don't know why.
We're becoming more maintainers and plumbers than creators at the cost of not understanding the sand under the castle.
> For future reverse-engineering, I think the biggest problem will be imaging. I can study processors up to about 1980 with an inexpensive microscope. But chips with two layers (or more) of metal are much harder to examine, because the metal layers block each other. And once transistors get too small for optical microscopes (1990s), you need an electron microscope, which is a much bigger investment. (Although there are hobbyists who have one.)
> The other factor is understanding. A chip like the Z-80 is simple enough that one person can understand it completely. I doubt any single person at Intel understands everything about the Xeon, since it is so complex. And it's much harder to understand the chip from reverse engineering.
> Institutional memory grows hazy at this point. The alien machinery hums along, producing polymers. The company knows how to service it, but isn't quite sure what arcane magic was employed in its construction. In fact nobody is even sure how to start investigating.
> It falls to some of the then-younger engineers, now the senior cohort, to dig up documentation. This is less like institutional memory and more like institutional archaeology. Nobody has any idea what documentation exists on this plant, if any, and if it exists, where it is, or what form it might take. It was designed by a group that no longer exists, in a company that has since merged, in an office that has been closed, using non-digital methods that are no longer employed.
[0] https://lemming-articlestash.blogspot.com/2011/12/institutio...
I occasionally work on maintaining an ancient server environment running some custom code that can't run on modern OS's because <reason>. Over the years, more and more duct tape has been added, and there's little to no documentation of how everything is set up. The only remaining staff is me, who simply worked for a few years alongside the people who took over from the people who originally built everything.
Nobody wants to pay to have some really dig into the system, documenting everything, and bringing it up to date, because there's a replacement system on the way (any year now). Instead, they call me every now and then to get everything rebooted.
I don't mind the extra business, but if something really bad happens then that client is toast and there's not a soul who can fix it.
Worst thing is I hear this kind of thing is frighteningly common.
In parallel, we’ve been defunding schools and the healthcare system (in Europe, at least), because people just aren’t worth the expense.
Education professionals in their late 30s tell me that the attention span and abstract thinking abilities of children of all ages have drastically declined over the last 10 years. Screen time (including the parents’) is the most likely culprit.
We’re not scaremongering, this is really happening...
My guess would be less than 1/100000 of hn readers
Also The Book of the New Sun by Gene Wolfe. It's much slower paced and more about the mood and immersion.
My washer's, dryer's, and oven's software has proven quite reliable, too.
(Edit: to clarify that: Tolstoy said something like "All happy families are alike, and all miserable families are miserable in their own way". I think there is much to that: multigenerational unselfish service to others, in a widening circle, brings greater sustainability and peace. Seeing what families' and/or cultures' traits allow them to persist over time is interesting.)
From the political side of this (also relevant), things might seem distressing now, but it can be OK. Some more thoughts:
1) Honesty, the US Constitution, and the rule of law seem much more important than other policies, even ones we care about deeply (per some of my Church's scriptures, such as D&C98). Let's pray for our country/ies!
2) Jesus Christ said "love your enemies", & more ( https://churchofjesuschrist.org/study/scriptures/nt/matt/5.3... [churchofjesuschrist.org] ). (And: "By their fruits ye shall know them": Matt 7:11-21; and see D&C52: https://churchofjesuschrist.org/study/scriptures/dc-testamen... [churchofjesuschrist.org] .) This means treating others with respect, for starters, and the way you would want (or they would want) to be treated.
3) Please, along with seeking wisdom & kindness, let's try to get info and news from reliable, trustworthy sources. (Many; refs avail.)
4) Trust is earned by (trustworthy, good, uplifting) behavior over time, not just promises & piles of words.
5) We all can learn, help & encourage each other, grow & be better if we keep trying.
I deeply believe, with some reasons, that the US Constitution and some other good things will continue to be in place in the long run, in spite of difficulties.
https://www.overcomingbias.com/2013/06/why-does-hardware-gro...
And the political polarization in the country makes me wonder if US forgot how to do democracy.
Nothing wrong with gaming as long as you play in moderation :)