Antoni Gaudi and learning algorithms from Nature

Happy holidays.

A few days ago, I was exploring Barcelona. This means that I saw a lot of architecture by Antoni Gaudi. His works have a very distinct style; their fluid lines, bright colours, myriad materials, and interface of design and function make for very naturesque buildings. They are unique and stand in sharp contrast to the other — often Gothic revival and Catalan Modernisme — architecture around them. The contrast is conscious; when starting out, Gaudi learned the patterns of the neo-Gothic architecture then in vogue and later commented on it:

Gothic art is imperfect, only half resolved; it is a style created by the compasses, a formulaic industrial repetition. Its stability depends on constant propping up by the buttresses: it is a defective body held up on crutches. … The proof that Gothic works are of deficient plasticity is that they produce their greatest emotional effect when they are mutilated, covered in ivy and lit by the moon.

His buildings, however, do not need to be overgrown by ivy, for Gaudi already incorporates nature in their design. I felt this connection most viscerally when touring the attic of Casa Mila. The building was commissioned as an apartment for local bourgeois to live comfortably on the ground floor off the rents they collected from the upper floors. And although some of the building is still inhabited by businesses and private residence, large parts of it have been converted into a museum. The most famous part among tourists is probably the uneven organic roof with its intricate smoke stacks, ventilation shafts, and archways for framing other prominent parts of Barcelona.

This uneven roof is supported by an attic that houses an exhibit on Gaudi’s method. Here, I could see Gaudi’s inspiration. On display was a snake’s skeleton and around me were the uneven arches of the attic — the similarity was palpable (see below). The questions for me were: was Gaudi inspired by nature or did he learn from it? Is there even much of a difference between ‘inspired’ and ‘learned’? And can this inform thought on the correspondence between nature and algorithms more generally?


I spend a lot of time writing about how we can use algorithmic thinking to understand aspects of biology. It is much less common for me to write about how we can use biology or nature to understand and inspire algorithms. In fact, I feel surprisingly strong skepticism towards the whole field of natural algorithms, even when I do write about it. I suspect that this stems from my belief that we cannot learn algorithms from nature. A belief that was shaken, but not overturned, when I saw the snake’s skeleton in Gaudi’s attic. In this post, I will try to substantiate the statement that we cannot learn algorithms from nature. My hope is that someone, or maybe just the act of writing, will convince me otherwise. I’ll sketch my own position on algorithms & nature, and strip the opposing we-learn-algorithms-from-nature position of some of its authority by pulling on a historic thread that traces this belief from Plato through Galileo to now. I’ll close with a discussion of some practical consequences of this metaphysical disagreement and try to make sense of Gaudi’s work from my perspective.

Read more of this post

Computational kindness and the revelation principle

In EWD1300, Edsger W. Dijkstra wrote:

even if you have only 60 readers, it pays to spend an hour if by doing so you can save your average reader a minute.

He wrote this as the justification for the mathematical notations that he introduced and as an ode to the art of definition. But any writer should heed this aphorism.[1] Recently, I finished reading Algorithms to Live By by Brian Christian and Tom Griffiths.[2] In the conclusion of their book, they gave a unifying name to the sentiment that Dijkstra expresses above: computational kindness.

As computer scientists, we recognise that computation is costly. Processing time is a limited resource. Whenever we interact with others, we are sharing in a joint computational process, and we need to be mindful of when we are not carrying our part of the processing burden. Or worse yet, when we are needlessly increasing that burden and imposing it on our interlocutor. If you are computationally kind then you will be respectful of the cognitive problems that you force others to solve.

I think this is a great observation by Christian and Griffiths. In this post, I want to share with you some examples of how certain systems — at the level of the individual, small group, and society — are computationally kind. And how some are cruel. I will draw on examples from their book, and some of my own. They will include, language, bus stops, and the revelation principle in algorithmic game theory.
Read more of this post

What is the algorithmic lens?

If you are a regular reader then you are probably familiar with my constant mention of the algorithmic lens. I insist that we must apply it to everything: biology, cognitive science, ecology, economics, evolution, finance, philosophy, probability, and social science. If you’re still reading this then you have incredible powers to resist clicking links. Also, you are probably mathematically inclined and appreciate the art of good definitions. As such, you must be incredibly irked by my lack of attempt at explicitly defining the algorithmic lens. You are not the only one, dear reader, there have been many times where I have been put on the spot and asked to define this ‘algorithmic lens’. My typical response has been the blank stare; not the “oh my, why don’t you already know this?” stare, but the “oh my, I don’t actually know how to define this” stare. Like the artist, continental philosopher, or literary critic, I know how ‘algorithmic lens’ makes me feel and what it means to me, but I just can’t provide a binding definition. Sometimes I even think it is best left underspecified, but I won’t let that thought stop me from attempting a definition.
Read more of this post

Randomness, necessity, and non-determinism

If we want to talk philosophy then it is necessary to mention Aristotle. Or is it just a likely beginning? For Aristotle, there were three types of events: certain, probable, and unknowable. Unfortunately for science, Aristotle considered the results of games of chance to be unknowable, and probability theory started — 18 centuries later — with the analysis of games of chance. This doomed much of science to an awkward fetishisation of probability, an undue love of certainty, and unreasonable quantification of the unknowable. A state of affairs that stems from our fear of admitting when we are ignorant, a strange condition given that many scientists would agree with Feynman’s assessment that one of the main features of science is acknowledging our ignorance:

Unfortunately, we throw away our ability to admit ignorance when we assign probabilities to everything. Especially in settings where there is no reason to postulate an underlying stochastic generating process, or a way to do reliable repeated measurements. “Foul!” you cry, “Bayesians talk about beliefs, and we can hold beliefs about single events. You are just taking the dated frequentist stance.” Well, to avoid the nonsense of the frequentist vs. Bayesian debate, let me take literately the old adage “put your money where you mouth is” and use the fundamental theorem of asset pricing to define probability. I’ll show an example of a market we can’t price, and ask how theoretical computer science can resolve our problem with non-determinism.
Read more of this post

What can theoretical computer science offer biology?

If there is anything definitive that can be said about biology then it is that biology is messy and complicated. The stereotypical image of a biology major is in the library memorizing volumes of loosely (at best) related facts only to have them overturned in the next semester. Concepts are related only vaguely, to the point that it looks like stamp-collecting to outsiders. The only unifying theme is evolution, and even that is presented with a smorgasbord of verbal and mathematical models, with many lacking predictive power or sometimes even solid empirical foundations. This might seem like the polar opposite of a theoretical computer scientist with her strict hierarchies and logical deductions. Even the complexity zoo seems perfectly tame compared to any biological taxonomy. However, since I’ve been promoting algorithmic theories of biology and even trying my hand at applying cstheory to models of evolution (Kaznatcheev, 2013), I must think that there is some possibility for a productive partnership. So, what can theoretical computer science offer biology? CStheory can provide the abstractions and technical tools to systematize and organize biology’s heuristic models.
Read more of this post

Three types of mathematical models

Whenever asked to label myself, I am overcome by existential dread: what am I? A mathematician? A computer scientist? A modeler? A crazy man with a blog? Each has its own connotations and describes aspects of my approach to thought, but none (except maybe the last) represents my mindset accurately. I have experienced mathematical modeling in three very different setting during my research and education: theoretical computer science, physics, and modeling in social and biological sciences. In the process, I’ve concluded that there are at least three fundamentally different kinds of modeling, and three different levels of presenting them. This is probably not exhaustive, but I have searched for some time and could not find extensions, maybe you can suggest some. Since this post is motivated by names, let’s name the three types of models as abstractions, heuristics, and insilications and the three presentations as analytic, algorithmic, and computational.
Read more of this post

Monoids, weighted automata and algorithmic philosophy of science

The Algorithmic Thinkers

The Algorithmic Thinkers
original art by Auguste Rodin & Eric Joyner
modified by Kate Zen

If pressed to find a passion and unifying theme behind my interests, I would say that my goal is to emancipate theoretical computer science from the current tyranny of technology and engineering, and restore it to its original position of asking and helping find answers for fundamental questions in science and philosophy. I’ve already written on progress toward an algorithmic theory of biology, wherein I permitted myself to foray into the philosophy of science. I want to continue the expedition with this post because I think that cstheory can be painlessly integrated into philosophy as an extension of analytic philosophy — algorithmic philosophy.
Read more of this post