An idea that rocked my world at SciBarCamp was the understanding that everything should be expressed as code.
This realization was the outcome of two sessions. In one session, Andrew Hessel gave a fantastic talk about synthetic biology, i.e., the direct synthesis of biological organisms, by coding their DNA. One of many fascinating things about the talk was the point of view, which wasn’t so much that of a biologist, as that of a computer programmer. A nice example of this point of view is provided by the BioBricks Foundation:
Using BioBrickâ„¢ standard biological parts, a synthetic biologist or biological engineer can already, to some extent, program living organisms in the same way a computer scientist can program a computer. The DNA sequence information and other characteristics of BioBrickâ„¢ standard biological parts are made available to the public free of charge currently via MIT’s Registry of Standard Biological Parts.
In another session, Mark Tovey spoke about open source objects (I don’t remember Mark’s exact terminology), and pointed out that using suitable fabrication technology it becomes possible to express objects as code.
In both cases, expressing something we don’t ordinarily think of as code means that all the social and technical processes of software development can be applied. In the ordinary way of thinking it doesn’t make sense to take the “diff” of two objects, and version control (with merging!) would be cumbersome at best. By expressing objects as code, these and many other operations become trivial. Libraries, APIs, and high-level domain specific languages can be built. Widespread distributed collaboration becomes possible. The open source process can be applied. A creative commons can be constructed.
This circle of ideas gives rise to many wonderful questions. What are the right sorts of abstraction when you’re expressing objects as code? Biology? Movies? Music? What sorts of libraries might we build? What’s the lisp of biology? The LAMP stack for music?
If you haven’t already read it, I think you will like “Can a biologist fix a radio?”. (Link goes to Pawel, from whom I first heard of the essay, one more click to the pdf itself.)
Thanks, Bill, that’s a terrific essay!
Bill, Michael, if you liked this essay, here’s another classic:
von Heijne G. A Day in the Life of Dr K. or How I Learned to Stop Worrying and Love Lysozyme: a tragedy in six acts.
Link to pdf:
http://skirball.med.nyu.edu/research/sb/PSB03/Week6/VonHeijne.pdf
hmm, in a way it’s already expressed as code, admittedly if it’s in english, a real mongrel of a code.
But say you turn this around – most computer codes seem designed to make certain tasks easy eg perl for text manipulation etc. How would you design a language for expressing biological ideas? i.e. what features would you build into the language itself so that the core principles are most efficient/elegantly expressed?
what would the language look like if we wanted quantum coherent interactions to be efficient to code (and what would measurements look like)?
Code refactoring would have a whole new depth 🙂