A domesticated animal is still operating within evolution, be it a domesticated cat or ape (human).
That does not help to explain the gaps. Such an explanation ("evolution did it") fails to address the anomalies with a plausible explanation. Pye's article has some anomalies, and here are some more; a challenge for you:
http://www.us.net/life/Almost all arguments against evolution are "but the gaps".
There needn't be gaps.
People find it very hard to understand that a seemingly clever design can have happened without prior plans or blueprints, but they do!
How did molecular evolution generate metabolic recipe and instructions using a representational symbol system?
The concept of the metabolic recipe was not forethought and engineered, it was not designed.
The working recipe emerged through evolution. Many many non working recipes were tried and failed.
Evolution only favors a surviving replicator (obviously).
The complexity of life emerges.
What programmed the error-detection and error-correcting software that keeps life from quickly deteriorating into non-life?
The self correcting mechanisms within a genome were not programmed, they themselves emerged trhough an evolutionary process. The simplest start down this path probably happened by a genome having informational redundancy possibly having multiple copies of the same information and then choosing best of (have 3 copies choose 2 if 1 is different), the life that could do this more efficiently (by consuming less energy) would be favored survivors/reproducers. And so there is a driving force to make the correction mechanism more elegant (use less energy).
Error correction mechanisms were themselves mutated, most failed miserably, the best replicated onward.
Evolutionary drive for self correction mechanisms will be highest during times of turmoil, for example times when earth had alot of incident ionizing radiation for one reason or another.
I am sure of my answer here because I have myself used synthetic genetic algorithms to optimize various lossless audio compression codecs. I have witnessed complexity beyond which I entered as the programmer. This complexity emerges and will not be understood by the programmer.
I have also used evolutionary genetic algos to optimize parameters on very complex systems (neural net topology and weight setting), to brute force tune such systems would take far too long (years), but the evolutionary algo performs multidimensional gradient descent to good solutions very quickly.
I cannot stress enough how amazed I was to see such complexity and order arise from VERY simple operators.
These operators are:
Crossover and
Mutation.
These operators happen naturally in any self replicating chemistry.
I recommend learning a little about the subject you seem so keen to dismiss:
http://www.obitko.com/tutorials/genetic-algorithms/crossover-mutation.phpNOTE: The above page uses far clearer and simpler language than the text you linked, which reads like it's written by a dunce with a scientific thesaurus.
EDIT:
Incidentally, Self correcting codes, when you visualize the information flow topology, have very simple repeating patterns.
These codes also appear to be in the very quantum fabric of spacetime itself:
https://www.youtube.com/watch?v=q1LCVknKUJ4&feature=player_embedded#!
To me that's more interesting than them existing in life (which is kind of to be expected).