Tuesday, February 10, 2009

Richard Gabriel's lecture at OTUG: 2/9/2009-- my mind is blown

Gripes first, praise second.
First gripe: it was a bummer that Jared Richardson was in town to speak at the Twin Cities Java User Group on the same night. I would have wanted to see him speak. EDIT: Jared was kind enough to record the presentation, link here.

Second Gripe: I hate slow reveals. They waste everyone's time. Gabriel's lecture was a slow reveal. The first half of the lecture built context into the concept of Ultra Largescale Systems(ULS), and descriptions of Metadesigns for building them.

I'll cut to the chase of the first two Metadesigns: 1 is waterfall or what I heard Neil Ford describe as a Big Design Up Front, BDUF. Metadesign 2: is stepwise design, or what we're calling iterative development, or Agile development.

I think that it would have been sufficient to state that Metadesigns 1 and 2 are insufficient for developing ULS and proceed straight to the meat of the lecture. Effectively, I think that over half of the lecture was spent recanting things that we already know.

That is the conclusion of my negative criticism.

Conceptually an ULS is a system that is beyond a human's comprehension. Some examples that were given are the entirety of New York City, a healthcare system for every living being on the planet, the entire ecosystem of the planet's oceans. An Ultra Largescale System is by definition beyond the design and understanding abilities of humans.

How do humans build such systems? Metadesign 3: evolutionary design, or using evolution to design the solution.

In my opinion, this is where the lecture started getting interesting.

Never tell people how to do things. Tell them what to do, and they will surprise you with their ingenuity.

I must confess that Genetic Algorithms are a curiosity of mine. I like the idea of tellin a computer what a want, giving it some information and letting the computer come up with a solution.

The example Gabriel gave is Adrian Thompson's Exploring Beyond the Scope of Human Design: Automatic generation of FPGA configurations through artificial evolution.

Thompson's experiment was to use the principles of evolution to dictate computer logic. In the case of Thompson's experiment, the desired trait of his circuit is to produce a circuit that can differentiate the following tones: 1 khz, 10 khz, and every other tone. The building blocks of the circuit are 100 FPGAs, or a 10 x 10 matrix of relatively simple programmable logical components.

A fitness algorithm was set in place that mimics the principles of evolution. Circuit designs that are the most fit carry their traits on to the next generation. Ones that are not deemed to be fit, do not carry their genes on.

...how noble in reason! how infinite in faculty! in form and moving how express and admirable!in action how like an angel, in apprehension how like a god!
--Hamlet, Act 2, Scene 2

The evolution was allowed to run for 5000 generations. The first thousand or so produced circuits that performed poorly or outright failed. The circuits improved over time though. The circuits evolved to outperform human designed circuits.

The circuit was analyzed after the experiment and some very curious details emerged. Only 21 of the FPGA gates were used. 79 of the 100 gates could be removed completely from the circuit without affecting the circuit's performance.

5(in gray) Gates appeared to serve no logical function. However, if they are removed from the array, the circuit fails to work. The same circuit's performance degraded when it was duplicated on another array. On software it also was degraded.

The circuit adopted feedback loops and other characteristics of an analog circuit.

What's truly amazing to me is the design. It is something that is outside of the realm of human comprehension. Nobody would think to design a circuit this way because it doesn't make sense to include seemingly disconnected and worthless elements.

I shouldn't speak for others, but I would never think to include the extra elements of the circuit because it would strike me as wasteful and cluttered. The result looks like a maintenance nightmare.

The circuit is truly amazing. Experts don't have a clear understanding of why all the elements are necessary. Only by removing them are they able to see that they are.

My own speculation is that there are small variations in the FPGA gates and only through evolutionary exhaustion were they found.

This is fascinating to me for many reasons and the implications of using the principles of evolution through natural selection to design solutions to find optimized solutions to problems.

Consider the current results of evolution through natural selection. Life, is truly amazing. Consider the diversity of animals, plants, and microbial life. Life is able to adapt exceptionally to myriad environmental conditions. Life at an evolutionary level is unforgiving, you fail, you die, and there aren't any little ones like you after you're gone.

The same rules work surprisingly well with software. I think that it can be complementary to Test Driven Development. I wonder if evolutionary design could actually replace the human part of development.

Consider the differences between TDD and evolutionary software development: both can state their acceptance criteria upfront and both provide a solution to the problem until the acceptance criteria can be met.

The advantage that evolutionary design has over human designed solutions is the absence of any human prejudice. Evolution is really a results oriented environment--maintainability, comprehension, beauty, personality, and all the other human influences are not part of the equation--well unless they are defined as part of the acceptance criteria. Given enough generations, an evolutionary design will produce the most fit solution as defined by the acceptance criteria.

By letting evolution manage the implementation of our goals, implementations that exceed the abilities of human comprehension can be produced. In essence, the programmer is god like in her ability to create programs that exceed her own ability to create a program.

Gabriel said that the results of evolutionary design is troubling to creationists and evolutionists. The trouble to creationists should be obvious. It shouldn't be a concern to the rest of us though. There are plenty of examples where observable reality should be troubling to those who buy in to a religious dogma. For example, if the universe is only 6,000 years old and we are able to observe stars that are 5 million light years away--and much further for that matter--and we know the speed of light to be constant; how can one honestly continue to believe that the universe is 6,000 years old. Something has to give.

For those who believe in evolution, Gabriel asserts, the results of evolutionary design should be troubling because we, humans, may not be able to explain the results. Are we to believe that an intelligent designer stepped in and created the results of the evolutionary design? The results actually affirm my belief in the viability of evolution.

But I digress, evolutionary design certainly does raise some issues that some may find in conflict with their faith. Gabriel did mention a computer scientist who refused to work with evolutionary design because, presumably, of her beliefs.

Other questions arise though. Who should take ownership and responsibility of the results of evolutionary design? Certainly the first person to claim ownership of something that can be monetized will want to claim ownership, but what about responsibility. Will that person accept the liability of the software that they claim to own. What if an evolutionary designed program turns out to cause people harm? Who should be held liable? The concept of ownership can be challenged by this method of design.

Second Life for Software

Gabriel concluded with a proposition that for evolutionary designed software to take the next step and be integrated into an ULS an environment where software can interact must be created. He suggested a Second Life be created for software. His proposition is a virtual world where humans and software can interact. In this world software would take on physical characteristics of volume, mass, odor, color, shape, and sound.

In this world software would be free to evolve. The software that is useful or beautiful to humans would thrive. Gabriel kind of lost me at this point. I'm going to have to think about it for a while.


Jared said...

You're kind of in luck... my presentation was recorded. It was fairly low quality... the camera was my iPhone. :)


Paul Wiedel said...

That's awesome.
Thank you for sharing the link Jared.