Why I like simple things
“Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” ― Antoine de Saint-Exupéry,
“Everything should be made as simple as possible, but no simpler” ― Paraphrase from Einstein
“The price of reliability is the pursuit of the utmost simplicity.” ― Tony Hoare
TL;DR
We are finite beings living in a finite universe. To simplify means to reduce. Reducing allows space for new things. There are many concepts linking to this, for example:
- the (perhaps outdated?) idea of elegance in Physics where we have been able to explain more and more of our universe using (in a certain sense) "simpler and simpler" descriptions.
- the connection between intelligence and the ability to compress (i.e. reduce)
I also work in software:
- There we have the KISS principle.
- Despite that, a lot of software is bloated.
- Much of modern software engineering is about integrating different components and dealing with (i.e "scaling") the resulting complexity.
The word-count is a way to prevent boundless growth and encourage selection.
Intelligence
Intelligence is the ability to (efficiently?) solve problems. A "problem" is a desired state which is not trivial to reach. "Solving" something means finding a sequence of actionable steps that reach the desired state.
Not all problems require many steps. Riddles are an example where usually a single step is required, however the difficulty comes from it being the only step that is "actionable" (i.e. "makes sense").
"Finding" implies selection among a multitude of alternatives.
But how can we select among multiple different realities when our world has no undo button?
One answer is we ignore the lack of undos. Just try different variations in the real world and see what works. This is evolution by natural selection. This might also be why some people consider God to be an intelligence. There is a subtle point here: natural selection is not very good at solving arbitrary problems. In fact, it can produce quite inneficient solutions (see below). Instead, it maximises genetic inclusive fitness.
The other answer is to create a model of the world and use the model
to try different variations. This is how we humans mostly solve problems:
we first come up with a mental plan and then execute it. This is also how
super-human chess engines work. The trick is to only propose "reasonable"
variations. How do we know what is "reasonable"? We don't. We just use
neural networks.
For chess engines, in the past we used human-constructed heuristics
but those end up being inferior to neural networks.
A model in its simplest can be seen as a series of rules: if "action" then "outcome"
.
Note however such a model is static, un-changing and potentially too simplistic to accurately predict the dynamic and chaotic nature of reality.
As such, the trick is to.. find.. efficient models: ones with minimal resource usage but maximum predictability. These can range from efficiently computing differential equations for weather simulation, to building neural networks that predict protein folding
So, in a way, intelligence means ability to predict efficiently and this perhaps surprisingly is very similar to what compression is: take a large body of text or images and squish them down as much as possible. The Hutter Prize there's a $5000 prize for each compression percentage improvement over current best.
Software
I think my preference for simplicity is linked with working in software. Fundamentally, software is about reducing (i.e. abstracting over) complexity. Anything you can do with pen and paper you can do on a computer - the only difference is the orders of magnitude of speedup.
In software, many admire complexity. and this is visible. Linux (and open source in general) tends to "evolve" organically. Howver, although biology finds solutions, it is notorious for inneficiencies. Here are a few that spring to mind:
- The Recurrent laryngeal nerve
- human eye cells being in front of the retina
- we sense the presence of CO2, not the absence of Oxygen. This causes loads of issues:
- Hypoxia in training
- Hypoxia in actual, flying, pilots
- Going into enclosed spaces
- Using helium baloons for too much
- Hyperventilating
- Addictions, Contraceptives & Obesity
- Techinical term is mesa-optimisation and it most definitely links with the AI alignment problem
- baby-ducks following not their mom but anything that moves as soon as they hatch.
We see this in computing where it is difficult to abandon old technologies. Examples that spring to mind are:
- POSIX model
- x86 compatibility with 8086
- internet IPv4
- terminal emulations (VT100) - TODO add link to tech blog regarding OpenBSD VT100
I think this is driven by the need to be backward compatible. As such, there is a tension between the upfront cost necessary to migrate and the long-term cost incurred from continuing to use an outdated design.
Other examples include:
- Cantril's Ubuntu Slaughters Kittens
- Destin from SmarterEveryDay's critique of the new Artemis program; example timestamp
- Google's Site Reliability Engineer Book - Chapter 9 - Simplicity
OpenBSD
I like OpenBSD because of its focus on simplicity. I use it on all of my servers and also on any spare laptops. A few learnings that I am grateful for:
- "You can come up with elegant solutions if you have a deep understanding of the problem."
- The importance of good documentation
- Do not (usually) be afraid to remove unnecessary things.
Suckless / cat-v
Things that I have learned:
- a lot of complexity isn't really necessary
- always question if you really need a feature
- Unix was good, but Plan9 was better