
Simple Is Complex - vinnyglennon
https://avdi.codes/simple-is-complex/
======
dustingetz
I like Rich Hickey's definitions

Simple (roots: sim, plex) – one fold or braid

Complex – braided or folded together

Easy – near to our capabilities

These are really articulate definitions that helped me as a programmer.

Emergent complexity from simple systems – it seems like there might be an
insight here. Avdi says we can build complex systems out of simple components.
He says complex systems are hard to understand. He says it's not feasible to
understand the system or predict it. So they need to be measured and observed.
That's interesting. I don't know if it's true that a system built out of
simple components cannot be understood. How precise is the model? How many
layers deep?

~~~
uoaei
Complexity as defined in most scientific disciplines today refers to systems
which are "greater than the sum of their parts," i.e., where the behavior of
the whole system cannot be predicted by looking at each component in
isolation, but only can be understood by the action and interaction between
components and how that evolves over time. Most systems of interest are too
big to enumerate all the possible n-ary interactions between constituent
parts, so we must study them by other means: probe plausible simulations,
define and compute statistics from observable data, or fit models which
capture plausible correlations. To complicate this further, it usually takes
just one cycle or feedback loop in the network / system to introduce enough
complexity that most traditional analytical mathematical tools break down.

I studied complex (adaptive) systems as my Master's education and can confirm
most techniques reduce to "linearize around the important bits and extrapolate
from there".

Examples of complex systems include: social networks (IRL and online),
economies, biological systems. Machine learning is one of the most promising
tools for probing these because if we can fit an appropriate model, we can
hopefully capture enough of the behavior that we can reliably extrapolate to
unseen data / states.

------
ssivark
It feels like the article ended just as it was getting warmed up towards
something interesting! If any HN'ers have pointers/links to other interesting
analyses of emergent complexity among simple interacting agents, I'd love to
read 'em!

~~~
carapace
[https://www.santafe.edu/](https://www.santafe.edu/)

[https://en.wikipedia.org/wiki/Santa_Fe_Institute](https://en.wikipedia.org/wiki/Santa_Fe_Institute)

> The Santa Fe Institute was founded in 1984 ...

> SFI's original mission was to disseminate the notion of a new
> interdisciplinary research area called complexity theory or simply complex
> systems.

~~~
ssivark
Unfortunately a pointer to the Santa Fe institute is a little too broad to my
question (which was specifically about interacting agents, and I was
implicitly thinking more about physical embodied beings, somewhat in the
spirit of Rodney Brooks' robots). Also, I'm keen on concrete analyses rather
than vague hand-wavy pontificating.

That said, the Santa Fe Institute is a great resource to be reminded of every
once in a while. I'm particularly a fan of a line of research being pursued by
Simon Dedeo (and others). eg: _Optimal high-level descriptions of dynamical
systems_ [https://arxiv.org/abs/1409.7403](https://arxiv.org/abs/1409.7403)

~~~
carapace
Sorry. I don't have any good references off the top of my head for that.

You know about "BEAM" robotics?
[https://en.wikipedia.org/wiki/BEAM_robotics](https://en.wikipedia.org/wiki/BEAM_robotics)

W. Grey Walter's cybernetics "turtles"?
[https://en.wikipedia.org/wiki/William_Grey_Walter#Robots](https://en.wikipedia.org/wiki/William_Grey_Walter#Robots)
[https://en.wikipedia.org/wiki/Turtle_(robot)](https://en.wikipedia.org/wiki/Turtle_\(robot\))

~~~
ssivark
Thanks, I’ll check those out! :-)

------
dustingetz
[https://web.archive.org/web/20190929151534/https://avdi.code...](https://web.archive.org/web/20190929151534/https://avdi.codes/simple-
is-complex/)

------
andreskytt
Oliver de Weck from MIT has done a lot of work around complexity, including
deriving definitions and measures. Turns out there is an objective measure as
to how many microservices is optimal. The number comes to around 2.8
connections per component if I remember correctly. Can share the math, if
anybody’s interested.

~~~
crehn
> Can share the math, if anybody’s interested.

Please do!

------
michannne
Couldn't really take much from this article, other than I should read that
book, it sounds so interesting

------
karmakaze
TL;DR simple mechanisms can produce complex behaviours

My favourite example is the few simple rules of Go leading to possible extreme
superhuman strategies.

------
codr7
What was the point again?

Simple isn't Complex any more than Love is War or Dark is Light.

System-wide interactions between any kind of components is about as difficult
as it gets.

~~~
splittingTimes
Second that. This conclusion "Simplicity leads to complexity." is just too
much of a shortcut of the author's own train of thought. As you said, this
sentence should read "Interaction and coupling leads to complex emergent
behavior". I feel this summarizes this article better.

~~~
bch
There’s a Alan Kay talk[0] that might illuminate for you that leap of logic
about simplicity.

[0] [https://youtu.be/NdSD07U5uBs](https://youtu.be/NdSD07U5uBs)

------
jaequery
tldr; Micro-services architecture can start out simple at first, but when
there are many of them, it will become complex even more so than the
monolithic approach.

~~~
kdmccormick
Don't put words in the author's mouth; nowhere do they contrast microservices
with monoliths.

Also, one of Avdi's main points is that a proper microservice architecture is
complex, but NOT complicated. And in my personal experiece, monoliths have a
tendency to be complicated.

