You are here: Home Programme Keynote speakers The Power of Hybridization

The Power of Hybridization


Botanical hybridization attempts to combine the best characteristics of plants.
The Santa Fe Institute mixes people who have very different views of the world to produce breakthrough concepts. Differential equations are often solved by transforming into a space where the solutions become trivial. Overbred dogs are prone to disease due to lack of genetic diversity. Trying things that are very different will break you out of your patterns. For me, painting, acting, biking, skiing, and reading books outside my “normal” purview help with my struggles to reinvent my place in the world.

Programming languages always seem to do some things well but not others: Python punts when it comes to user interfaces, Java’s artificial complexity prevents rapid development and produces tangles, and it will be awhile before we see benefits from C++ concurrency work. The "weight" of languages and their blind spots increases the cost of experimentation, impeding your ability to fail fast and iterate. If you must use a single language to solve your problem, you are binding yourself to the worldview limitations and the mistakes made by the creator of that language.

Consider increasing your wiggle room by crossing language boundaries, complementing a language that is powerful in one area with a different language powerful in another. This is not necessarily easy. You'll probably prefer pounding out a solution in your one chosen language -- only discovering the impenetrable roadblock after you've built a mass of code, long after passing from a brief experiment into "the critical path on which all depends." Language hybridization can speed the experiment forward to quickly discover your real problems, giving you more time to fix them.

After making a case for hybridizing your thinking in general, I will present a number of simple examples showing the hooks that are already built into languages (such as Python's ctypes) and tools created to aid hybridization (like XML-RPC). Along the way, I'll point out pitfalls, the most devious of which is "assumptions about performance."