---
title: Software As Biology
transition: fade
---
{% macro quote(img=None) -%}
{% if img %}
|
|
{{ caller() }} |
{% else %}
{{ caller() }}
{% endif %}
{%- endmacro %}
{% from "deckjs.html" import section with context %}
{% call section('--------------- First Page ----------------------') %}
## Software As Biology
### Code Mesh - December 4, 2013
### Garrett Smith @gar1t
{% endcall %}
{% call section('--------------- Opening --------------------------') %}
# A long time ago at Pycon far, far away...
{% endcall %}
{% call section('--------------- Problem --------------------------') %}
## The Problem With Software These Days...
{% endcall %}
{% call section('--------------- Design ---------------------------') %}
# Is Design
{% endcall %}
{% call section('--------------- Disclaimer -----------------------') %}
## Disclaimer: I'm not a real life scientist
{% endcall %}
{% call section('--------------- Human Brain ----------------------') %}
## Popular Science: The Human Brain
{% endcall %}
{% call section('--------------- Aliens ---------------------------') %}
## Fantasy vs Reality
{% endcall %}
{% call section('--------------- Aliens ---------------------------') %}
## Fantasy vs Reality
{% endcall %}
{% call section('--------------- Genius ---------------------------') %}
## Genius, Visionary, Creator
{% endcall %}
{% call section('--------------- 1% / 99% --------------------------') %}
## 1% Inspiration, 99% Perspiration
{% endcall %}
{% call section('--------------- Valery Quote 1 --------------------') %}
## Paul Valéry
{% call quote('valery-small.jpg') %}
It takes two to invent anything.
{% endcall %}
{% endcall %}
{% call section('--------------- Valery Quote 2 --------------------') %}
## Paul Valéry
{% call quote('valery-small.jpg') %}
The one makes up combinations.
{% endcall %}
{% endcall %}
{% call section('--------------- Valery Quote 3 --------------------') %}
## Paul Valéry
{% call quote('valery-small.jpg') %}
The other chooses, recognizes what he wishes and what is important to him.
{% endcall %}
{% endcall %}
{% call section('--------------- Valery Quote 4 --------------------') %}
## Paul Valéry
{% call quote('valery-small.jpg') %}
Genius is the readiness of the second one to grasp the value of what
has been laid before him and to choose it.
{% endcall %}
{% endcall %}
{% call section('--------------- Finches ---------------------------') %}
## Genius: Natural Selection?
{% endcall %}
{% call section('--------------- Photosynthesis --------------------') %}
## Genius: Photosynthesis?
{% endcall %}
{% call section('--------------- Dark / Light -----------------------') %}
## Two Stages of Photosynthesis
{% endcall %}
{% call section('--------------- Z Scheme ---------------------------') %}
## Light Stage (Z Scheme)
{% endcall %}
{% call section('--------------- Calvin Cycle -----------------------') %}
## Dark Stage (Calvin Cycle)
{% endcall %}
{% call section('--------------- Titan -----------------------------') %}
## Earth Before Photosynthesis
{% endcall %}
{% call section('--------------- Mountains --------------------------') %}
## Earth After Photosynthesis
{% endcall %}
{% call section('--------------- Cyanobateria -----------------------') %}
## Cyanobacteria Vision Statement
{% call quote('cyanobacteria.jpg') %}
To maintain atmospheric oxygen levels and supply all of the organic compounds
and most of the energy necessary for all life on Earth
{% endcall %}
{% endcall %}
{% call section('--------------- Species ----------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-2---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-3---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-4---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-5---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-6---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-7---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-8---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-9---------------------------') %}
## Genius Everywhere
{% endcall %}
{% call section('--------------- Species-N --------------------------') %}
## Genius Everywhere
Zoom out 23 more times (8.7 million species)
{% endcall %}
{% call section('--------------- Tuna -------------------------------') %}
## Intelligent Design?
{% endcall %}
{% call section('--------------- Hintjens ---------------------------') %}
## Pieter Hintjens
{% call quote('hintjens.jpg') %}
Never design anything that's not a precise minimal answer to a problem we can
identify and have to solve.
{% endcall %}
{% endcall %}
{% call section('--------------- RoK --------------------------------') %}
## Richard O'Keefe
{% call quote('rok.jpg') %}
Start with the simplest thing that has a chance of working.
{% endcall %}
{% endcall %}
{% call section('--------------- David Allen ------------------------') %}
## David Allen
{% call quote('allen.jpg') %}
You don't actually do a project; you can only do action steps related to it.
{% endcall %}
{% endcall %}
{% call section('--------------- Me ---------------------------------') %}
## Me on "Drunken Stumble"
{% call quote('smith.jpg') %}
1. Lean
Vision / Go That-A-Way
2. Stumble
Only ever do the next obvious thing
{% endcall %}
{% endcall %}
{% call section('-------------On Agile ------------------------------') %}
# Sounds Like "Agile"
{% endcall %}
{% call section('------------ On Agile Quote -------------------------') %}
## From *Agile Manifesto*
Continuous attention to technical excellence and good design enhances agility
{% endcall %}
{% call section('------------ On Agile Quote -------------------------') %}
## From *Agile Manifesto*
Build projects around motivated individuals
{% endcall %}
{% call section('------------ On Agile Quote -------------------------') %}
## From *Agile Manifesto*
Working software is the primary
measure of progress
{% endcall %}
{% call section('------------- Slow Clap -----------------------------') %}
## Slow Hand Clap for Agile!
{% endcall %}
{% call section('--------- What is software as biology? --------------') %}
## Software As Biology
- Focus on the mechanics of solutions
- Understand how nature "solves" problems
- Use knowledge of biology to inform, inspire, or confirm ideas for software
construction
{% endcall %}
{% call section('------------- Speciation ----------------------------') %}
# Example: Speciation
{% endcall %}
{% call section('------------- Leaps ---------------------------------') %}
## Evolution vs Revolution (Punctuated Equillibrium)
{% endcall %}
{% call section('------------ Lizards --------------------------------') %}
## Allopatric Speciation
{% endcall %}
{% call section('------------ Google Maps ----------------------------') %}
# Speciation: Google Maps
{% endcall %}
{% call section('------------ Software Forking / Merging --------------') %}
## Software Release Strategy
{% endcall %}
{% call section('------------ Microscope ------------------------------') %}
## Small vs Large Change
{% endcall %}
{% call section('------------ Fisher Quote-1 --------------------------') %}
## R.A. Fisher
{% call quote('fisher.jpg') %}
Any large change will have a very small probability of improving the
adjustment.
{% endcall %}
{% endcall %}
{% call section('------------ Fisher Quote-2 --------------------------') %}
## R.A. Fisher
{% call quote('fisher.jpg') %}
In the case of the smallest change, the chance of improvement should be almost
exactly one half.
{% endcall %}
{% endcall %}
{% call section('-------------Speciation Implications -------------') %}
## Lessons from Speciation
- Revolution is evolution plus time
- Copy freely (split populations)
- Merge (interbreed) or keep separate (speciation)
- Large changes are usually bad
{% endcall %}
{% call section('--------------- Sex ------------------------------') %}
# Example: Sex
{% endcall %}
{% call section('------------- Ubiquitous -------------------------') %}
## Nearly All Complex Life Bangs
{% endcall %}
{% call section('------------- Michael Jordans --------------------') %}
## Cloning vs Sex
{% endcall %}
{% call section('------------- Peacock ----------------------------') %}
## Cost of Sex
{% endcall %}
{% call section('------------- Dancer -----------------------------') %}
## Cost of Sex
{% endcall %}
{% call section('------------- Dancer -----------------------------') %}
## Cost of Sex
{% endcall %}
{% call section('------------- Meiosis ----------------------------') %}
## Meiosis / Gene Shuffling
{% endcall %}
{% call section('------------- Fruit Flies ------------------------') %}
## Sex Combines Mutations
{% endcall %}
{% call section('------------- Diversity --------------------------') %}
## Sex: Invest In Diversity and Change
{% endcall %}
{% call section('--------------- Sex Implications -----------------') %}
## Lessons from Sex
- Homogeneity wins in the short term but eventually goes extinct
- In the long term, investing in diversity pays
- Introduce widely ranging technologies
- Hire for diversity (background, language expertise, experience)
- Must have selectable "individuals"
- Prepare to select beneficial, abandon harmful
{% endcall %}
{% call section('--------------- Death ----------------------------') %}
# Example: Death
{% endcall %}
{% call section('------------- Apoptosis --------------------------') %}
## Apoptosis
{% endcall %}
{% call section('------------ Cell Death Triggers -----------------') %}
## Triggers for Cell Death
- Blebbing
- Cell shrinkage
- Nuclear fragmentation
- Chromatin condensation
- Chromosomal DNA fragmentation
{% endcall %}
{% call section('------------ Erlang Process Death ----------------') %}
## Programmed Cell Death: Erlang
:::erlang
{ok, Value} = do_something(). %% "crash" if not successful
{% endcall %}
{% call section('------------ PCD: System-1 -----------------------') %}
## PCD: System Orientation
{% endcall %}
{% call section('------------ PCD: System-2 -----------------------') %}
## PCD: System Orientation
{% endcall %}
{% call section('--------------- Death Implications ---------------') %}
## Lessons from Death
- Death is *useful* - build for it
- Process crash
- Service retirement
- Project cancelation
- Death requires life
- Process restart
- New replacement services
- Many small projects
{% endcall %}
{% call section('--------------- Coelacanth -----------------------') %}
# Example: Coelacanth
{% endcall %}
{% call section('--------------- Coelacanth -----------------------') %}
## Outdated, Legacy, So 1990s
{% endcall %}
{% call section('------------ Coelacanth Implications -------------') %}
## Lessons From Coelacanth
- Moral judgements don't apply
- Suitability is sufficient
- Change only when there's pressure to change
{% endcall %}
{% call section('------------ Other Examples ----------------------') %}
## Other Examples?
- **Mitochrondria:** symbiosis can result in significant "leaps" in complexity
- **Junk DNA:** amoeba genome is 220x larger than ours, mostly junk - does
nature refactor?
- **Adaptive immune system:** learning to detect pathogens - does this
apply to software testing and monitoring?
- **Nervous System:** message passing, performance, reliability
{% endcall %}
{% call section('------------ Implications ------------------------') %}
## Lessons?
- Without *selection* there can be no progress
- Independent, small
- Without *variation* there can be no selection
- Fork code, invest in diversity
- Large change is generally bad
{% endcall %}
{% call section('------------ Whats the point? --------------------') %}
# What's The Point Again?
{% endcall %}
{% call section('------------ UML Diagram -------------------------') %}
## One Model
{% endcall %}
{% call section('------------ Ecosystem ---------------------------') %}
## Another Model
{% endcall %}
{% call section('------------- Reading List------------------------') %}
## Some Good Books
The Selfish Gene
Richard Dawkins
|
Life Ascending
Nick Lane
|
Dragons Of Eden
Carl Sagan
|
The Tell Tale Brain
V.S. Ramachandran
|
Parasite Rex
Carl Zimmer
|
Emergence
Steven Johnson
|
The Blind Watch Maker
Richard Dawkins
|
The Machinery Of Life
David Goodsell
|
{% endcall %}
{% call section('------------ Questions ---------------------------') %}
## Are There Any Questions?
{% endcall %}