Alan Kay on OOP

Some update before I move on to the main post:

I’m an official team member of the 2010 NYU iGEM team! I’ve learned a ton of biology from Russ, and worked on some cool stuff like visualizing and simulating the Immunoyeast system using Processing language. I’m also working on having a touch-screen installation for the Jamboree, so don’t forget to check it out if you plan on being there.

Genspace is up and running, and it is totally awesome. We collaborated with the BioBus at the World Maker Faire and won the Maker Editor’s Award, which is apparently a kind-of-big deal. I did about 40 DNA extraction, purification, PCR and restriction digest myself, teaching people about basic lab processes and a bit of theory behind genotyping. There were lots of screaming children and spitting involved, but it was totally worth it. The target of the exercise was TASR38 coding SNP, and I should have a detailed post of the whole process up in a few weeks.

There are tons of more stuff I should be writing about, and maybe I’ll find enough time to do that when the iGEM is over (although I’m already thinking about how awesome 2011 iGEM can be).

Back to the main post: I’ve been reading stuff written by Alan Kay again. I think it’s safe to say that he’s one of my all-time heroes by now. There’s a cool book about him and his work called Points of View available for free on the net. It’s not directly relevant to biology or physics, but if you’re interested in education, information abstraction and history it will be a fascinating read.

It’s not that I’m actively seeking out stuff about him. I just seem to run into them whenever I do research for my own projects, whether it be methods for abstracting complex sciences for public consumption or coming up with useful programming tools for beginner’s bioinformatics curriculum.

I was reading up a bit more on structure of Ruby and its use in bioinformatics. I eventually ran into the legendary Ruby hacker _why and his Shoes and Hackety Hack toolkits, which mysteriously led me to another one of Alan Kay’s letters, written in 1998 after OOPSLA. The piece itself isn’t directly relevant to biology. He just talks about how most people don’t really understand OOP in computer sciences and how it’s not really about objects but dynamic messages passed between objects. Here’s an excerpt from the letter I found interesting.

“The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.”

Alan Kay had biology background before he went into computer science and he explicitly stated that his most well-known achievement, OOP model and Smalltalk systems are inspired by biological processes… Which is one of the reasons why I tried to use Squeak Smalltalk system for earlier iteration of my synthetic biology curriculum for high school children (something I’m still working on and need a ton of help with). Considering that earlier versions of synthetic biology in form of BioBrick system is based on core engineering principles I can’t help but to think about possibility of re-applying Alan Kay’s OOP model back to biological systems.

BioBricks based synthetic biology strongly resembles ‘object’-oriented OOP paradigm, where people build parts with unique internal characteristics and then link them together into a whole system. Entire system is focused on functionality of the individual parts with almost no care taken to characterize and document how different parts interact with each other. It should be interesting to imagine a different type of synthetic biology where the biologist considers how different segments of DNA (or perhaps the system should be built on top of larger scale composite parts) modules communicate and work with each other, and how to coerce them into forming larger systems. Systems built on top of message passing rather than minute details of the molecular system.

Sigh, the more I learn about things the more I have to study.



Now you might be wondering why anyone would ever want to worry about implementing true OOP like paradigm or message based system building in biological systems. The answer is simple. All these programming paradigms were created to handle complexity. When we consider that existing paradigm of synthetic biology borrows heavily from that created for engineering and programming computers (one of the prominent figures of synthetic biology, for example, is Tom Knight, of the original MIT lisp hacker fame), ability to handle complexity within engineered framework becomes a fundamentally important issue.

One of the main difference between silicon based computation and that within in-vivo environment is scalability. Conventional programming languages are not very dynamic, and are terrible at scaling up compared to biological systems. If we are to bring any sort of computational/engineering approach to biology we need to address the issue of scalability that works in orders of magnitude difference from initial state. Biological systems do not go through processor bottleneck to transition from one state to another, and they have billions of processes operating in parallel. Engineering and programming approached as we know them will not be very useful for long without efforts to address these issues.


Universal knowledge

There is an interesting notion behind some of the more network oriented mathematical researches these days, regarding possible existence of universal characteristic available to all network centric systems regardless of their physical implementation. For some odd reason I find myself coming back to such thought often in recent years, though I’m not really sure why I would pay any more attention to this fascinating subject than say, chaos in life-like system.  Regardless of the reason, if I can’t help but to think about the subject I might as well do a little musing.

How about if I apply the methods of the network-link based thinking to a bit of epistemology? The structure of the human knowledge is fundamentally network oriented in that knowledge rarely if ever come without direct reason taking the form of knowledge. In order to broaden one’s knowledge one must know something first, and from there on the individual case of knowledge is built up, one thing leading to the other and the other depending on the truth of another knowledge which plays out in complex web of positive and negative feedback like any other decent complex system in nature. What if there is a certain characteristic that the structure of knowledge must take through the virtue of taking the mathematical form of complex network? What if it is possible to arrive at previously ignored possibilities of the world simply by searching for certain structural phenomena within the knowledge network itself instead of going through every single link within the network like we do right now? Even more, what if there is a pattern that all valid structure of knowledge must follow? What if there is a way to ‘know’ the structure of the knowledge itself without being aware of all the individual components forming the knowledge network?

If there is any valid point in this musing, the implications would be quite interesting. The impact such theory of knowledge would have on the nature of artificial intelligence/life studies and natural complex systems research would be most interesting, and quite a few educators would have something to think about. They might finally begin to treat learning as a development of interface to the universal structure of knowledge instead of some twisted weeding out process to erudite the gifted (which is a process most obvious in poorer schools of the inner city area, with richer private schools taking a bit more ‘democratic’ approach, strangely enough).

All this is nothing more than talk, of course. At the moment there is no way to support such claim of universal network-centric structure of knowledge in any academic detail. There are a few interesting historical cues that might suggest in thinking such a thing, like the prevalence of the Jungian collective unconscious in many forms throughout the history, or some of the things believed by Rudolf Steiner’s Anthroposophy movement, though both are not quite rigorous enough to lend credit to a full fledged academic research of scientific nature.

Regardless of the truth of such complex system based dispositions, mathematical phenomena seem to be getting ever closer to the structure of the real world. Maybe it is a sign of the future to come.