Here's an interesting article about the downsides of Forth:
"My minimal stack of layers is – problem, software, hardware. People working on the problem (algorithms, UI, whatever) can't do software, not really. People doing software can't do hardware, not really. And people doing hardware can't do software, etc.
The Forth way of focusing on just the problem you need to solve seems to more or less require that the same person or a very tightly united group focus on all three of these things, and pick the right algorithms, the right computer architecture, the right language, the right word size, etc. (...)
So you need at least 3 teams, or people, or hats, that are to an extent ignorant about each other's work. Even if you're doing everything in-house, which, according to Jeff Fox, was essentially a precondition to "doing Forth". So there's another precondtion – having people being able to do what at least 3 people in their respective areas normally do, and concentrating on those 3 things at the same time. Doing the cross-layer global optimization.
I've read that post. It's effect on me was the opposite of what the author intended. That's where I first learned that Forth defines things like IF in Forth itself... and I totally got hooked on it.
I can see that reasoning and these days my opinion there is that if one doesn’t understand the stack end to end then they’re contributing to an ever increasing risk of implosion.
That’s largely where we are today in many sectors of society. Experts who only understand the nuances of a niche layer they’ve patched into a series of layers of indirection by the result of not taking the time to fully understand what one is working with from first principles or fundamentals. The OS’s of today are computation stacks that resemble something like bandaids and house of cards with people piling on intricate complexity without conceptual understanding that can be effectively reasoned about.
I understand that simple is hard. However when one can reason about a system when it fits entirely in their head then they can extend it completely. I believe all systems should be this way. To have anything else is a risk of corruption or assimilation as the minority control a majority through complexity against time.
Sorry I kind of went off on a tangent there.
Tl:dr systems should fit in anyone’s ability to reason about it conceptually. Anything too complex is an attack vector and disaster waiting to happen.
So. Do you understand, for example, the intricacies of x86 microcode and how its executed on all Intel microarchitechtures relevant today: from Sunny Bridge to Sandy Cove?
I don't remember who said that, but it's a really smart observation: Civilization is not just the state of society when there are lots of smart professionals, orchestrated together to provide infrastructure, and tools, and goods, and services, it's a state of society when almost everyone routinely uses the fruits of labour of those professionals without even being aware of that labour. That's the point: that it Just Works™. You don't have to think about it.
The author is probably getting at Charles Moore's ideas on how to build a system. He is a genius and madman. The man takes a problem and builds his own hardware then software to solve that particular problem as efficient as possible. It's crazy. It also takes a long time, but he gets what is pretty much the most minimal stack from A-Z and understands the full thing.
Obviously, most people can't do that due to less skill and time allowed.
Indeed the author does. I recommend reading that blog post [0], it's rather well-written and enjoyable.
The thing is, "genius" doesn't scale. At some point, if you want to scale production up, you'd need more people. And most of them won't be geniuses, they will be normal people, in the very literal sense of the word "normal": they'll be somewhere in the middle of the bell curve on most of the parameters; and even the number of parameters in which they're outliers too will be in the middle of some bell curve. So either your tools and processes accommodate normal people, or your company won't make it. Heck, even if you somehow manage to gather together 10 geniuses, it's a (biased) coin toss whether they'll work together productively.
And that means you will at some point arrive at systems (and organizations!) that nobody comprehends in entirety. At this stage you can only hope that those systems managed to grew up resilient, that is, that they can be maintained, repaired, and extended on a piece-by-piece basis. Sometimes they can't be (cf. most government departments/small-to-medium businesses at the latest stages of their life cycle), so they collapse and are (eventually) replaced by something else. Sometimes it turns out that the organization that had collapsed was your whole civilization and now you're in the the Dark Ages. That sucks, but the only way out of the Dark Ages is gradually building up a new complex system, and while it will start from a small and seemingly perfect new way to run things, it will eventually, grow large and incomprehensible in its entirety—if it doesn't, it will be supplanted by the one that can grow so, there is really no escape from this.
If there is no escape from this then I’m gutted from my sense of purpose. I envision a world where all concepts are accessible without genius or contrived complexity. I don’t agree with the bell curve intuitively. I feel that it’s a result of the overwhelming bad programming baked within humanity between institutionalized education and incentives within our economies. Environmentally it caters to averaging the average and incentivizing complexity with pseudo-genius. True genius is simplicity in my eyes. True genius can take a complex idea and give it the affordance where one can reason about it without intense training or remembering. Their skill may not be great in navigating, but it’s accessible to understand.
Perhaps I’m optimistically doomed. However that’s the world I want to build towards.
Well, as I said, there is not enough "true geniuses" out there to reshape the world in their vision. And that's probably a good thing too, there were some experiments with radical simplyfying of social and economical structures and the results were truly disastrous.
Plus don't forget about such thing as politics (in the broad sense of the world). Get a 10 people together to work on anything, and there is already good chance they'll form 2-3 subgroups. Get 100, and now you have to actually think about management and persuading people to move things roughly in the same direction.
I think everyone has the capability to be "true genius" - it's a matter of accessibility and letting people express themselves as they imagine. Of course this is a reduction and the means to get to that idealism is tough. However that conclusion feels possible and that's what I'm building towards. It has many dependencies that many will balk at like money, survivability, and so on - yes it sounds somewhat based on a post-scarcity world but again, that's where I'm wanting to put my efforts.
Outside of the truly mentally challenged, every individual has the capability to express genius. We are individually limited in today's society based on the accessibility and affordance of being curious.
If the entire human species was able to be curious and experiment on any idea they had then we'd see everyone was "true genius" in their own regard, in my optimistic opinion and theory of what the human animal can do.
Knowledge has to be accessible to all, resources to survive have to be abundant to all, and resources to experiment with ideas must be available to all. These are lofty requirements but it's possible and I want to do whatever I can to get there and I do not want to settle for the status quo of today.
The world is malleable today, and it rarely gets this malleable in history. When it's this hot, big changes can take place for better or worse - the opportunity to do big things is exactly now without having to settle for how "the world works" - lots of things can change now and we have the technology to do some amazing things, old structures pin us down or erect some level of "reality distortion field" that limits our greater degree of freedom available to us each.
Maybe I'm delusional, but, at least I'll have fun working on what I dream of.
I want that world as well and generally agree with you, but the reality of modern life can be complex.
Think of the biology of the human body or practically any other industry. I've been out of college for about a decade and have moved roles several times at my company and I've only managed to learn a sliver of the complexity of my department. We have public documents that are thousands of pages long and that doesn't even get into the software. It's true that a much simpler solution exists like the industry did prior to computers, but it was probably an order of magnitude less efficient. Now we save large amounts of money at the expense of much higher complexity. You need a lot more people because each person can only specialize in a few things and has to abstract away the rest and trust that other co-workers are taking care of the other parts that you don't understand. It's frustrating, but I think most industries have this. Think of a nuclear power plant. There are hundreds of systems and processes. Is it even possible to learn them all in a single career past a bare minimum? What about outside the plant? The plant connects to the transmission grid which is operated by an entity and you have power marketers which sell your plant's output into a market which is operated by another organization running sophisticated software to optimize the region. There are several regulatory bodies involved from the NRC to the State Utility Commissions, to NERC & FERC that all have some regularory jurisdiction over you. Once your electricity gets on the distribution grid it is handled by utilities and so forth. The world is just insanely complex.
Could it be simpler? Yes, but there is an efficiency cost to that as well. Chuck Moore's chips are cool, but do they solve any current problems? If they were significantly better, people would be jumping on them. The reality is they're probably better for some niche uses. Certainly not enough to leave the confines of Windows or Linux with a traditional toolchain. Even without all the inertia it would be a tough sell. I don't know anything about complexity theory, but I imagine computer science is under the same rules as the rest of the universe. This also might be where Chesterton's Fence is relevant. We shouldn't argue to take down the fence when we don't know why it was put up to begin with.
I think a lot of complexity is introduced in our world today as the economics require complexity for certain demographics to survive. Complexity generates profits.
It also erodes the peak innovation potential of the entire species by increasing the distance to experiment and be curious while also creating greater need of dependence to survive.
I think a lot of your examples can be fixed.
Nuclear Power Plants are simple actually - they need to be simple. Complexity kills them, and human's are the weakest link. Process is introduced to ail complexity. Complex ideas introduce more complex processes to include more humans which ends up creating less efficiency. Many examples of that. A big reason why startups can compete with corporations is that startups have less complexity but then introduce more as they age usually through poor problem-solving and get slower. Companies like Apple have punched above the average weight to survive those chasms of complexity and still move quickly unburdened but obviously they have their own class of warts.
Agree with you but also I think we can do better is basically what I'm saying. I don't see the world today as "this is just how it is and that's that" - there's no physical rules why we have a society the way it is today - it's mostly imaginative rules. I want to change the game, the current board is lame.
I think we're 75% in agreement. I think things are way too complex and should be simplified, but there is a hard limit on how much can be stripped away.
A nuclear plant isn't simple. There's a reason why they require more than 1 person to maintain and that they have only existed for 0.00000000001% of human history. Conceptually they're simple if you black-box abstract the majority of the plant which is loaded with technology from the structure to the cooling structures, sensors, waste disposal, regulatory structures which prevent another Chernobyl...etc etc. You're abstracting all of that necessary complexity away (just like we do with modern tooling) and calling it simple when it isn't.
I don't agree with that conclusion that it just works. I'd argue that it doesn't work and gives the false illusion of things working right or well.
There's a lot to unpack there.
Another way to describe it is that software and hardware are only becoming increasingly complex. What are the total amount of people that understand this complexity end to end? That is a very small elite. Given anything goes wrong like infrastructure or some unknown unknown event then the entire idea of "Just Works" is going to be surely broken. This is a huge attack vector to humanity.
I'm super interested in the subject: https://github.com/akkartik/mu. In the framework of this thread I focus on 2 of the 3 layers: problem and software. Hardware is out of scope. For now. Recently I've started thinking about BIOS (inspired by https://caseymuratori.com/blog_0031). So perhaps it's only a matter of time.
I haven’t seen the talk actually. I’m increasingly more interested in this problem space and it’s good to find like-minded people and ideas. Thanks for sharing. I’ll look into it!
"In an urban society, everything connects. Each person's needs are fed by the skills of many others. Our lives are woven together in a fabric. But the connections that make society strong also make it vulnerable."
Hence the title of probably the scariest thing ever broadcast on TV:
"My minimal stack of layers is – problem, software, hardware. People working on the problem (algorithms, UI, whatever) can't do software, not really. People doing software can't do hardware, not really. And people doing hardware can't do software, etc.
The Forth way of focusing on just the problem you need to solve seems to more or less require that the same person or a very tightly united group focus on all three of these things, and pick the right algorithms, the right computer architecture, the right language, the right word size, etc. (...)
So you need at least 3 teams, or people, or hats, that are to an extent ignorant about each other's work. Even if you're doing everything in-house, which, according to Jeff Fox, was essentially a precondition to "doing Forth". So there's another precondtion – having people being able to do what at least 3 people in their respective areas normally do, and concentrating on those 3 things at the same time. Doing the cross-layer global optimization.
It's not how I work."
https://yosefk.com/blog/my-history-with-forth-stack-machines...