> what if you are the only survivor with some programming skills sitting in front of a computer you’ve never heard of, with some hex pad to enter machine codes, with maybe some pen and paper. What will you do?
Leave it on the ground and forage around until I find a computer that runs windows. It's not great, but, it'll do. Failing that, a phone and a solar charger.
Charming as it is to build yourself toys 'from scratch' to play with, it's pretty unrealistic that you'd end up ever needing those skills in a real 'end of the world' or 'total supply chain disruption' situation.
It's far, far more likely that you'd use off the shelf software, and your skills would revolve around being a cell-phone/laptop/whatever repairman, repairing old screens, charging cables, and other mechanical bits and bobs on hardware that was never really intended to be used for more than ~5 years; and ripping up 'no longer working' stuff for bits you can put into 'mostly working' stuff, and maybe building analogue circuits or maintaining power grids and solar panels.
Electrical engineer, soldering wires types of skills, not writing interpreters and coding skills, is what you would need ...if, you were indeed, in the luxury of not spending all your time just looking for food and water.
Let's be real. No one is going to sit around implementing an interpreter for some obscure cpu you found.
That's a skill for idly bored rich modern folk and archeologists of the future.
With enough solar panels, abundance of corrected soils, and a much smaller population, one can coast on the current agriculture investment and get a reasonable productivity (you will still spend a month or two every year on it) for a lifetime or two. Plenty of time to reboot tractors.
Heck, you don't really need tractors, these can be substituted with manpower. They're a nice to have more than a must.
What you will need, however, is someone to maintain waterways and water treatment facilities, and the necessary components. Can't count on rainfall being sufficient or wells being clean.
This comes with maintaining the power supply and electronic components thereof.
Agreed, all of this "build from the ground up" post-apoc stuff is fantasy.
It would be scavenge and cobble together. If there was time to do any of this, you'd be trading a bit of your clan's goods for a disk with some rare library on it for calculating dates and times based on the planets and stars.
I think that scavenging old libraries and installers is going to become more of a thing as they disappear from the internet over time anyway.
It's actually extremely easy to distribute something signed so that you're sure it's "authentic", at least that no bits are wrong. Assuming that somewhere in the chain, there exists trust. But it's the same with books, you have no way to know a book is authentic without buying it from a valid store
True, though the process of establishing the trust and authenticity around digitally signed artifacts is not as widely established or disseminated as it is with print media.
Also, establishing what a signature means often requires out-of-band information. I really like the concept of annotations for a signature that would communicate the signer's relationship to the work: http://www.loper-os.org/?p=1545
Reading my 100 year old encyclopedia is certainly informative from a social perspective.
Anyone not white was considered fairly subhuman at the time, and I know that, but reading how casually that all is presented as fact in an encyclopedia is mildly disturbing.
White Europeans and Americans had a whole spectrum of terrible ideas about race 100 years ago but 'everyone not white was considered subhuman' overstates the case by a lot.
This was kind of an exercise in what it would take to bootstrap a minimal stack that would turn a CPU into something useful. Think if someone desoldered a Z80 from like an old VCR from a junkyard or something and stuck it on a breadboard with some RAM and I/O to maybe a serial interface. How much work would it take to create, from nothing, a programming environment that allowed the user to build real-world applications that made that cobbled-together Z80 computer useful without too much hassle? And once that's done, if someone managed to scavenge an old floppy or hard drive or video monitor, those things could be attached and drivers written for them without too much effort.
So yes, after the apocalypse, soldering and repair skills are going to be super important. But devising the software stack that keeps old CPUs functional and useful, especially when old 8-, 16-, and 32-bit CPUs are much more tractable than modern PC CPUs, is going to come in handy too.
The windows computer would try to dial home and then refuse to run because it is not "Genuine" or it can not run without "Essential Cloud Services" enabled or something like that.
The intro is what in TV and other forms of media is called a "framing device". Here it's used as a story to provide motivation as to why someone could potentially need to build their own software stack. It's not meant to be taken literally.
The intro is fairly humorous, the "post-apocalyptic" framing is really tongue in cheek, at least to my reading.
I think you're taking it far too literally, and analyzing a joke to death.
(E.g. a random other quote from the article: "I will be using C to keep the grim atmosphere of the apocalypse, but you may try this exercise in a different language, of course." This is not a serious "what to do in case of apocalypse" thing.)
I disagree. With a discovered machine, the scavenger wants to use a bit of the found computer's CPU time to hack in the machine if it was an authentication device that needs to be bypassed to start a 'tractor' or 'combine harvester'. Not all computers are disconnected from the supply chain.
The tools, skills, and knowledge required to literally hack open the tractor and physically bypass its authentication will be drastically more transferrable and overall useful.
Even aside from the apocalypse, I was wondering recently how someone might "pass down" some piece of software, like say a video game, to their descendants. If you want to leave a written record for future generations then it's easy enough to print out a book on some acid-free paper and reasonably expect that it will last for up to a millennium. But for robustly archiving a piece of software it's not enough to print out the complete source code (including dependencies), you also need the complete source of the compiler (including dependencies), and the complete source of the operating system it runs on, and complete schematics for the hardware it runs on, and instructions on how to manufacture the hardware, and possibly more.
In the same way that we have standards for archival-grade books, it seems like we could benefit from some sort of standard archival-grade software stack designed for simplicity (and I mean real simplicity, I agree with the article that even C is too complicated and you want a Forth or something (or maybe a Scheme)). It's okay if the stack is as slow as molasses, as long as you have a functional reference implementation you can always produce a translation into whatever modern stack exists in your time period.
Printing the source out on paper would probably be the most long-lasting storage method (aside from engraving it into large pieces of stone, maybe). But typing the source code back in for most non-trivial pieces of software would be really painful.
"Here's the source code, go type it in" hasn't been a very popular method of distributing software, for good reason, in a long time.
Maybe there's some way that you could include the true source code (in C or some other well-understood language) of a small decoder program, which would then take as input some more-compact representation of the desired programs? Something minified and compressed, but kept in a form that would make it relatively quick to type in? Maybe you could have the user type in groups of characters (6-7 or so at a time, because that's generally assumed to be the number of abstract symbols a person can easily hold in working short-term memory) and get a checksum back, that they could verify against the input book.
Actually, you should probably have checksums per-line, per-page, and per-chapter/section. That way if you had a decoding problem, you could quickly drill down to the error without manually checking each character.
Saving the source alone hardly solves anything, the comment you're replying to highlights the real problem : The Stack. Everything from the compiler\VM to the OS to the instruction set architecture and everything in between. You have to save and store all of that.
You need a format other than text, text is extraordinarily inefficient and lossy at anything that is not declarative factual information. There has to be artifacts.
What you need is a C compiler, an assembler and maybe a basic linker, then you're set. It does not need to be very good either.
In a pinch, an interpreter might do.
From there, getting an OS running is relatively quick. Remember back when PCs came with nothing but BASIC and machine code?
People typed in complex machine code via that interface and ran quite complex apps.
This really only works if the programs you want to preserve are already written in C or can be transformed readily into comprehensible C source, which is not the most elegant or comprehensible language even in the best of times. What if you want to preserve Python ? now you have to type the entirety of Cpython before you even get to write the main preserved program (in python). What if you want to preserve browser JS ? (for a taste of why this might be useful, see the conversation on Flash. You can crticize and hate it till the cows come home, but it's a substantial part of human cultural heritage regardless.), now you need to type in a browser or at least a JS engine on top of the JS program. For a self-hosted compiled implementations of languages like Haskell or Rust, you would type in an irrelevant bootstrapping compiler in C first then type in the self-hosting compiler then type in the program. That's... tedious and unscalable.
The amount of work you would spend to think and implement workarounds for all of this is better spent thinking and implementing language-, OS-, and hardware- independent specifications and VMs that are minimal and long-lasting, to better support a huge variety of the software and media and languages that make up our cultural heritage now, C being just one language among many.
-------
You mention in an aside that a C interpreter would better suit preservation efforts than a heavy-duty overkill like today's optimizing C compilers, that's a good idea, naive interpreters are easy, much more so than complex compilers or runtimes. BUT, C is horrifically full of undefined behaviour and implementation-defined behaviour, and the spec is a natural language document so even if a behaviour is defined it's not really *defined* in the mathematical well-behaved sense, because you know how natural language is, you're always one tricky test case away from a bug. This is important, you never know you're depending on this or that behaviour until the applications fails or runs very strangely when running on another toolchain.
That's why I argue we need formal specifications and VMs, and minimal ones at that. Indeed, we need a hierarchy of such specifications and VMs, becase hierarchies are efficient at compressing an otherwise-exponential amount of data (think of deep neural networks or search trees, why are they so efficient?). A sequence of bootstrapping minimal VMs is better and easier to preserve than one large heavy VM, eggs and baskets and all. Furthermore, designing new VMs and specifications specifically for preservation would force us to think about the framework we use to formalize and talk about them : maybe we can use $HOT_NEW_THING fresh from CS academia, or maybe we can use a natural numbers- or a boolean circuits- based approach, as those things are not fancy and easier to explain when you don't have a lot of shared context, they are - in a sense - the "bare minimum" you need to understand or talk about computers.
Or you could just use APL, which already has a high information density.
Lot's of useful APL programs are very small, easily fitting on a single stone table and would not be much trouble to retype. In fact good APL programmers are even able to memorize them easily.
Fun fact: PCs used to come with nearly all this information. Full schematics, manufacturer specs for the CPU and other important chips, all in the Technical Reference Manual. The same with Tandy computers: provided you could source the components, you could build your own Tandy 1000 or 2000 with the information in the manual.
It's an absolute crying shame that computers do not come with this level of documentation anymore. It's not even available. There are probably parts of your computer that the "intelligence community" goes to great expense to ensure you know nothing about.
I think you could design a device that optimizes for longevity. Build the cheapest, simplest device that can run your piece of software, and then produce lots of them.
On the simplicity side, all of the parts would be solid state, it would handle whatever power you have on hand, the inputs and outputs would allow for using whatever devices you could cobble together in a post apocalyptic world.
Then on the software side, every one of these devices could easily export a standard image that could be used to build another device.
A lot of handwaving here, but most of what we sell these days is basically disposable because that's what is incentivized. If we actually optimized for longevity, we could probably do some amazing things.
Edit: for bonus points, each device will include detailed technical documentation on how to produce the device itself from scratch. It could be a sort of rosetta computer.
The problem is that making any computer smaller than a big cabinet requires large scale integration microchips, notoriously hard to make, and potentially replace.
So it's going to be closer to PDP-7. You can do quite a lot with this sort of machine in an industrial setting.
What's the life expectancy of an integrated circuit? I was thinking make tons of them and the odds are that some percentage of them would still be functional long into the future, assuming you package them up nicely.
Would a technical description in plain English (specification) and C code be sufficient to preserve a piece of software? The understanding of the specification may be different years later, but this applies even to the paintings and the works of fiction.
So, the question is not only about the preservation the actual software, but also about its correct interpretation.
I think for simpler games this idea works well, yeah (and I tend to design simpler games, so I might have to start doing something like this). One of my old games, Proximity, ended up in a couple chapters on a book on an old book about Flash development, I think it was called Actionscript 3 Design Patterns.
You could make the original game pretty close from there (even though it was someone else that reverse engineered it and did it somewhat differently, it still got the job done).
But that game is pretty darn simple, just a hex grid where you draw a tile from 1-20, and wherever you place it, it'll capture tiles of an opposing team surrounding it if the tile you placed has a higher number than them. I've worked on tweaking the formula in a bunch of a ways over the years, but that's the core mechanism.
Once a game gets complicated enough it gets a lot harder to ensure that all of the nuances in the code, edge cases, hacky shit to get the game out the door, etc, so it's going to be more limited. But I'd still love to see a series that did this for more games though (I know one guy did it with the Quake source code and a couple other Id games).
> The understanding of the specification may be different years later, but this applies even to the paintings and the works of fiction.
That's an interesting parallel. But for it to be equivalent, I think it would have to be to the method of creating those paintings/works of fiction. Instead of passing down the Mona Lisa, you're passing painstakingly detailed instructions detailing how to make the Mona Lisa.
Sort of like how the valuable parts of math textbooks are the theorems and proofs, with the problem sets (i.e. implementations) being nice but arbitrary extras?
This is an interesting angle on essentially the same problem. Can a set of theorems about the prime numbers lead another group of people to the RSA encryption, for example?
Considering that Clifford Cocks invented a similar system 4 years before Rivest, Shamir and Adleman (and even before Diffie and Hellman published their cryptosystem), the answer seems to be "yes". On the other hand, that 4 year difference means that people have to be ready for the idea, i.e., work on their "problem sets".
IMHO, modern microcontrollers is where it's at when it comes to preserving the current technological base. They're 32 bits and relatively high powered, yet cheap and reliable enough. They don't need cooling and are robust to be fed from different power sources. If you base your software stack on, say, the ARM Cortex M4 or even M0+, you should be good for long time. You can stash a lot of spare parts and can maintain boards using simple soldering techniques.
Devices running on high density flash will not be reliable long term. None of these devices have ECC to reduce the probability of catastrophic failure from accumulated bit flips.
I was thinking more about devices that can be repaired by changing a failed CPU than devices that have a lower failure rate. I believe STM (and others surely) has a line of "process critical" MCUs that may have additional reliability features but these chips are built in much lower quantity and are much pricier. It's a tradeoff that would need to be evaluated for sure. Preferring external flash to on-chip storage would also help. Some ECC can also be performed in software where warranted.
Many modern MCU's do have ECC flash, and I'm seeing many claiming 20 year stability. It's also common to have backup firmware images in case the primary firmware image gets corrupted. It's trivial to re-flash an MCU to fix a corrupted image.
I am not sure if this is still the case, but the FreeBSD (and OpenBSD) CD sets and DVD used to contain the full source code of the base system and it’s easy to rebuild the system from source. BSD also works on relatively modest hardware.
It's not hard to arrange these days, if one really cares. I have a local mirror of Debian main + contrib + non-free packages, source + i386 + amd64 for every package. It's 200 Gb - a $20 SD card can handle that. How many copies would you need to make for at least one to last N years?
If we all would like to live in a world without war, the only path I see is if people learn to be strong as individuals, able to self govern, grow emotionally and take responsibility for their own actions. As long as we use collective thinking and externalization our power in organizations, believe in superstitions like money, government, “the greater good”, rather than recognizing what’s undeniably real, that we are all people, I don’t see a way forward.
There is nothing superstitious about government, money, organizations, etc. This is a fantasy.
If you really want to exist as a society of strong individuals (assuming that’s not already a contradiction in terms) in the absence of these constructs, you have to accept the very real likelihood that stronger individuals will be trying to rob and murder you. And organizing themselves into groups to do that more successfully
I will take this opportunity to to try to express myself a bit more clearly. I don't really expect to convince anyone of anything, but rather I would like to reach the few people out their that do resonate with me and my words.
Government is superstition just the way Santa is a superstition. You can call it an inter-subjective entity, or egregore, but ultimately it's not more real than any other imagined concept. It is perhaps a useful mental model to apply labels and titles to groups of people, or certain concepts, but it is also valuable to realize these are labels and models.
A government, as far as I know does not exist, insofar as I cannot interact with it as a single entity, or see it. If you look at this from an esoteric perspective, perhaps nothing is real, or it's all consciousness, or a simulation, or vibration of energy, however that doesn't change my lived experience of what appears real now.
I take issue with collective thinking, labeling a group of people with an identity, and then acting as if this identity is real. I don't have any animosity towards any other man or woman living in a different "country". I doubt many people do, and yet under the superstition of collective thinking, many people go to war, fighting against a "them" that someone did us "wrong", because we've been told so, or believe in large geopolitical movements. If every single conscious entity took a step back, and only acted violently in self-defense, there would be no war. There would simply be no reason to do it.
There are numerous arguments against this, such as "there will always be 'bad' people, so we need gang up and make sure they don't do bad things", and soon enough, there will be a group of people, believing they are the only people who can legitimately use force and violence, because they are stopping the 'bad people'. If you look at a history book, you'll find more death and destruction because of "governments" by a very long shot, and very little due to the few "bad apples".
The "Common Good" is another fallacy that leads to much suffering. How do we define it? We can use numbers, and metrics and "happiness surveys", and try to use left brain thinking to optimize for it, but ultimately "good" is in they experience of the individual conscious entity experiencing it. Trying to define it mathematically is taking away the agency and life of those who experience it, reveals a certain hubris and elitism that certain "experts" know what is best for everyone, for the "common good".
A book I recommend for those interested in what I'm saying is "The Most Dangerous Superstition" by Larkin Rose.
If you think I'm wrong, please continue to do so. I am supportive! I don't intend or expect to reach you.
I only see atoms dancing around. That doesn't make it a useful abstraction at the scale we are discussing. Government is just an abstraction over a group of people self organizing.
> People feeling they have a right to use violence to achieve their goals, not so much.
Agreed, but government monopoly on violence is the only system that seems to have stuck. I would prefer a system of anarchy where everybody just did the right thing, but I haven't seen any evidence such a system lasts more than hours. Maybe we have to eradicate the cultural training and distrust we have already instilled into ourselves too. I've sat down and worked out the "root philosophy" of our political opinions with as many folks who will sit still for it, and this smells like the "Libertarian presumption that people, removed from the system of control, would all act better" and being in active denial that their planed solution for nonconformity they can't handle is "round up a posse and threaten/kill nonconformists".
Thing is, we are people. So the "people scale" is always going to be the most one relevant to us in terms of what governments do for / to us. The atom analogy doesn't hold here.
Replying to the lower comment by 'alehlopeh' since I don't think threaded replies go this far down.
Right now, I'm looking for people with "naive optimism" who would like to see this world. There are a few of us. I'll share concrete details with those folks.
Your rights are inherent to being a human being. You are endowed by your Creator with the inalienable Rights of Life, Liberty, and the Pursuit of Happiness. A libertarian government would be one that enforces those rights.
Governments do not grant rights. They either enforce or abrogate them.
You're a right libertarian, no? Something worth bearing in mind, because a left-libertarian answer to many questions - especially those pertaining to property rights - is likely to be fundamentally different.
Libertarianism requires someone empowered to use force. The idea of multiple competing law enforcement apparatus within the same jurisdiction is not just theoretical wankery, either; it's actually been tried. Most notably in the Icelandic Commonwealth, which endured for 300 years.
> Libertarianism requires someone empowered to use force.
As I said.
> The idea of multiple competing law enforcement apparatus within the same jurisdiction is not just theoretical wankery, either; it's actually been tried. Most notably in the Icelandic Commonwealth, which endured for 300 years.
Libertarianism doesn't specify the form of government, just the role of government.
The path to such a future will either be paved with mass extermination to lower to population to remove scarcity or via surviving with government until scarcity is defeated and government can be safely dismantled.
I do agree that there is a root problem with any existing power structure not being truely incentivized to reduce scarcity and then loose power, but that doesn't make the thanos solution more ok.
What actions are you taking that could potentially cause billions of individuals to suddenly act as though the concept of scarcity doesn’t exist? If the only path forward you see is for every single human to start acting differently, then you don’t see any path forward.
I think that you would find it interesting to read “The Tyranny of Merit” by Michael J. Sandel, as it discusses some of the underlying assumptions that your comment rests on. I'm not saying it's a refutation of what you're saying or anything like that, but I think you would enjoy the book, and I think it would offer a healthy broader perspective.
Have you read "The Unique and Its Property" by Max Stirner by any chance? I think you'd enjoy it. (The title is often translated as "The Ego and Its Own", but that entire translation is really, really bad)
It's basically a 19th Century proto-existentialist analysis trying to explain "Why do people sacrifice their free will to abstract ideas, and should they?"
Replying to myself to say I will not be replying any more unless it's to people that do "get" what I'm saying. I chose not to expend any more energy arguing.
Personally I enjoy my government roads, schools, fire service and all the rest.
Perhaps when you’ve grown emotionally, you’ll understand that government is people working together to achieve a common good. It’s flawed and easy to get wrong, it oversteps and overspends, but I’ll take that over "fully realised" adults living in a bear-ridden trash heap because they “took responsibility” for their own garbage disposal.
The point that governments and money are superstitions and that people need to "grow emotionally and take responsibility" rather than believing in such things?
No, I'm pretty sure I got the point there.
I agree, government is just a bunch of individuals, and collectively we empower them to take action on our behalf, and they achieve things that without such cooperation would be hard to impossible. I don't believe the poster I replied to would concur, in fact a brief glance down their posting history shows this person believes governments should not exist.
If you're talking about me, I believe that when people are ready for it, "governments" as such will cease to be relevant.
To put this another way, I am NOT advocating for getting rid of governments, because a) they already don't exist, and b) right now, if we "got rid of government", let's say by somehow stopping all political, police, military and other activity, there most likely would be chaos, as many people like being told what to do, and maybe do need a imaginary father figure to make decisions for them and punish them if they do "bad" things.
People will never be 'ready' to stop abusing and taking advantage of others, without cooperative measures (governments) to restrict such activity, what you have is a recipe for mass violence and a return to warlords and feudalism as those who can raise the largest mob take the lions share of resources for themselves.
This is a quote from the post I replied to, which is why I said it, as a mirror to the arrogance of the material I responded to. The post I responded to posits that those in favour of governments and collective action are not emotionally grown.
> posits that those in favour of governments and collective action are not emotionally grown
I didn't read it like that - I read it as the ability to self-govern requires great individual responsibility and emotional control. Whether this is the only way forward is up for debate, but I agree it requires an (unlikely?) level of public competence.
With your people-working-together model, modern civilization would not be possible. There would just be too much friction in a world where every interaction and every boundary must be voluntary and previously agreed upon. It would sorta work fine for sparsely populated pre-modern times, like the XIX century American West [1], which I believe is the origin source for a lot of such fantasies.
[1] Except for the fact that the West rugged self-sufficiency was only possible because the pioneers could call in cavalry to exterminate groups of people who posed a threat they couldn't handle themselves.
“Superstition” is just as much an abstraction over a general pattern of things happening as “government” is.
You say “show me a government and I’ll listen”; I say “Show me a superstition (and an explanation for in what sense you have shown me one), and I’ll show you a country (in the same sense).”
> Let me know when libertarianism achieves any more than attracting bears
My pleasure. The United States was founded on libertarian principles (excluding allowing slavery to continue, this was fixed in 1865).
The result was the rise if poor people to the most successful nation in the world, and the greatest rise in the wealth of those poor people.
This did not happen in, say, South America, that was discovered and colonized at the same time. The Antebellum South also did not prosper under slavery and was crushed by the free economy of the North.
Other countries which embraced libertarian principles also experience a surge in their economies, like the German Miracle after WW2, same for Japan.
I'm glad you're finally talking to an actual one. Many people call themselves one who haven't actually thought much or read much about it.
If you want a book written by another actual libertarian, "Free to Choose" by Milton Friedman is a good start.
The neato thing about libertarianism is it doesn't have to be perfect in order to work. Since nothing about human societies can be perfect, this is fine feature. The more libertarian a country is, the better it runs.
He's a fascinating person in his own right, a physicist who was also the first Westerner to earn a black belt in judo.
> On the eve of the Nazi invasion of France in 1940, Feldenkrais fled to Britain with a jar of heavy water and a sheaf of research material, with instructions to deliver them to the British Admiralty War Office.
Anyway, his "Method" is a kind of direct physical intervention to dispel superstition in the nervous system, returning the person to a more high-fidelity self-model, which in turn develops the qualities you mention above: strength (physical, emotional and mental) and the ability to self govern, which then permits taking responsibility (i.e. you can't drive a car if the steering wheel and pedals don't work, eh? You have to fix the car first, then you can drive it.)
(I would normally link to the Wikipedia article on the "Feldenkrais Method" but unfortunately it has fallen in with the "Alternative medicine" woo-woo stuff, which then makes the Guerilla Skeptics come in and crap on it. I wish I was making this up but that's really what they call themselves. Anyway, if you're interested get a copy of his book "Awareness through movement : health exercises for personal growth" and try it out. https://archive.org/search.php?query=creator%3AFeldenkrais )
The title "post-apocalyptic programming" made me think, if there is an apocalypse and we have to start programming from scratch again, surely we will need some NAND gates to make a CPU and surely the first language we need to create is Forth.
And this article does talk about creating a Forth from scratch. Excellent choice for post-apocalyptic programing.
It details how to build a working computer starting from relays. The greatest moment for me as a teenager reading this book was figuring out how a flip flop worked. Having information stored in a dynamic system’s state seemed like the most magical thing I had ever seen.
Similar premise to CollapseOS[1]. In the event of some kind of tech-effecting apocalypse or something we'd likely have to make do from less than scavenged laptops and desktops.
The first releases of CollapseOS where developed in Z80 assembler, because Z80 is one of the more common CPU used worldwide (in 80's computers, Ti calculators, game consoles, printers, music synthesisers and many more). It's only recently than it was rewritten in Forth. The author explain it here http://collapseos.org/forth.html This history is nice to read.
In the same family of OS in Forth with low tech devices, there is also KnightOS:
https://knightos.org/
In a post apocalyptic world, aside 1st necessity goods (food, drinkable water, medicines, knowledge on how to build/repair things), there will be a lack of energy; be prepared to keep armed watch of your roof if you have solar panels there.
I wouldn't even try to keep powerful computers around if I couldn't supply them (and their peripherals) with what I have at hand, which could well be no more than a couple solar panels and some stepper motors converted to wind generators connected to a scavenged truck battery.
So if the end of civilization occurs, Before anyone realizes that they're going to become doorstops, I will happily trade all my fastest computers for more important stuff as I already have in the junk boxes what would count as an IT lab of the apocalypse to build useful stuff usable in energy scarcity situations: a couple of very low powered netbooks, a few arduinos and similar low powered boards, b/w LCDs, sensors, relays, steppers and other electronics parts (all tht), gas and battery operated solder irons and a few solar panels.
All stuff, however, that could turn 100% useless should I lose or break my glasses (Wasn't there a old Twilight Zone episode about that eventuality?) or deplete my heart medicines. If shit hits the fan, no matter how hard one prepares for the worst, the lack of a single small thing whose availability we take for granted in normal life could screw everything.
I wish more preppers would focus on rebuilding the modern supply chain as fast as possible. As long as there's a chip fab, a car factory, a lab that makes medicine, the priority should be to get it running and defend it.
There will be people who want to loot or destroy it. Ecofascist primitivists could even be one of the major groups involves. But in a lot of disaster scenarios it should be possible to get a modern farm and the most critical labs running at least for a while, and start working on sustainable supplies.
In some scenarios there might not really be any physical disruption at all besides the economy, starvation, or war not leaving time to keep tech running.
I almost get the feeling a lot of preppers don't even want the modern world to exist though. They'd rather have privacy and hard work that see everyone sheltered in office jobs again.
Let's have a look at low-power devices (for post-apocalyptic programming?) - is the Panasonic Toughbook CF-U1 MK2.6 from 2012 the perfect post-apocalyptic device when low power consumption trumps everything else? It has a 2W CPU and dual hot-swappable 7.2V 2900mAh batteries that last 9 hours (i.e. 4.62 Watts). The keyboard is somewhat terrible but the display is "daylight readable".
No, it looks as if the Acer Spin 7 5G SP714-61NA-S8Z7 with its Snapdragon 8cx Gen2 5G is even more efficient, its 56Wh battery has a claimed battery life of 29h (i.e. less than 2 Watts!).
Modern Arm SBCs definitely offer better low-power computing than the Atom and Celeron things of old. The Pinebook Pro Arm64 laptop gets about 8 hours of mixed use on a full charge when using eMMC instead of NVMe storage. It charges using a plain DC barrel jack on just 5 volts, and can trickle-charge on low current. If "mixed use" doesn't involve surfing the web and using Wi-Fi/Bluetooth, it easily goes beyond 10 hours. The M1/M2 MacBook Airs also offer fantastic battery life, even if charging them is a bit more complicated.
A 2 watt CPU seems liker massive overkill, you really don't need that much CPU power. I'm reminded of PDAs from the 90s that could run for almost a month on a single set of AA batteries.
If you were designing a devices from scratch, it might be worth considering a large (640x300 or larger) transflective lcd display from the late 90s, a keyboard, large amounts of reliable flash storage. It seems overkill to go beyond an ARM M4 for CPU, though a cluster of Cortex A55s might make more sense, so you have an MMU.
Give it flexible power input so it can run off whatever power source you can scavenge. From a few triple AAA batteries at the low end to 48v lead acid batteries at the high end. Or a highly variable power source like a rigged together windmill or scavenged solar panels.
I wonder if we got sent back to early modern period technology how much computing would be possible that didn't depend on access to semiconductors. Would glass-blowing and metallurgy be good enough to make thermionic valves (tubes) for example? Would water-wheels, animal power, and perhaps crude steam engines be enough to power them?
It is understandable to want to avoid silicon doping tech, because that requires a substantial industrial base. But you could still try bootstrapping via germanium transistors.
Back in the '80s I bought a HP 9100 calculator. It weighed 60 pounds and had core memory. I even remember turning it on for the first time and a program stored started running.
Anyway, I thought that if the Soviets attacked and wiped out the modern PCs with their EM pulses then I would still have a programming job with my core-memory, no IC's programmable calculator.
Somewhat related question: a few years back I saw a dedicated "low-power e-paper Wikireader" type of product which could display a text-only backup of Wikipedia. In essence just a niched e-book reader, really, but with the additional effort of putting it all together in a usable format. Does anyone know of a modernized solution that displays images as well?
If you want to go down that rabbit hole, I think you are better-off just relying on the ubiquity of android phones.
Instead of preloading an e-reader. Preload a usb-c flash drive with various databases, and an APK with the software to read/copy the databases (and other useful utilities). Flash drives are small, and reasonably cheap. You can stash them in your house, or carry one in your wallet.
If there is an apocalypse, simply find the nearest android phone; enable side-loading, install the APK off the flash drive and copy the databases onto the phone.
With the right software, you can make the database somewhat viral by allowing copying over adhoc wifi networks. A new person can get the database onto their phone by connecting to the adhoc network of a phone with the database, enabling sideloading, installing the apk and letting the two phones sync.
Though this does add an additional problem that the survivors need to keep phones powered. Might be worth investing reliable battery banks that accept the widest ranges of voltages possible, so they can scavenge power from anywhere.
A small device to that is designed to sideload "the most compatible" APKs that are useful would be neat. The thing it loads could be a micro VM that runs something like Lua, is able to access the camera, microphone, speaker. Should be able to get code onto via QR codes or an audio codec.
I don't think you can get much smaller than a USB C flash drive, and then might as well put the whole dataset on it.
I think you want multiple APKs as part of the database (or databases, so each phone isn't required to contain the full dataset, and the total dataset can be larger than the size of a typical phone storage)
The most basic APK should only consern itself with sharing the database via adhoc wifi, USB flash drive, or perhaps direct phone-to-phone USB connection. It shouldn't even do indexing, or viewing of advanced files. Nothing more than what you need to propergating the databases and allowing the user to install more APKs with the more advanced indexing/viewing tools, which can then be used to find even more useful APKs like calculators and programming environments.
You might actually want to do multiple independent versions of the core APKs, so if there are bugs which make one fail in the wild, the fittest version will survive. One should target really old android version so they work on the oldest android devices. Another should target the newest android sdk to give it the best chance of working into the future. And maybe a few middle ground options.
The hardware obviously supports it, but the android SDK doesn't provide a way for userspace software to implement new devices, so you are stuck with the devices already there. And you really want this to work on any phone that the survivors find, without any pre-apocalypse prep work, so assume rooting is out.
Testing on my two Samsung phones, while you can connect them, and charge one from the other, I couldn't manage to transfer files from one to the other. Even though they have this and use this functionality in a built-in to migrate from one phone to anther during upgrades. Maybe there is a way to get usb networking working?
TBH, I think you are better off just relying on adhoc wifi networks created by the phone sharing. Slower, but it doesn't require a usb-c cable (and these phones might get all sorts of hardware hacks applied to charge them, some of which might interfere with usb-c)
> We need solar powered wifi with suites of bootstrapping APKs.
Once again, that's pre-apocalypse prep work of hardware, which we want to avoid. And can be solved easy enough post-apocalypse. Just find a phone. Hook it up to a solar charger, and make it host an ad-hoc wifi network and run the syncing APK.
My hope is that a few people are paranoid enough to stash the APKs and some useful databases on either flash drives or their phones. (alternatively, make at least some of the databases useful enough that some percentage of the population is incentivized to naturally carry them around on their phones. They might not ever use the phone-to-phone syncing, except in weird situations when multiple people are out of range of the internet). And then once the apocalypse happens, hopefully enough devices capable of charging phones will stick around until the dataset spreads, and people use the infomation for making/maintaining power sources.
Then we are reliant on the massive install base of android phones, scavenging and the long-tail of the bell-curve keeping enough of those phones functional enough, with the data hopping from phone-to-phone until society reaches the level of technology where they can build new storage devices.
I had a softer core version of this with the first computer I personally owned, a Spectravideo MSX machine with a Z-80 processor. I had more than a hex pad, I had a BASIC interpretter which included an actual manual. And I had a Z-80 assembly reference manual that my older brothers had liberated from the high school’s TRS-80 lab. The company itself was defunct and there was no deeper documentation of the system available (plus this was the pre-internet days so even if it were, finding it would be a challenge). I spent time peeking and poking data into every one of the computers 64K bytes of RAM and managed to find the memory which had the definitions of the displayed characters (and used this to allow me to type ä, ö, ü and ß for a drill and practice program I wrote for studying German). I also wrote part of a disassembler but never got around to handling the multi-byte opcodes of Z-80 assembly.
This kind of low-level experimentation can really help you get your mind around what a system can do.
It might be more appropriate to consider the computers you currently have in stock, and how you could power them, and swap out parts to keep them running, in the future.
Repair skills are about to become very valuable in many parts of the world where they were previously dismissed due to globalization.
Note: This is fun and all, but beware of taking the “Post-apocalyptic” premise too seriously. Down that road lies only hard drive hoarding and becoming a prepper.
The premise that in the event of an apocalypse some 80ies CPUs would be more readily available than today's commodity chips already prevents me from taking this too seriously.
But those simple Chips are certainly easier to wrap your head around for programming. In the event of apocalypse the most abundant computing platform would be old Android phones however.
I can't think of anything more useful than becoming a "prepper" and hoarding data on hard drives these days.
There's hardly any difference than prepping and camping, you just take your gear with you every now and then, practice with your gear, use your rations and replace.
Prepping is usually pretty ecological as well, it leads to coops, greenhouses, chicken coops, water recycling, composting, solar, repairing skills etc.
On the hard drive thing, I bought box sets of all of my shows and ripped them so I don't pay for the 10 streaming services they get passed around on.
All of my episodes are there forever and won't be edited/censored or removed.
I can even take them all camping with me, the core shows fit on a single flash drive.
TBH prepping is just optimizing your life and mitigating the negative effects of an abrupt change (like loss of power, natural disaster, pandemic, etc.)
You (should) create fail safes in software, do the same for your livelihood.
While I get the idea that prepping can become an unnecessary use of resources and result in people thinking you're crazy, I still think of the simple fact that all civilizations end eventually. Certainly they collapse for different reasons and at different rates. But the lights will go off eventually for our generation, or the next, or the next... Nothing lasts forever so it's probably worth planning for some level of catastrophe.
The whole purpose of prepping is to prepare the necessary amount of resources for an emergency.
If you stock too much food or water it will expire, you have to rotate it, so you eat it and restock.
If you stock too many non-perishables of something you don't need you won't have enough room for more useful things.
Prepping and looking crazy aren't coupled. Prepared people can be normal, it's not just what you see on TV.
Generally the fun is seeing how long you can prepare for, most likely you won't need to last past a month, but certain natural disasters like a hurricane can hit that easily.
I'd definitely recommend everyone have at least a 1 week supply and plan for emergencies (usually specific to your area).
Yeah it's a strange attitude, everyone preps in some way or another, but people act like you are a doomsday believer if you keep supplies for emergencies.
Those same people who judge get helped in those emergencies by those who are prepared.
You're assuming civilizations end in abrupt events, whereas it might be just as likely that they decline slowly over generations until one day people are grazing sheep on Wall Street or whatever.
I don't remember saying I orientated my entire life around catastrophes?
It's just getting groceries like normal once you have everything setup.
Camping is a fun hobby, I do it a couple times of year anyway so my extra stays ready and gets use.
I do like the peace of mind knowing the family will have supplies during storms and other events like lockdowns.
Some people prefer the head in the sand strategy or to wing it when something happens, or to depend on more prepared people, that would stress me out and be unbearable.
The threat most developers should be concerned about is what happens once a major solar flare (like the Carrington event in 1859) shows up. That is destined to happen at some point, and not unlikely within the next few decades. Hard to predict the fallout for the internet and other technical infastructure more broadly, but I'm guessing it won't be pretty.
Interestingly after reading a bit of the Wikipedia article on that event the Earth apparently missed experiencing another solar storm of equivalent strength in 2012[1] by just a number of days.
Estimates in the linked article expect had it been facing Earth at the time the recovery would have taken 4-10 years.
I find much more value in numerical expression when it comes to topics about future events than the fuzzy and loaded English terms we tend to use in casual conversation. I had the wrong impression about your previous message based on my own preconceived notions, and numbers reduce all that.
No problem, I should have been more specific when I wrote my initial comment but I was too lazy to pull up the exact reference until you challenged me (I somewhat randomly saw this paper a few days ago, initially).
In lieu of the obviously better solution of proactively preventing apocalypse, to what degree of seriousness do you instead suggest we acknowledge the "post-apocalyptic" premise? What else than becoming a prepper would you do?
Nothing? Society as a whole will not collapse. The sole exceptions are if you are in a small country either being invaded or having a civil war. Unless these are likely factors for you, you can safely ignore any apocalyptic ideas.
These ideas are mostly held alive by people who want to be important and relevant. People with too many guns at home want them and their guns to be important, and readily imagine an apocalypse fitting that dream. People with old computers and old programming skills likewise dream of being important, and start things like CollapseOS. People who live in the countryside and have horses imagine themselves to be cowboys in a car-less world. It’s all based on what kind of apocalypse would make a person important and respected again, not on any real sense of what kind of disaster would actually be statistically likely.
I mean, you could be worried about political changes, and act accordingly. You could be worried about the surveillance state to grow steadily, and prepare for that. And various state agencies are always telling people to be prepared for hurricanes, flodding, and other extreme weather events, depending on your region. These would, I believe, be reasonable precautions to take.
Actual prepping as in "preparing for the afternath of some catastrophic event that breaks civilization" is something else than the usual "cosplaying for the zombie apocalypse"-type of prepping you can observe so often.
Actual prepping would involve a ton of community networking, trying to be in good terms with your neighbours, creating lasting and decentralized infrastructure for a d with them etc.
The prepping most preppers do is just trying to be less fucked than others when the shit hits the fan. Living the ultimate rugged individualist delusion: that you somehow can survive alone if you just buy the right gear to make it through the first week and that you will have to shoot the looters who were too stupid to prepare.
The problem with all of this is typically that those rugged individuals have to depend on the work and expertise of other people in some way or another. I mean you might need electrical engineering, a doctor, someone who is good with plants and animals, whatever. Unless you are already live 100% self sustained whatever you are doing is not going to cut it without other people also getting through this.
I think this explains the stereotype of Christian conservatives in rural "fly-over country" in the USA. Frontiersmen were preppers writ large, and could not even rely on the supply chains of their time, let alone the massively interlinked supply chains of today. They had to rely on themselves -- and each other. 150 years ago, the church was not just a place of worship, but also a community center, where neighbors met each other, socialized, and begged for or offered aid.
I am neither a Christian nor a conservative. But I think understanding why Christian conservatives are the way they are, rather than declaring them an enemy to be fought or diagnosing them in absentia with mental illness, without a license, would be good for urban liberals like me. Our side has done too little in terms of understanding and addressing the needs of these people, and it's had real costs on our society (like Trump).
I have never been in the US, but I grew up in a rural (catholic) village in the Alps — I think rural people everywhere are alike, especially if they live in somewhat remote geographies.
E.g. it is a very important skill in an rural environment to know how to shut up and not say what you are thinking. This is why the recent vreferendum on abortion in Kansas went the way it did. People on the countryside tend to be more comservative, sure. But they also hate being told what they are allowed to do.
This sounds interesting, but I think in reality what would happen is:
A major crisis hits, say a virus or a nuclear war that wipe out say 25% of the population. Governments would shake for a while but eventually I expect every major government to stand up and begin sending troops to collect population.
We as ordinary people would probably be sent to work on whatever we are best at or some labor jobs to build new cities. Programming in that world would be mostly very pragmatic. No.1 issue is to keep whatever code that runs the utility companies running so there should be a lot of PLC programming, low level stuffs to make sure that the machines work as expected. No.2 issue is national defense because we would expect other countries to move troops to grab a better share, now that we all exhaust our nuclear arsenals (hopefully).
I'd expect most people to be living in underground or barracks for a while and slowly spread out to new sites once everything calms down. To prepare for that, I guess learning plumbing and civil engineering electricity are a lot more useful than javascript programming.
I love this. I'm guilty of my own project of this ilk, using Wirth's Oberon RISC chip and a simple Forth-like language based on Joy. So please don't think I'm criticizing OP or this project in what I say next.
I think in an actual post-apocalyptic scenario we're probably not going to be using systems like this. The two main reasons are that we don't really need much computation, and that there won't be functioning complex computer machinery (not at any meaningful scale anyway.)
I think we'll see bespoke automation based on e.g. clockwork and/or fluidics, but I doubt there will be silicon CPUs (neither old nor new) for quite a while. Silicon requires too much specialized knowledge, equipment, and chemicals to be practical.
We have done most of our needful calculations on the abacus, we made rockets (rocket science) using slide-rules. If we allow for simple mechanical PID controllers and such, I doubt there will be a lot of serious demand (to put it in strictly economic terms) for "fancy" general purpose computers.
In post-apocalyptic world I imagine, internet , would be scarce. Nobody will have full time internet connection except maybe internet centers. You will have to walk to nearest center. and upload and download your content. Your software that requires internet connection will stop working one by one. Also , electricity. People will use more low power CPU.
People will have to learn to use computers as standalone devices again. That is until the ones with ham radio skills set up a rudimentary packet-radio network. It may not even work like our internet -- more like USENET in the uucp days. The cleverer ones may be able to cobble together a TCP/IP stack over this network, maybe at first with ping times in the ten-thousands of milliseconds -- but nodes reliable enough to sustain that kind of comms may be rare. The rest of us will have to make do with a non-realtime, store-and-forward feed. Which, honestly, might be better for us all.
>> Now, what if you are the only survivor with some programming skills sitting in front of a computer you’ve never heard of, with some hex pad to enter machine codes, with maybe some pen and paper. What will you do?
As a man, I'd find a woman and get going on creating more programmers.
I like to think that in a strange, poetic twist TempleOS would shine in these post-apo conditions. Perhaps Terry really did god's work in some sense...
Leave it on the ground and forage around until I find a computer that runs windows. It's not great, but, it'll do. Failing that, a phone and a solar charger.
Charming as it is to build yourself toys 'from scratch' to play with, it's pretty unrealistic that you'd end up ever needing those skills in a real 'end of the world' or 'total supply chain disruption' situation.
It's far, far more likely that you'd use off the shelf software, and your skills would revolve around being a cell-phone/laptop/whatever repairman, repairing old screens, charging cables, and other mechanical bits and bobs on hardware that was never really intended to be used for more than ~5 years; and ripping up 'no longer working' stuff for bits you can put into 'mostly working' stuff, and maybe building analogue circuits or maintaining power grids and solar panels.
Electrical engineer, soldering wires types of skills, not writing interpreters and coding skills, is what you would need ...if, you were indeed, in the luxury of not spending all your time just looking for food and water.
Let's be real. No one is going to sit around implementing an interpreter for some obscure cpu you found.
That's a skill for idly bored rich modern folk and archeologists of the future.