Interesting stuff for 2008-08-09

"Dawkins and Darwin" by Kaptain Kobold. Used under licence.
"Dawkins and Darwin" by Kaptain Kobold. Used under licence.

Darwin’s theory of evolution was simple, beautiful, majestic and awe-inspiring [Charlie Brooker – The Guardian]
“But because it contradicts the babblings of a bunch of made-up old books, it’s been under attack since day one. Had the Bible claimed gravity is caused by God pulling objects toward the ground with magic threads, we’d still be debating Newton with idiots.”

The Bible and the Quran agree: Insects have four legs [Dwindling In Unbelief]
Why do people belief this stuff?

BioNumbers – The Database of Useful Biological Numbers
If you’re interested in the number of prokaryotes in cattle rumen world-wide. If not this site might not be for you. :)

On a different note some interesting tech stuff

Open Source implementation of Yahoo! Pipes with added semweb goodness []
Inspired by Yahoo’s Pipes, DERI Web Data Pipes implement a generalization which can also deal with formats such as RDF (RDFa), Microformats and generic XML.

ActiveRDF – a library for accessing RDF data from Ruby []
A library for accessing RDF data from Ruby programs. It can be used as a data layer in Ruby-on-Rails, similar to ActiveRecord (which provides an O/R mapping to relational databases).

Load Balancing & QoS with HAProxy []
The worst thing you can do is queue up another request behind an already long running process. To mitigate the problem HAProxy goes beyond a simple round-robin scheduler, and implements a very handy feature: intelligent request queuing!

Links for 2007.12.27

» The Archbishop of Wales has said “virulent, almost irrational” attacks on religion were “dangerous” because they refused to allow any contrary viewpoint.

Not sure I can see how the willingness to test your ideas and reject those that don’t stand-up can be thought of as irrational fundamentalism. Indeed the problem I have is the blind acceptance and indoctrination of children with myths and legends.

» And by the way, Dr Morgan (Archbishop of Wales), the ‘Winterval’ meme isn’t true either

Winterval ran from November to January in ’97 and ’98 and was a promotional campaign to drive business into Birmingham’s town centre. During the christmas period, there were Merry Christmas banners, Christmas lights, Christmas trees and carol-singing.

» The Church of the Non-Believers

“You might say that because science can explain just about everything but not quite, it is wrong to say we don’t need God. It’s also, I suppose, wrong to say we don’t need the Flying Spaghetti Monster.” (Dawkins)

Nature doesn’t design upfront, nor should software engineers

Creationists (‘Intelligent Design’ proponents, whatever) argue that since life is too complex to have arisen by chance, there must be a God (or designer). They argue that the alternative to design is chance and that is just too improbable – it is like climbing an improbably tall, steep mountain in a single bound.


Or put another way, creationists only see two options: pure, blind chance on the one hand; and God on the other. Of course this premiss is disingenuous, Darwin demonstrated a third option – evolution by natural selection which supplies a strongly directional mechanism that is anything but random. Or as Richard Dawkins puts it: natural selection provides a way to navigate the gentle slopes up mount improbable, without the need to invoke the God Hypothesis.

Natural Selection provides a feedback loop to allow incremental changes that ratchet change up the slopes of mount improbable via a series of iterations. With each iteration being evaluated (by the environment) and either selected for, in which case it proceeds to the next iteration, or against in which case the change fails to be passed on the the next generation.

The approach of incremental improvement, ratcheting up the slopes of mount improbable, not only provides a mechanism or process to scale the slopes but also reduces the overall complexity of the system, by partitioning the problem into independent steps.

For example take three six-sided dice. The complexity of this system (the total number of possible states) is 63 or 216, this is 36 times more complex than a single six-sided die (which has six possible states). Now consider dividing the system into three partitions i.e. dealing with each die independently of the other two; the complexity of this system is the complexity of the first, plus the second, plus the third, or 6+6+6=18. Thus by partitioning a system into independent subsystems the overall complexity of a system is significantly reduced.

Partitioned dice

Now it strikes me that there are parallels here with software engineering. Software products are complex systems and attempting to climb a software mount improbable in a single bound seems to be foolhardy. Why attempt to design the entire system, at the start of the project, since it foists additional, unnecessary, complexity onto your project; it is safer to break your project into independent partitions.However, we need to be careful to try and ensure that each iteration (e.g. sprint) is independent of other iterations, otherwise we haven’t reduced our complexity (although this can in practice be difficult). And we should also ensure that we learn what has worked, and what hasn’t, at the end of each iteration and role these lessons into the next cycle of work.

It’s too easy to fail to genuinely review and learn from each iteration since we don’t like criticism and we are normally unwilling to throw away a month’s work (or part thereof) and instead continue to march blindly ahead. And that is blind faith, hoping that things will change on their own rather than continuing to move towards solutions that work and away from those that don’t.