--- 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 %}