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:

I also work in software:

  1. There we have the KISS principle.
  2. Despite that, a lot of software is bloated.
  3. 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:

We see this in computing where it is difficult to abandon old technologies. Examples that spring to mind are:

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:

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:

Suckless / cat-v

Things that I have learned:


© CC-BY-NC-SA 4.0