James Diggans recently moved to my favorite old home SF, (and hasn't yet committed to a job) you want to hire him. He follows synbio pretty closely and back in June I asked him this:
this is the most advanced thing I've seen and understood. Do you know of anything else related? Can you help me to understand what methods a biobricks related python library might actually provide?
I'd muddled though a few more links and papers, and even downloaded and but not yet installed something which looked interesting called Proto.
But life kept moving, and late last night I sent my KeyGene colleagues the announcement of my departure and the date for my farewell borrel.
Just before the end of the day I learned Drew Endy will be visiting our little company before I leave. His work is a big part of what brought me to KeyGene NV. To explore the edge where reading genomes becomes writing them. My work on that front is small scale, usually just few plant SNPs. Endy has instead worked across the entire bacterial genome, creating and cataloging various biological parts. He teaches high school students how to engineer new strains of bacteria which can light up, or make smells to when exposed to a stimulus. Just like they might have done in a wood, metal, or electrical shop class.
It stirs my own interest in engineering. Of understanding every single piece. Of knowing nothing further can be removed. Of building ever more elaborate devices from these BioBricks until Life becomes Lego.
But deep down, I'm a software guy, not a hardware one. And this my excuse to finally pickup Proto. The results have been very satisfying, and while it's still fresh I wanted to share a bit of what I think I now know.
Jonathan Bachrach and Jacob Beal have done most of this work, and documented it clearly. Their paper Cells Are Plausible Targets for High-Level Spatial Languages shows
- Proto is a functional language with a Scheme like syntax
- familiar operators like AND, OR, NOT, Greater-Than, Less-Than, Equal-To, Min, Max.
- a few new methods, such as 'diffuse'
- programs written in this high level language can be compiled down to a form suitable for use in real cells
- standard compiler optimization improvements apply and more can be expected
What's different here is the computer is in a very different environment.
Beal says: An amorphous medium is a manifold where every point is a device that knows its neighbors’ recent past state.
Mike says: Its a squishy bag filled with 1000s of computers. The bag might be as big as the ocean, or as small as a single cell.
Imagine throwing 1000 little computers out of a plane (2D) or over the side of a boat (3D). Each can pass messages to computers near by, but their radios are not strong enough for every computer to talk to all of the others. They must all be given the same program, and establish enough communication to coordinate tasks and roles among themselves. This is similar to aspects of SIMD parallel programming, but with a much more challenging network. No useful sized multibit adders. Iteration and other and familiar tools are absent. Floating point numbers are ... chemicals floating in other chemicals ... Stack Overflow indeed.
There is a nice little quick start guide and instead of printing "Hello World", you're rendering into a 3d space where you can position the camera, and control the scene.
I've skimmed, but not yet really done the real thinking in proto tutorial but once I do, the next milestone would be setting up this pymorphous which seems like a very appealing top level interface.
Its an interesting little corner of programming, which should become important in the years to come.