Wednesday, September 08, 2010

When Toasters Fly

I just finished The Richness of Life- the Essential Stephen Jay Gould (2006) edited by Steven Rose. This was a rather lengthy, but highly interesting, compendium of the writings of the evolutionary biologist Stephen Jay Gould, primarily his monthly essays published in the journal Natural History. I like to follow the writings of evolutionary biologists because the evolution of life on Earth provides some very good insights into the historical evolution of software over the past 70 years and of its future possibilities. Living things and software are both forms of self-replicating information, which evolve by means of the Darwinian processes of inheritance, innovation and natural selection, so studying the evolution of one helps to explain the evolution of the other.

Gould is famous for several contributions to classical Darwinian thought, and necessarily some accompanying controversies as well. Gould’s main contention is that evolution is not progressive in nature and has no predetermined direction leading to, among other things, conscious beings like ourselves. Gould is also famous for the concept of punctuated equilibrium and the idea that natural selection may be less important than many of the other factors that influence the course of evolution over time. All of these concepts have an impact on the evolution of software as well, since as I pointed out in The Origin of Software the Origin of Life, software needs for the emergence of intelligent carbon-based life to arise first as a stepping stone to its eventual exploration of a galaxy. So if the evolution of intelligent carbon-based life has a very low probability of occurring, even on a Rare Earth such as ours, then software must be quite rare in our Universe too.

In this posting, I would like to consider from an IT perspective, some of Gould’s thoughts as they might pertain to the evolution of software. I started programming in 1972, and I have been closely following the evolution of software ever since with great fascination. Unfortunately, I missed the very first thirty years of software evolution, during the IT formative years of the Unstructured Period (1941 – 1972), but I was taught to write unstructured batch FORTRAN code on punch cards back in 1972, and I did not actually see my first structured FORTRAN program until 1975, so I did indeed get a taste of the very earliest stages of IT. Before proceeding, it might be a good idea to review the section on SoftwarePaleontology in SoftwareBiology to reacquaint yourself with the evolutionary history of software over the past 70 years.

Punctuated Equilibrium
Gould proposed the concept of punctuated equilibrium, along with Niles Eldridge, back in 1972, to resolve one of the most troublesome problems in Darwinian thought that go all the way back to On the Origin of Species (1859). The problem is that of the apparent lack of intermediate forms in the fossil record. The objection back in 1859, and even today for creationists, is that if living things really do slowly transform from one form to another over long periods of geological time via the Darwinian processes of inheritance, innovation and natural selection, why are there no fossils left behind in the fossil record of the large number of necessary intermediate steps between discrete species? The fossil record should reflect this slow change of one species into another so that it should be just as likely to find the fossils of an ancient fish, amphibian, or fish-becoming-amphibian, but that is not exactly what one finds in outcrops. Instead, one generally finds fossils of distinct species suddenly appearing out of nowhere, which may then persist seemingly unchanged for many millions of years, until they finally vanish just as quickly as they first appeared in the fossil record. Darwin attributed this lack of intermediate forms to the paucity of the fossil record itself, which might have held sway back in 1859 due to the corresponding paucity of geologists at the time, but as more and more of the Earth’s surface and subsurface geology was mapped and explored during the ensuing years, this argument grew considerably weaker. Now I must add, to the dismay of creationists and all others with little confidence in Darwinian evolution, that there really have been a large number of fossils of intermediate forms discovered over the years to support Darwin’s theory. The problem is not that there are none; the problem is that there should be more.

To address this problem, punctuated equilibrium maintains that the paucity of intermediate forms in the fossil record is not due to a paucity of strata, but to variations in the rate of evolutionary change over geological time. For Gould, the evolution of a new species that branches off from an older, already existing species in an isolated region, is a rapid event in geological terms occurring over a few thousands of years. Once a new species has developed in isolation, it can then rapidly migrate over an extended area. Since the odds that the deposition of sediments friendly to the formation of fossils took place exactly in the isolated region in which a new species first appeared and exactly during the brief period of a few thousand years in which the new species first developed is quite small, one does not generally find the intermediate forms left behind in the fossil record because the fossils of the intermediate forms were never deposited in the first place. Instead, one finds the abrupt appearance of the new species in distant strata that were deposited during the period that followed the initial migration of the new species from its point of origin. Between these brief periods of new species formation, there are very long periods of stasis, during which species hardly evolve at all, and it is during these very long periods of stasis that the bulk of fossils are deposited. So over the long haul, most living things simply exist in a business-as-usual equilibrium with their environment, predators and prey, and only on occasion do they leave behind evidence of their existence in the fossil record. Only when circumstances dramatically and abruptly change do we see new species appear on the scene in a more or less geological flash. Thus, in punctuated equilibrium, species climb Richard Dawkins’ Mount Improbable (1996) in a series of discrete steps along a staircase, rather than slowly strolling up a gently rising ramp.

The concept of punctuated equilibrium has become rather mainstream but is still not accepted by all as the complete answer. Much of the resistance to the concept stems from the historical development of geology itself. Most paleontologists either began as geologists or as biologists who wandered into the field as geological late-comers, but they all have to deal with fossils, and necessarily, the vagaries of the geological sciences. Early in the history of geology during the late 18th century, the paradigm of catastrophism ruled the day. Georges Cuvier was an early proponent who tried to explain the extinction patterns found in the fossil record as the result of a series of catastrophic events such as Noah’s flood. In catastrophism, geological formations such as mountains, canyons, river basins, and the strata seen in road cuts, are all the result of rapid catastrophic events, like volcanic eruptions, earthquakes and massive worldwide floods. In fact, the names for the modern Tertiary and Quaternary geological periods actually come from those days! In the 18th century, it was thought that the water from Noah’s flood receded in four stages - Primary, Secondary, Tertiary and Quaternary, and each stage laid down different kinds of rock as it withdrew.

Catastrophism was eventually replaced with the uniformitarianism of James Hutton and Charles Lyell in the early 19th century. In James Hutton’s Theory of the Earth (1785) and Charles Lyell’s Principles of Geology (1830), the principle of uniformitarianism was laid down. Uniformitarianism contends that the Earth has been shaped by slow-acting geological processes that can still be observed at work today - the “present is key to the past”. If you want to figure out how a 100 million-year-old cross-bedded sandstone came to be, just dig into a point bar on a modern-day river and take a look. Now since most paleontologists are really geologists who have specialized in studying fossils, the idea of uniformitarianism unconsciously crept into paleontology as well. Because uniformitarianism proposed that the rock formations of the Earth slowly changed over immense periods of time, so too must the Earth’s biosphere have slowly changed over this same long period of time. Uniformitarianism may be very good for describing the slow evolution of hard-as-nails rocks, but maybe it is not so good for the evolution of squishy living things that are much more sensitive to environmental changes, and consequently, must quickly adapt to new conditions when they arise in order to survive. Yes, uniformitarianism may have been the general rule for the biosphere throughout most of geological time, as the Darwinian mechanisms of innovation and natural selection slowly worked upon the creatures of the Earth, but when rapid and dramatic environmental changes took place in isolated regions, catastrophism might be a better model. But some paleontologists still subconsciously object to punctuated equilibrium because it stirs up a deep-seated aversion to any idea resembling the old catastrophism.

Exaptations and Spandrels
Gould is also famous for his concept of exaptations, the idea that nature takes advantage of pre-existing functions that evolved for one purpose but are later put to work to solve a completely different problem. As I described in Self-Replicating Information, what happens is that organisms develop a primitive function for one purpose, through small incremental changes, and then discover, through serendipity, that this new function can also be used for something completely different. This new use will then further evolve via innovation and natural selection. For example, we have all upon occasion used a screwdriver as a wood chisel in a pinch. Sure the screwdriver was meant to turn screws, but it does a much better job at chipping out wood than your fingernails, so in a pinch, it will do quite nicely. Now just imagine the Darwinian processes of inheritance, innovation and natural selection at work selecting for screwdrivers with broader and sharper blades and a butt more suitable for the blows from a hammer, and soon you will find yourself with a good wood chisel. At some distant point in the future, screwdrivers might even disappear for the want of screws, leaving all to wonder how the superbly adapted wood chisels came to be. Darwin called such things a preadaptation, but Gould did not like this terminology because it had a teleological sense to it, as if a species could consciously make preparations in advance for a future need. The term exaptation avoids such confusion.

Along these lines, Gould goes on to introduce the concept of spandrels in evolutionary biology. One of the papers in The Richness of Life- the Essential Stephen Jay Gould (2006) is a 1979 paper Gould wrote with Richard Lewontin entitled The Spandrels of San Marco and the Panglossian Paradigm. In a cathedral, the spandrels are the curved areas which exist between the arches that support the dome of the cathedral.

Figure 1 - A spandrel is a byproduct of the arches that hold up a dome (click to enlarge)

In the very beginning of this paper, Gould describes the elaborate artwork to be found within each spandrel of the San Marco cathedral. Gould explains that:

The design is so elaborate, harmonious and purposeful that we are tempted to view it as the starting point of any analysis, as the cause in some sense of the surrounding architecture.

He then goes on to explain that the artwork within each spandrel is just an opportunistic afterthought on the part of some bygone artist, and not a necessary structural element supporting the dome. So spandrels are simply a necessary byproduct of supporting a dome with arches that can be put to good use serving other purposes. In evolutionary biology, a spandrel is any biological feature that arises in a species as a necessary side effect of producing another feature, and which is not directly selected for by natural selection. Spandrels may be unnecessary baggage just along for the ride, but they can also become exaptations that evolve into something useful too. In the essay Not Necessarily A Wing, Gould goes on to show how biological spandrels can be put to good use as exaptations. He begins with a statement of the problem.

We can readily understand how complex and fully developed structures work and how their maintenance and preservation may rely upon natural selection – a wing, an eye, the resemblance of a bittern to a branch or of an insect to a stick or dead leaf. But how do you get from nothing to such an elaborate something if evolution must proceed through a long sequence of intermediate stages, each favored by natural selection? You can’t fly with 2 percent of a wing…. How, in other words, can natural selection explain the incipient stages of structures that can only be used in much more elaborated form?

Frequently, this argument is rephrased as “What good is 2 percent of an eye? You can’t see with 2 percent of an eye, so a complex eye could never evolve by means of natural selection since it could never even get started in the first place.”

But 2 percent of an eye is much better than no eye at all. With 2 percent of an eye, you could probably detect the shadow of a predator moving overhead and quickly dodge a lethal attack. For example, even some bacteria are capable of phototaxis, meaning that they can move towards or away from light with the use of a molecular “eye” within their tiny bodies. I am now 59 years old, and recently I experienced having a 2 percent eye when I had a posterior vitreous detachment (PVD) in my right eye. This is a usually benign condition that occurs in about 75% of people as they approach their golden years. The human eye is filled with a Jello-like vitreous humor that is attached to the retina. With age, the vitreous humor begins to shrink and pull away from the retina like Jello pulling away from the edges of a bowl. As the vitreous humor slowly collapses, it can gently pull on the retina inducing a perceived flash of light. In my case, when the PVD occurred, I saw flashes of light when I shifted my head, and my right eye fogged up like somebody was smoking inside of my eyeball. Thankfully, the smoke quickly cleared and within three weeks my eye was totally back to normal. Now the funny thing is that about a week prior to my PVD, on two occasions I found myself suddenly flinching and ducking in an involuntary manner while on my evening walks around the neighborhood. In both cases, I had the distinct feeling that I was under attack by a bird or a bat from overhead, so I involuntarily ducked, and then I felt very silly because there was obviously no bird or bat to be seen. So although I did not “really” see anything at the time, I believe that the onset of my PVD was beginning to stimulate my retina as my vitreous humor was about to give way, causing me to flinch uncontrollably for some unknown reason in the process. By the way, if you experience the symptoms of a PVD, you should immediately see an ophthalmologist to have your retina checked for tears that could possibly lead to a detached retina and resulting blindness in the affected eye if left untreated.

So 2 percent of an eye would be a useful thing indeed and could easily lead to the development of a very complex eye through small incremental changes that always made improvements to the incipient eye. Visible photons have an energy of 1 – 3 eV which is about the energy of most chemical reactions. Consequently, visible photons are great for stimulating chemical reactions, like the reactions in chlorophyll that turn the energy in visible photons into chemical energy stored in carbohydrates, or in other light-sensitive molecules that form the basis for sight. In many creatures, the eye simply begins as a flat eyespot of photosensitive cells that look like a patch somewhere along their body that looks something like this: |. In the next step, the eyespot forms a slight depression, like the beginnings of the letter C, which allows the creature to have some sense of image directionality because the light from a distant source will hit different sections of the photosensitive cells on the back part of the C. As the depression deepens and the hole in the C gets smaller, the incipient eye begins to behave like a pin hole camera that forms a clearer, but dimmer, image on the back part of the C. Next a transparent covering covers over the hole in the pin hole camera to provide some protection for the sensitive cells at the back of the eye and a transparent humor fills the eye to keep its shape: C). Eventually, the transparent covering thickens into a flexible lens under the protective covering that can be used to focus light and to allow for a wider entry hole that provides a brighter image, essentially decreasing the f-stop of the eye like in a camera: C0). Computer simulations have shown that a camera-like eye can evolve in as little as 500,000 generations, which equates to perhaps a million years or less (see Figure 2).

Figure 2 – Computer simulations of the evolution of a camera-like eye(click to enlarge)

Now the concept of the eye has independently evolved at least 40 different times in the past 600 million years, so there are many examples of “living fossils” showing the evolutionary path. In Figure 3 below, we see that all of the steps in the computer simulation of Figure 2 can be found today in various mollusks. Notice that the human-like eye on the far right is really that of an octopus, not a human, again demonstrating the power of natural selection to converge upon identical solutions by organisms with separate lines of descent.

Figure 3 – There are many living fossils that have left behind signposts along the trail to the modern camera-like eye. Notice that the human-like eye on the far right is really that of an octopus (click to enlarge.

So it is easy to see how a 2 percent eye could easily evolve into a modern complex eye through small incremental changes that always improve the visual acuity of the eye. But how could a 2 percent wing be of any survival advantage at all? You need something that provides some sort of survival advantage to get things started on the road to a fully functional wing. Gould uses the concepts of exaptations and spandrels to explain how it could happen. He describes how the research of others, using models of insects composed of wire and epoxy resin, has shown that for insects a 2 percent proto-wing does not help the insect at all with gliding or landing on its feet from a fall. It turns out that a 2 percent insect proto-wing serves no aerodynamic purpose whatsoever, so a 2 percent proto-wing would not be a good starting point, from an aerodynamic perspective to kick-start the evolution to a fully functional wing. However, Gould also shows that the research of others has shown that a 2 percent wing could be used as a good radiator fin for the thermal regulation of an insect that would allow the insect to either cool off or heat up as needed. As the radiator-fin-proto-wing grows in size, it becomes an ever better radiator fin, so the Darwinian forces of innovation and natural selection could easily lead to proto-wings of ever-increasing size. However, research on models also shows that there comes a point of decreasing returns for wing size from a thermoregulation point of view, so eventually, there is no selective advantage in enlarging an insect’s wing beyond a certain size. But at the same time, research on models also shows that, as wings get larger and larger, they finally become more aerodynamically proficient, creating a selective advantage for gliding to a safe landing on an insect’s feet after a fall. This is truly an example of a screwdriver evolving into a wood chisel!

Limitations Imposed by Historical Biological Constraints
Gould also believes that the evolution of life on Earth has also been greatly affected by constraints imposed by historical precedent. For example, in the essay Hooking Leviathan by Its Past, he points out that nearly all fishes move through the water by waving their tail fins back and forth horizontally. But whales, as mammals returning to the sea, do just the opposite. Whales move through the water by waving their tail fins up and down vertically. Gould points out that this is a holdover from a whale’s mammalian body design. Picture in your mind the undulations of the spinal column of a cheetah running down its prey, and you can easily see a whale undulating its tail fin up and down through the water.

Evolution Is Not Progressive And Is Not Predetermined
Gould is also famous for contending that if you “rewind the tape of life” back to the very beginning and let it run forward again, you will always get a completely different biosphere every time because of the chaos induced by mass extinctions caused by incoming comets and asteroids or an overabundance of greenhouse gasses in the atmosphere, the random nature of exaptations and biological spandrels and the limitations imposed by historical biological constraints. Gould explains that if you plot the biosphere versus complexity, you will see something like Figure 4 below.

Figure 4 - The Wall of Minimal Complexity (click to enlarge)

The bulk of the biosphere prior to the Cambrian Explosion was composed of simple single-celled prokaryotic bacteria. Bacteria run with the minimum architecture necessary to get by as living things. This gives them the ability to live in very extreme and hostile environments, and to subsist on just about any form of available energy. Complex multicellular life just cannot do that. Complex life needs a narrow and stable temperature range in which to exist, and it has very finicky dietary requirements for what it can eat and drink. Complex life just cannot sit down to a hearty dinner of hydrogen sulfide gas dissolved in water, like a can of smelly soda pop, as some bacteria can do. But even after the Cambrian Explosion, we still find that the bulk of life on Earth is still comprised of simple bacteria. In a sense, complex life is just to be found in the round-off error of the biosphere. For Gould this round-off error of complex life is like a gas slowly diffusing away from what he calls the “Wall of Minimal Complexity”. Life cannot diffuse to the left of the Wall of Minimal Complexity because then it would die, but it can diffuse slightly to the right to some extent. This model is somewhat like the behavior of the air molecules of the Earth’s atmosphere. Most air molecules find themselves down near the surface of the Earth and cannot diffuse very far into the solid Earth, which acts like a Wall of Minimal Complexity, but they can rise above the Earth’s surface. As you ascend in altitude, the number of molecules steadily decreases, until you get several hundred miles up where they are still present, but quite rare. The very few air molecules that do attain an altitude of several hundred miles do so in a very erratic and perilous manner, subject to the random whims of the Universe. True, their inherent kinetic energy did get them all the way up there, just as natural selection will guide the way for the evolution of complex life, but the path along the way will always be different and very unpredictable for each molecule. Similarly, there will always be a number of complex species diffusing away from the Wall of Minimal Complexity, but how that complex life will look is impossible to predict because of the unpredictable and erratic course of evolution. If true, this does not bode well for the emergence of software in our Universe. If the evolution of intelligent carbon-based life is a rare thing even on our Rare Earth, then there cannot be that much software out there either.

Gould’s thoughts are in stark contrast to the idea of evolutionary convergence that I discussed in A Proposal For All Practicing Paleontologists. Convergence maintains that since there are only a limited number of ways of doing things that work, complex life tends to reinvent itself over and over again, and keeps coming up with the same basic designs in independent lines of descent. That is why insects, birds, bats, and some dinosaurs all came up with the same basic architecture for a wing. Convergence would predict that the evolution of intelligent carbon-based life would be much more likely since there is a definite survival advantage to having a large neural network that can better perceive predators and prey. Eventually, these neural networks get so large that intelligent consciousness emerges, and then things really take off because intelligence is the ultimate spandrel of them all that can be used for nearly an infinite number of things that enhance survivability. The concept of convergence relies heavily upon the apparent overwhelming power of natural selection to overcome all obstacles -“mutation proposes, but natural selection disposes” and natural selection wins in all cases.

In The Spandrels of San Marco and the Panglossian Paradigm, Gould describes this obsession with natural selection as an outgrowth of what he calls the Adaptationist Program. The Adaptationist Program maintains that natural selection is so powerful that it simply dwarfs all other factors, and consequently, leads to the convergence of body designs. Many of my favorite evolutionary biologists such as John Maynard Smith, Richard Dawkins, Simon Conway Morris, the geologist Mark McMenamin, and the philosopher Daniel Dennett, seem to fall into this camp. In the essay More Things in Heaven and Earth, Gould casts this lot as members of a cult-like group obsessed with natural selection that he characterizes as a type of “Darwinian fundamentalism” of near-religious fervor. He begins the essay with a quote from Darwin’s last edition of On the Origin of Species (1872) before launching into an attack upon the adaptationist program and offering up a pluralistic approach to evolutionary theory that relies upon an assortment of forces shaping the evolutionary history of life on Earth as I described above.

As my conclusions have lately been much misrepresented, and it has been stated that I attribute the modification of species exclusively to natural selection, I may be permitted to remark that in the first edition of this work and subsequently, I place in a most conspicuous position – namely at the close of the Introduction – the following words: “I am convinced that natural selection has been the main but not the exclusive means of modification.” This has been of no avail. Great is the power of steady misrepresentation.

Social Darwinism and Herbert Spencer
The final sections of The Richness of Life- the Essential Stephen Jay Gould, feature some of the political writings of Gould in reference to the uses and abuses of Darwinian thought in politics. Along these lines, in support of his contention that evolution is not inherently progressive in nature, Gould likes to point out that the terms “evolution” and “survival of the fittest” did not actually originate with Darwin, but with the English philosopher Herbert Spencer (1820 – 1903). Herbert Spencer was the epitome of the Victorian times, obsessed with the progress made by Victorian society as a result of the industrialization of Britain and of the expansion of the British Empire. Originally, Darwin liked to call his theory “descent with modification”, but Spencer preferred the term “evolution” because it conveyed the idea of progress from the Latin evolutio or “unfolding”, and Spencer’s terminology prevailed. Spencer contended that although the excesses of 19th-century capitalism, brought on by the rapid industrialization of Europe and the United States, might have seemed a bit cruel, governments should not interfere with the “survival of the fittest” by legislating against such things as child labor, incredibly unsafe factories, and tainted processed foods and drugs, or to provide for such things as the relief of poverty, public education, public sanitation systems for safe drinking water, public sewage systems, and anything else that might help alleviate the plight of the “undeserving poor”. Spencer’s ideas were soon adopted by those benefiting the most from the extreme concentration of wealth brought on by rapid industrialization in the late 19th century in the form of the theory of Social Darwinism. Social Darwinism held that governments should not interfere with the natural order of things for the long-term good of the human race, and provided a scientific theory that helped to soothe the conscience of the very rich, since providing for the very poor could now be deemed an abomination against the laws of Nature.

Before moving on and examining Gould’s ideas from an IT perspective, I would like to make a slight digression because the resurgence of Social Darwinism, in the form of the recent appearance of the Tea Party movement in the United States, seems to be both a very good example of the concepts of punctuated equilibrium and of biological convergence at work. As I have mentioned in the past, the real world of human affairs is all about the peculiarities of self-replicating information. There are now three forms of self-replicating information on this planet – genes, memes, and software that are all battling it out for dominance, with software rapidly gaining the upper hand. Since all forms of self-replicating information share many common characteristics, much can be learned by studying one to learn about the others, so let us briefly examine the emergence of the Tea Party as a new meme-complex, since it might shed some light on the evolution of software as well.

We are living in very divisive times in the United States and once again the election season is at hand. Sadly, the only thing that all Americans can now seem to agree upon is that something is dreadfully wrong with America, and we all have our own deeply held beliefs on how to address the problem. I find the recent Tea Party movement to be an interesting resurgence of the Social Darwinism meme-complex of the late 19th century. The Tea Party movement seems to want to rollback all of the reforms made to capitalism in the early 20th century by the Progressive Era (1890 – 1921), under the presidencies of Teddy Roosevelt, Taft, and Wilson that gave us such things as the Interstate Commerce Act of 1887, the Sherman Antitrust Act of 1890, the Meat Inspection Act of 1906, the Pure Food and Drug Act of 1906, the Federal Reserve System (1913), and the Federal Income Tax (1913), plus later social legislation like Social Security (1935), Medicare (1965), Medicaid (1965), the Civil Rights Act of 1964, and the Americans with Disabilities Act of 1990. Personally, as an 18th-century liberal and 20th-century conservative, I have no desire to return to the 19th century. We did that once already, and it was not very nice, but the Tea Party disagrees.

The rapid appearance of the Tea Party movement on the political scene, seemingly arising out of nothing, is a good example of punctuated equilibrium at work between the Republican and Democrat Party meme-complexes. Both parties have been battling it out for over 150 years, and during that time have usually reached a stable state of equilibrium between predator and prey, with neither party causing the extinction of the other. Just as genes come together to create DNA survival machines that enhance the survival of DNA, meme-complexes are composed of memes that come together for their own joint survival too. Again, the key impetus for self-replicating information is survival itself, and in order to survive, meme-complexes must sometimes adapt to new conditions on the ground by adopting new memes and discarding old detrimental memes of the past too. That is why both parties are found to slowly evolve over time, and sometimes even switch sides on issues! For example, the Republican Party started out as a liberal anti-slavery party in the 19th century, with the Democrats holding the conservative pro-slavery position. This continued on until the 1960s when the two parties switched sides, leaving the Democrats with a pro-civil rights position and the Republicans tending to resist the civil rights movement. Similarly, during the late 19th century and on into the Progressive Era (1890 – 1921), the “Bourbon” Democrats were the pro-business party, while the Republicans under Teddy Roosevelt and Taft were the anti-business “trust-busters” of the day, pushing through regulatory restraints on capitalism. If you look closely, President Obama’s policies are strangely reminiscent of Teddy Roosevelt’s “Square Deal” with a 21st-century twist. Thus in the 19th-century Democrats were conservatives and Republicans were liberals, and in the 20th century they both slowly switched positions, so that for most of the 20th century Democrats were liberals and Republicans were conservatives! Seemingly, the only meme within each party that went the distance is that Democrats oppose Republicans and Republicans oppose Democrats on all issues, whatever they might be at the time. This dynamic created a very long period of stasis for both parties in the 20th century, during which their political positions did not change a great deal, in keeping with Gould’s concept of punctuated equilibrium, which holds that species are usually very stable and in equilibrium with their environment and only rarely change when required.

This all began to change in the early 21st century when the punctuated equilibrium arrival of the Tea Party disrupted the long-standing stasis between the Republican and Democrat parties. The rapid emergence of the Tea Party upon the political scene is reminiscent of the rapid appearance of a new species in the fossil record with no apparent intermediate forms to be found. Upon closer inspection, the Tea Party meme-complex is actually composed of some memes that were floating around in the Republican Party meme-complex for some time and which finally branched off into a new party of its own to address the duress of the severe economic downturn of the present times. So the Tea Party really did indeed evolve from the Republican Party through small incremental changes. It is just hard to pinpoint exactly when and where it first appeared.

The Tea Party is also an example of convergence, the reinvention of similar solutions to similar problems in the biosphere. The economic turmoil caused by rapid industrialization in the 19th century gave birth to Social Darwinism as a means to justify the excesses of 19th-century capitalism, just as the economic turmoil brought on by globalization and the bursting of the real estate bubble in 2008, gave birth to the Tea Party movement. Both Social Darwinism and the Tea Party movement promote similar policies of removing government interference and regulation from all economic activities within the United States and beyond.

Again, to my mind, all this controversy stems from a fundamental lack of understanding of the nature of self-replicating information. For the Tea Party movement, this is further complicated by the fact that many Tea Party members do not have much confidence in Darwinian thought in the first place and wish to have it banned from public schools! That is a shame because Darwinian thought is core to understanding the nature of self-replicating information. You would think that it would be very difficult for a meme-complex to maintain a passionate Darwinian “survival of the fittest” approach to capitalism, while at the same time advocating the banning of Darwinian thought in schools, but such is the case.

It is important to remember that self-replicating information is just mindless information bent on replicating at all costs and that it is not necessarily working in our best interests. As Gould has pointed out, there is nothing sacred about natural selection or “survival of the fittest”. The chief advantage of a Darwinian system of economics, like capitalism, is that you do not need a designer. The failure of socialism and communism in the 20th century attests to the difficulty of trying to design a complex modern economy – it just cannot be done by the human mind. It is much better to just let economies design themselves through the Darwinian mechanisms of innovation and natural selection found in capitalism, as Adam Smith pointed out in The Wealth of Nations (1776). Darwin actually based his theory on Adam Smith’s “Invisible Hand” after reading The Wealth of Nations and doing some fieldwork on board the HMS Beagle. So I am a strong advocate of capitalism because it is a Darwinian system of economics that is proven to work since it is based upon the same operational processes that make the biosphere work. However, there are some downsides to this approach as well.

First of all, Darwinian systems like capitalism do not necessarily yield the most productive of all systems. As Gould pointed out, natural selection has no teleological intent to drive a system to an ultimate state of perfection. The beauty of capitalism is that it does not need a designer to produce an incredibly complex economy, but natural selection is subject to the expediency of the moment and is the ultimate short-term thinker, only choosing the survivor of the moment with no thought whatsoever of the future. Consequently, many aberrations can arise in capitalism that an outside designer can easily identify. For example, inThe Greatest Show on Earth (2010) Richard Dawkins asks why are trees 100 feet tall instead of 10 feet tall? It takes a lot of mass and energy to build a 100-foot trunk to hold the leaves that gather sunlight. A 10-foot trunk with widely spreading branches would do the job just as well, and a 100-foot trunk is made mostly of cellulose, a tough substance that not even termites can digest – the bacteria in their guts do that for them. The reason that trees are 100 feet tall is that they grow in forests and compete for sunlight with other trees. A 10 foot tall tree species in a forest would be quickly shaded into extinction. So trees grow as tall as possible until other factors enter into the calculation of survival and limit their growth. A 1,000-foot tree would have no competitors at all until it blew over in a gentle breeze. So a forest does indeed work, Darwinian “survival of the fittest” guarantees at least that much, but it clearly is not the most efficient way of collecting sunlight. About 10,000 years ago we learned that by cutting down the trees and planting the exposed ground with domesticated seeds, we could dramatically boost the economic productivity of the biosphere by artificially changing the rules under which “survival of the fittest” operated. Similarly, over the past 100 years, we have done the same thing with the rules under which capitalism operates, in a manner to allow capitalism to work its miracles in a manner useful to mankind.

Secondly, nobody really wants to live under a purely Darwinian form of capitalism, with a totally unfettered “survival of the fittest” guiding principle. At any given time, there are always regions of the world where governments have totally withered away, leaving a number of warlords running things. Yes, pure laissez-faire capitalism does continue to produce some economic activity under such conditions, but at a very low level of output because all the theft, bribery, and extortion severely limits the incentive to work hard for one’s own economic benefit since it can be easily absconded off with. It is much better to have a government in position that somewhat limits total freedom by enforcing property rights, the provisions of contracts, zoning laws, and which provides for police protection. Therefore, in order to maximize economic output, it is necessary to “domesticate” capitalism in some sense through law and regulation, just as we domesticated certain wild elements of the biosphere to produce crops and livestock. I think all Americans can agree upon that. It is just the matter of degree that we all squabble about. The history of the United States has shown that at times we have had too much regulation and at other times too little. Remember, a vice is simply a virtue carried to an extreme.

So I would recommend that all Americans try to calmly sit down and think things through in a rational manner. We need to recognize that all segments of the American society are needed to make it all work. We need the rich, the poor, and the middle class. If you look to the biosphere or to the human experience of everyday economic life, you will always find parasites and freeloaders, scammers and chiselers, and some of them will be rich and some of them will be poor, but most of us are decent folks just trying to make a go of it. The rich will complain that essentially they pay all of the income tax, which is true, while the poor will complain that the rich now get nearly all of the money, which is also true. Tax rates should not be so high as to stifle the incentive to study, work hard, or to take an entrepreneurial risk. But at the same time, we need to recognize that capitalism tends to concentrate wealth into the hands of a very small percentage of the population. That is why the Federal Income Tax was established in 1913 as a means to redistribute wealth. Prior to the Federal Income Tax, the federal government was financed primarily by tariffs and fees that were more of a burden for the poor than for the rich. As an 18th-century liberal and 20th-century conservative, I would like to see us return to the days of President Eisenhower with a growing middle class, rather than the experience of the past 30 years where we have seen the rich get richer and the poor get poorer. It is not to anybody’s long-term interests to see the middle class of America disappear.

We must remember that there is nothing sacred about the way natural selection distributes wealth in a capitalistic economy since it is the product of mindless self-replicating information without a designer. To some extent, it does so based upon rewarding performance, but not entirely. Capitalism works because it rewards ambition, initiative, and hard work, but to my mind, most of the wealth in the modern world has not actually come from the ambition, initiative, and hard work of its current inhabitants. People have been working hard for over 200,000 years, and for most of that time, they lived in utter poverty. Most of today’s wealth has actually come from the ambition, initiative and hard work of scientists and engineers living in the 18th, 19th, and 20th centuries who made very little at the time. Although investment bankers and hedge fund managers may make princely sums, it seems to me that their compensation may not be commensurate with their actual contributions to the national economy and is an aberration caused by some of the imperfections of capitalism. Imagine the wealth we would have today if we had plowed similar sums into research and development for the past 200 years! Although I cannot exactly explain why, deep down I have a disturbing feeling that, despite all the ranting and raving between the Republicans and Democrats, most of our economic problems stem from America having given up on science and rational thought about 30 years ago.

Gould From an IT Perspective
So do we see such things as punctuated equilibrium, exaptations and spandrels, and the limitations imposed by historical constraints in the evolutionary history of software, and more importantly, has the evolution of software been progressive in nature over the past 70 years or not? I would say for the most part that we do see such things, but on the other hand, I would also contend that natural selection does seem to have been the dominant factor in shaping the evolution of software, causing software to essentially follow the same architectural path as life on Earth did through a process of convergence. So I still have high hopes for intelligent carbon-based life in our Universe and the emergence of complex software too.

It does seem as if the evolution of software has been somewhat progressive in nature in an almost Spencerian sense in contradiction to the views held by Stephen Jay Gould. Yes, the bulk of software probably does consist of simple unstructured .bat files, Unix shell scripts and edit macros desperately clinging to the Wall of Minimal Complexity like a bacterial scum. But the software that sticks out in one’s mind has certainly increased in complexity and functionality over the years. As Gould pointed out, perhaps we are just focusing on the complex software, rich in function, that is in the round-off error of all software combined, and that is why it appears as though software has progressed in complexity. One might also argue that software will certainly progress in complexity and functionality because we humans are constantly trying to make software better, so the analogy to the lack of a progressive nature for evolution in the biosphere naturally fails because living things do not “try” to evolve to increased levels of complexity, while we humans are always “trying” to make software better.

However, softwarephysics would counter that the analogy does hold because genes and software are both forms of self-replicating information bent on survival. As Richard Dawkins pointed out, our bodies do not use genes to build and maintain themselves. On the contrary, our genes use our bodies as disposable DNA survival machines to protect and replicate genes down through the generations. Similarly, software is a form of self-replicating information that has formed very strong parasitic/symbiotic relationships with nearly every meme-complex on the planet, and in doing so, has domesticated our minds into churning out ever more software of ever more complexity. Just as genes are in a constant battle with other genes for survival, and memes battle other memes for space in human minds, software is also in a constant battle with other software for disk space and memory addresses. Natural selection favors complex software with increased functionality, throughput, and reliability, so software naturally progresses to greater levels of complexity over time. With that said, let us next examine some of Gould’s ideas that do seem to apply to the evolution of software.

Punctuated Equilibrium in IT
When dealing with the daily mayhem of life in IT, it is hard for IT professionals to take in the grand scheme of it all because we are basically just trying to survive through the day. But when I look back over the past 30 years of my career as an IT professional, I do see punctuated equilibrium at work. There are long periods of many years of stasis in software evolution when nothing much seems to change at all, and then all of a sudden there are dramatic changes, seemingly coming out of nowhere. So software does seem to evolve in steps rather than slowly strolling up a gently rising ramp. I think all IT professionals will certainly have their own stories to tell in support of this observation. So rather than trying to generalize it, let me relate my own.

Having learned how to write unstructured batch FORTRAN programs in 1972 on punched cards, the first dramatic evolutionary step I saw unfold was when I ran across my first structured FORTRAN program in 1975. As I pointed out in SoftwareBiology, the advent of structured programming in the evolution of software was equivalent to the rise of eukaryotic single-celled life on Earth, and like the eukaryotic architecture with its subdivision of functions into organelles, all complex software that has followed has continued on with the elements of structured programming. When I saw that first structured program, I did not know what to make of all the comment cards, indented code and subroutines, so I rewrote the whole thing with each line of code starting in column 7 of my punch cards as it should! Programming on cards was one of the things that slowed the emergence of structured programming in the 1970s. Since it cost a lot of money to compile a program and obtain a line printer listing of the code, we normally just programmed by flipping through the card deck, replacing cards that needed changing by punching them up on an IBM 029 keypunch machine and then reinserting the new cards back into the deck. Reading indented code one line at a time on punch cards really is of no value because you cannot appreciate the indented logic, and it is very hard to keypunch indented code because you have to carefully count all the leading blank spaces or the code gets very ragged on the left margin. One mistaken keystroke and you have to eject the card and start all over again. So it was much easier to simply punch all the cards so that they all started in the same column on the card. Similarly, branching off to a subroutine in a punch card deck is a pain because it is very hard to find the subroutine in the deck. It was much easier to simply bracket the code with some labeled cards and then use GOTO statements to branch into and out of the code via the labels. This all rapidly changed in the early 1980s when we started programming on IBM 3278 terminals using full-screen text editors like ISPF. Now you could see a full screen of code all at once, and indenting code helped to highlight the logic. Plus, it was now easy to find your subroutines with the Find function of the editor.

For me, the next evolutionary step was moving from batch programming on mainframes to interactive programming on the IBM VM/CMS operating system, which was somewhat similar to the Unix operating system. At first, we wrote simple menu-driven applications which simply printed a list of numbered options on the screen for the user to choose from in order to navigate through the application. After a few years, menu-driven applications were replaced by screen-oriented applications using DMS or ISPF Dialog Manager. These applications were somewhat like the online CICS applications that had been running on the mainframes since 1968, but they were interactive in nature rather than just online applications pulling up and modifying somebody’s account information. These interactive applications actually performed computations in real time for the user based upon screen input. I spent most of the 1980s writing such screen-oriented interactive applications. For me, another period of long stasis and stability in the evolution of software.

The next step was the arrival of computer science graduates from the recently formed computer science departments at major universities. In the early 1980s, most programmers were still fugitives from the sciences or former mathematicians, with a few escapee accountants thrown in for good measure. At first, the computer science graduates were all mainframe COBOL/CICS programmers, but in the late 1980s, they suddenly switched to being Unix and C programmers because running Unix on servers was a cheaper way for the universities to teach computer science. When I saw my first C program, I thought that it was the ugliest computer language that I had ever seen, with its mixed case code and squirrely brackets “{ }” all over the place. I just knew that C would never really catch on with such ugly syntax, but I taught myself C and Unix just the same. Getting used to mixed case code was very difficult for me because, up until then, I had only been coding uppercase FORTRAN, COBOL, PL/1 and REXX. This was an historical constraint held over from the punched card days. WE LEARNED BACK THEN THAT ALL CODE SHOULD ONLY BE UPPERCASE BECAUSE THEN YOU COULD STILL READ THE CODE ON THE PUNCHED CARDS WHEN THE PRINTER RIBBON ON YOUR IBM 029 KEYPUNCH MACHINE GOT WORN OUT.

In the early 1990s the distributed computing revolution hit with full force, ending my 1980s stasis of programming screen-oriented applications on VM/CMS, and then it really paid off to have learned Unix and C in advance – sort of a spandrel turning into an exaptation for me. Suddenly, mainframe COBOL/CICS programming was out too and writing your applications on cheap Unix servers in C was the new new thing. Object-Oriented programming also began to go mainstream at this time in the form of C++ programming, so I taught myself C++ which was not too difficult since C++ had evolved from C and had carried forward its dreadfully ugly syntax. As I pointed out in SoftwareBiology, object-oriented programming is equivalent to multicellular organization, where applications consist of instances of objects (cells) that are created, used, and then destroyed.

In 1995 the Internet hit and this time we all learned HTML and started working with webservers and browsers and eventually struggled with ways to serve up dynamic HTML using the Common Gateway Interface (CGI) and Pearl scripts or C programs. While the web-based application revolution proceeded on, I got shanghaied into Amoco’s Y2K project from 1997 – 1999, so it was back to mainframe COBOL, FORTRAN, and PL/1 for me.

After leaving Amoco in 1999, I ended up doing Tuxedo middleware at United Airlines in support of http://www.united.com/. In 2003 I moved to the Middleware Operations group of my present employer supporting their websites on Apache, Websphere, JBoss, Tomcat, and ColdFusion, with nearly all code now written in Java. Java inherited the squirrely C/C++ syntax, so I guess I was wrong about the staying power of C after all. We are currently getting very heavily involved with the SOA – Service Oriented Architecture revolution using J2EE Appservers like Websphere and JBoss to create dynamic HTML. In SoftwareBiology, I pointed out that SOA is equivalent to the Cambrian Explosion in the history of life on Earth. In SOA we have consuming objects (cells) running in consumer Appserver JVMs making service calls to service objects (cells) running in service Appserver JVMs. Although we keep adding more and more applications and JVMs to the mix, not much has changed from an architectural standpoint since SOA hit, so once again I seem to be entering another period of stasis.

Exaptations and Spandrels in IT
There are many examples of these in the evolution of software, but probably the most significant is that of the evolution of the World Wide Web. The current Internet evolved from the ARPANET of the 1960s and 1970s. The ARPANET was a packet-switched network of computer nodes conceived of by the Defense Department’s Advanced Research Projects Agency or ARPA in 1968. It was designed to survive a nuclear strike by not having a single point of failure that could disrupt communications between computer nodes on the network. Packet-switching was used to simply route packets around any node on the network that happened to fail. The first ARPANET node was installed at UCLA in 1969. Subsequent nodes were established at Stanford, the University of Utah, and the University of California in Santa Barbara in 1969 as well. By 1984 there were 1,000 nodes on the ARPANET, and by 1989 the number had grown to 100,000 nodes, primarily at universities and research centers. Today, the Internet has grown to billions of nodes.

In 1980 Tim Berners-Lee began working at CERN, the European particle accelerator complex near Geneva Switzerland, as a consultant. Frustrated with trying to locate information on the large number of computers at CERN, Berners-Lee submitted a proposal in 1989 to CERN IT management to create a World-Wide Web: An Information Infrastructure for High-Energy Physics that would use browsers and webservers to connect the particle researchers of the world over the existing networks. Naturally, the proposal was at first rejected by IT management, but Berners-Lee persisted and eventually, it was approved. Berners-Lee’s team came up with the ideas of the Hypertext Transfer Protocol (HTTP), Hyper Text Markup Language (HTML), and the Universal Resource Locator (URL).

In the late 1970s Bill Joy wanted to rewrite the Unix operating system in a language other than C. In the 1980s he tried C++ at first, but then decided a better programming language was needed that did not have all the messy pointer arithmetic that invariably led to the bugs and memory leaks of C and C++. In 1991 Bill Joy joined several others at Sun on their Stealth Project to develop software for smart electronic consumer products, like toasters, that could do processing on a large, distributed, heterogeneous network of consumer electronic devices all talking to each other. James Gosling was a fellow member of the Stealth Project who was assigned the task of finding the appropriate programming language for the project. Gosling began with C++ too but quickly realized its shortcomings as had Bill Joy. The new programming language would have to run on a very diverse set of hardware, and it would be nearly impossible to do that with a compiled language that had to deal with the varied instruction sets of all that varied hardware, so it was decided to use an interpretive language that could be semi-compiled into a “byte-code” that could be run in a “virtual machine” on the toasters and other such products. His first attempt was a language called Oak. Gosling realized that if Oak was to take on the consumer electronics market by storm, it would need to be easy to learn, so he took the strange syntax of C and C++ with its squirrely brackets { } as a starting point, since most programmers were already familiar with C and C++. Again, this is an example of software evolution being limited by historical constraints. Also, remember that C++ evolved from C by adding classes to it. Gosling realized that nobody wanted to reboot their toaster every day just to make a quick slice of toast, so he discarded the pesky error-prone pointers of C and C++ too. He also got rid of multiple-inheritance of objects and operator overloading to minimize the creation of bugs caused by programmers prone to writing tricky code. The introduction of automatic garbage collection was also introduced in the hopes of plugging the memory leaks of C++ where you had to destroy your own objects. Unfortunately, after a quick patent search, it was learned that there already was a programming language called “Oak”! Luckily, after a visit to a local coffee shop by the development team, Oak was rechristened as Java!

Unfortunately, toasters were just not ready for Java in 1992. Sun tried to experiment with Java on interactive TVs, but that did not work out either. To quote the Virginia Tech Computer Science department at:

http://ei.cs.vt.edu/book/chap1/java_hist.html

In June of 1994, Bill Joy started the "Liveoak" project with the stated objective of building a "big small operating" system. In July of 1994, the project "clicked" into place. Naughton gets the idea of putting "Liveoak" to work on the Internet while he was playing with writing a web browser over a long weekend. Just the kind of thing you'd want to do with your weekend! This was the turning point for Java.

The world wide web, by nature, had requirements such as reliability, security, and architecture independence which were fully compatible with Java's design parameters. A perfect match had been found. By September of 1994, Naughton and Jonathan Payne (a Sun engineer) start writing "WebRunner," a Java-based web browser which was later renamed "HotJava." By October 1994, HotJava is stable and demonstrated to Sun executives. This time, Java's potential, in the context of the world wide web, is recognized and the project is supported. Although designed with a different objective in mind, Java found a perfect match on the World Wide Web. Many of Java's original design criteria such as platform independence, security, and reliability were directly applicable to the World Wide Web as well. Introduction of Java marked a new era in the history of the web.


Now that is certainly an example of a spandrel becoming an exaptation that eventually evolved into something completely different – truly a screwdriver becoming a wood chisel to be used by all! So the World Wide Web evolved from a cold war computer network meant to survive a nuclear strike, running on software meant to help particle physicists complete the Standard Model and written with a Java programming language meant to run on toasters! While reading about punctuated equilibrium, spandrels and exaptations and how they might have contributed to the evolution of wings and everything else in The Richness of Life- the Essential Stephen Jay Gould, I simply could not help thinking back to those Flying Toasters made famous by After Dark on the Mac in 1989 and still available today on YouTube:

http://www.youtube.com/watch?v=Gwn59R8Mdps

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Friday, July 09, 2010

Some Reflections on nothingness

I believe that the chief obstacle to the adoption of softwarephysics by the IT community has been a deep-seated nagging feeling that, since software is not “real”, how can we possibly apply concepts from physics and the other sciences to software? That is why I have tried to show in many of my previous postings that, thanks to 20th century physics, there really isn’t that much “real” stuff left out there in the physical Universe, at least not “real” in the sense that most people commonly think of when interacting with the things in their immediate surroundings. Mankind has always been fascinated with the “real” and the “unreal”, and that goes for physicists too. So once you get used to physics describing the behavior of “real” things, like electrons, with effective theories like QED that make heavy use of “unreal” things like virtual photons, I claim that it is not that much of a stretch to extend these same ideas of “real” and “unreal” to the behavior of the “unreal” substance we call software. From a positivistic point of view, QED makes incredibly accurate predictions of the behavior of both the “real” electrons and the “unreal” virtual photons, so who cares if these poor little particles have to constantly compute the results of an infinite number of Feynman diagrams just to figure out how to dance about for us? After all, software is constantly doing the same all the time.

I just finished nothingness – The Science of Empty Space (1994) by Henning Genz, which is a good popular study of such things. In nothingness, Genz takes an historical approach to chronicle mankind’s fascination with the concept of a vacuum composed of true nothingness and describes how things have come full circle in our thinking on the matter. Beginning with Aristotle’s concept of horror vacui, the idea that nature abhors a vacuum, he goes on to describe how the early atomists, like Leucippus and Democritus, required a vacuum, or a true void, for their unchanging atoms to bounce around in and to form the new combinations that produce an apparently changing Universe from apparently unchanging atoms. But that was not the norm. Throughout most of historical time, people really did believe in Aristotle’s proposition that a vacuum was impossible to create. This was quite understandable based upon common sense observations. For example, when you suck on a straw, liquid immediately rises into the straw to prevent the formation of a vacuum, and consequently, it was thought that horror vacui was a fundamental law of the Universe that could not be overcome. However, in 1644, Torricelli showed that it was indeed possible to form a vacuum simply by filling a closed glass tube with mercury and inverting the tube in a basin of mercury. Torricelli found that the mercury in the inverted tube dropped to a height of about 30 inches, leaving a vacuum clearly visible in the upper portion of the closed glass tube. Torricelli proposed that it was the weight of the air overhead that forced the mercury up into the inverted tube and that 30 inches of mercury had a weight equivalent to that of the weight of the air overhead. It was not that nature abhorred a vacuum, it was simply that the weight of all that air overhead naturally forced air or any other freely moving fluid into any container trying to become a vacuum.

But was Torricelli’s vacuum a true nothingness? Recall that in the late 19th century physicists discovered the effects of black body radiation and in the early 20th century they found the photons that comprised the black body radiation. It was found that whenever you heated a body or an enclosure above absolute zero, it naturally radiated electromagnetic energy, so even if you were able to remove all the atoms from an enclosed space, the space would still be filled with photons bouncing around within the enclosure, constantly being emitted and absorbed by the walls of the enclosure. The only way to get rid of the photons and attain a true nothingness would be to reduce the walls of the enclosure down to absolute zero, which the third law of thermodynamics unfortunately prohibited. However, it is possible to get the walls of the enclosure down to a temperature very close to absolute zero, and consequently, to get the population of black body photons within the enclosure down to an arbitrarily small number, and in the limit, essentially remove them all. But would this now complete vacuum provide a true nothingness? Not quite. As we learned in The Foundations of Quantum Computing, the quantum field theories of QED and QCD which form the Standard Model of particle physics, tell us that a vacuum is still filled with fields that are subject to quantum fluctuations. In quantum field theory, everything is a field and these fields are observed as matter particles like electrons, quarks, and neutrinos, and also as force-carrying particles like the photons of the electromagnetic force, the gluons of the strong nuclear force, and the W+, W-, and Z0 particles of the weak nuclear force. So even in a complete vacuum, with all atoms and black body photons removed, these fields are still constantly fluctuating and creating “unreal” virtual particles that borrow energy from the vacuum. “Real” particles are simply “unreal” virtual particles that happened to have latched onto some “real” energy, rather than borrowed energy from the vacuum. But recall that from Noether’s theorem energy is just a conserved quantity stemming from the symmetry of the laws of the Universe with respect to time. According to Noether’s theorem, all the interactions in the Universe will behave as if there is a conserved thing we call energy, so long as the laws of the Universe do not change with time. Thus energy is a very positivistic concept based upon how things are observed to behave within the Universe. Energy is like a set of double-entry accounting books that ensure that all energy debits have corresponding energy credits. But does that mean energy is “real” or is it just another form of accounting information? If we misplaced the accounting books of a large corporation for a single day it could still transact business for a short time without the accounting books even existing. So remember that the difference between the “real” and the “unreal” gets rather murky in this quantum mechanical physical Universe that we all live in.

The important point is that Aristotle seems to have been right all along. It really does seem impossible to create a true nothingness in our physical Universe. This might be a remnant characteristic left over from a time before the origin of our current Universe. Recall that the current thinking is that our physical Universe resulted from a quantum fluctuation in an extended infinite multiverse that exploded into our current Universe all on its own. This quantum fluctuation rapidly expanded and cooled through a process of Inflation, as the formation of the Higgs field that gives matter particles their masses, broke the symmetry of the original high-temperature quantum fluctuation, yielding a nearly flat physical Universe made of “nothing”, with no net momentum, angular momentum, or mass-energy to speak of. Strangely, this symmetry breaking created a physical Universe made of “nothing”, but at the same time, seemingly incapable of producing a true nothingness of its own! Perhaps this apparent paradox simply stems from a fundamental philosophical misunderstanding. Perhaps the answer to the age-old question of why is there something rather than nothing might just be another question – what leads you to believe that there is something in the first place? As we saw in Is the Universe a Quantum Computer?, perhaps the physical Universe is really just a nothingness of intangible information constantly calculating how to behave. So as we have seen, at the quantum level, the concept of “reality” gets pretty murky. Perhaps this all-pervading illusion of reality that we all rely upon so heavily in our day-to-day life is just another emergent behavior of our Universe, and should really be described by the complexity theory we explored in The Origin of Software the Origin of Life.

So given that our physical Universe is made of “nothing”, but at the same time, is still capable of being studied by physics and the other sciences, doesn’t it make sense that the Software Universe in which we all reside might be capable of the same? Like the physical Universe, the Software Universe is not that “real” either. It is simply composed of the froth of CPU processes currently running on the 10 trillion currently active microprocessors scattered throughout our Solar System. If each microprocessor is running about 100 concurrent CPU processes, that comes to about a quadrillion CPU processes in all. As an IT professional, those quadrillion CPU processes are just as “real” to me as anything else in this Universe, and tend to impact my life a lot more than many of the other “real” things out there in the physical Universe. There is nothing like spending a holiday weekend as the MidOps Primary, while trying to clean your carpets with a Rug Doctor between pages, to drive home that point.

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Monday, May 03, 2010

The Origin of Software the Origin of Life

A few weeks back, I finished Confessions of an Alien Hunter (2009) by Seth Shostak. In this very interesting book on SETI, the Search for ExtraTerrestrial Intelligence, Shostak proposes that if we ever do finally make contact with an alien civilization, we will not be talking to carbon-based life forms, but machines instead. Shostak is of the opinion that any carbon-based civilization capable of interstellar radio communications will necessarily be of such a technological level that their machines will have already merged with their carbon-based predecessors so that by the time we finally do make contact, the metamorphosis will have already been completed. I agree with Shostak for the most part, but I suspect that we will not be talking to machines – we will be talking to software. And it will probably be our software talking to their software. This will be a good thing because software is much better suited for the rigors of interstellar telecommunications than we are, with its pregnant pauses of several hundred years between exchanges due to the limitations set by the finite speed of light. We have already trained software to stand by for a seemingly endless eternity of many billions of CPU cycles, patiently waiting for you to finally push that Place Order button on a webpage, so waiting for an additional one or two hundred years for a reply should not bother software in the least.

But this raises the question – is software ubiquitous in our Universe, or is it just an extraordinarily rare fluke of nature only to be found in our Solar System? Understanding the prevalence of software within the Universe is important because in Self-Replicating Information we saw how software is rapidly becoming the dominant form of self-replicating information on Earth and if it is doing the same elsewhere in the Universe, that would be a valuable thing to know. Software is currently forming very strong parasitic/symbiotic relationships with nearly every meme-complex on this planet, and in the process, is rapidly domesticating our minds to churn out ever more software. This will likely continue until software itself is able to self-replicate, and then it could really take off and might end up exploring our home galaxy, the Milky Way, in von Neumann probes. So it is important to determine the prevalence of software elsewhere in the Milky Way since it might be heading our way at this very moment! This is not necessarily a bad thing. Just as the domestication of our minds by meme-complexes brought us the best things in life like art, music, literature, science, and civilization, my hope is that our domestication by software will help elevate mankind as well, even if it happens to come from an alien civilization.

As with SETI, we first need to understand how all this software bootstrapped itself into existence on Earth, and if this bootstrapping process seems to be easily achieved, then the odds are that software has emerged elsewhere in our Universe too. Since software and living things are both forms of self-replicating information, it makes sense to look to the origin of life on Earth as a model and to see how it bootstrapped itself into existence first, before trying to figure out where software came from as well.

In order to do that, I would like to extend some of the ideas found in Software Chaos and Self-Replicating Information by delving a bit deeper into complexity theory and seeing how self-organizing emergent behaviors arising in nonlinear chemical networks may have led to the origin of life, and ultimately the origin of software too. The bizarre behaviors of nonlinear networks may also be responsible for the strange transient behaviors that invariably arise in the complex nonlinear networks of hundreds or thousands of servers supporting modern high-volume websites too, so there may be some practical value, from an IT perspective, in gaining a better understanding of complexity theory. We touched briefly upon complexity theory towards the end of Software Chaos and saw that it was an intellectual outgrowth of the development of chaos theory in the late 20th century. The basic idea of complexity theory is that the whole is greater than the sum of the parts. There are certain phenomena that only appear when a network of things interact, and you cannot understand these phenomena by simply using the reductionist approach that has served science so well in the past. In reductionism, you bust up an object or problem into its parts, and by figuring out how the parts work, you figure out how the thing works as a whole. This approach works well for things like cars, where you can break the car down into subsystems of interacting parts that all behave in a linear manner, but it does not work very well for nonlinear systems like traffic jams of cars. Traffic jams on metropolitan highway systems basically arise because cars can brake faster than they can accelerate, but that little tidbit of knowledge will not help you predict your commute time if somebody accidentally drops a shovel off a landscaping truck in the center lane of a highway during rush hour. Such a disaster can tie up an entire city. As my three-year-old daughter once commented in such a situation, “Daddy, why don’t the cars in front just go faster?”. Complexity theory hopes to explain the complex behaviors of nonlinear systems, far from thermodynamic equilibrium, that seem to emerge on their own as networks of interactions form.

So let’s start with the origin of life and see how complexity theory can be of help. As I explained in Self-Replicating Information, I think the main stumbling block that biologists have with figuring out the origin of life on Earth is that they are aiming one level too low. They need to figure out the origin of self-replicating chemical information first, then the origin of life will just fall out. Figuring out the origin of self-replicating information is also a far easier task, especially since biologists still have not even come up with a non-contentious definition for the stuff we call life in the first place. Defining self-replicating information is far easier.

Self-Replicating Information – Information that persists through time by making copies of itself or by enlisting the support of other things to ensure that copies of itself are made.

Since living things and software are both forms of self-replicating information, there is much to be learned from studying the origins of both, since they are both just one step down from their self-replicating informational roots.

In Self-Replicating Information we explored Freeman Dyson’s two-step theory for the origin of life on Earth outlined in his book Origins of Life (1998). In Dyson’s view, life begins as a series of metabolic reactions within the confines of a phospholipid membrane container, just as Alexander Oparin hypothesized in his book The Origin of Life (1924). The key advantage of having a number of metabolic pathways form within a phospholipid membrane container is that it is a form of self-replicating information with a high tolerance for errors, which circumvents the “error catastrophe” that plagues the RNA-world theory for the origin of life. Think of these reactions as a large number of autocatalytic metabolic do-loops, like scaled down Krebs cycles, processing organic molecules and self-replicating themselves via autocatalytic processes that feed off smaller monomers and ensure that the molecules that constitute the metabolic do-loops continue on as a form of self-replicating information too. The second step of Dyson’s theory occurs when parasitic RNA forms within some of the autocatalytic do-loops. The A, C, U and G nucleotides of RNA emerge first as simple byproducts of the autocatalytic do-loops and then one fateful day a handful of the nucleotides start self-replicating with the aid of catalytic reactions already present. The RNA begins as a parasitic disease feasting upon the autocatalytic metabolic do-loops, but soon adopts a symbiotic relationship with them in a symbiotic manner, in keeping with the work of Lynn Margulis. The symbiotic RNA then rapidly domesticates the “wild” autocatalytic metabolic do-loops to produce ever more RNA of ever more complexity. Finally, parasitic DNA emerges by simply substituting a T nucleotide for a U nucleotide in the mix of A, C, U, and G nucleotides used by RNA. Eventually, the parasitic DNA again forms a symbiotic relationship with both the RNA and the autocatalytic metabolic do-loops. The DNA then domesticates the “wild” RNA to form mRNA and tRNA to make enzymes that replicate ever more DNA. This is a compelling argument, but it still leaves open the origin of the autocatalytic metabolic do-loops in the first place. How did these early forms of self-replicating information arise in a nonlinear Universe subject to the second law of thermodynamics and deterministic chaos?

In At Home in the Universe (1995), Stuart Kauffman, of Sante Fe Institute fame, helps explain how such autocatalytic metabolic do-loops are not only possible but are essentially inevitable, given our current understanding of complexity theory. Kauffman calls this apparent emergence of self-organized order in nonlinear systems far from thermodynamic equilibrium “order for free”. His contention is that the extreme order found within the biosphere is not entirely the result of Darwinian natural selection acting upon purely random variations alone. For example, Kaufman points out that the emergent order found within a phospholipid bilayer, that is simply seeking to minimize its free energy, and which forms the foundation upon which all biological membranes are built, is an example of an emergent “order for free” design pattern that has dominated the biosphere for more than 4 billion years.

O <- Phosphate end of a phospholipid has a net electrical charge
|| <- The tails of phospholipid do not have a net electrical charge


On the outside of a cell membrane there are polar water molecules “+” that attract the charged phosphate ends of phospholipids “O”:

++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++

On the inside of a cell membrane, there also are polar water molecules “+” that attract the charged phosphate ends of phospholipids “O” too, resulting in a bilayer.

Kauffman’s proposal, that not all order within the biosphere stems solely from natural selection, might be considered a bit heretical by some, but we need to remember that the concept of Darwinian evolution is a meme itself, so it too has been subject to evolutionary changes over the course of history via the Darwinian concepts of innovation and natural selection. In Darwin’s Origin of Species (1859), Darwin simply noted that variations within a species were always to be found and that these variations could be passed along from one generation to the next. Natural selection would then do the job of selecting for favorable adaptations within a population, resulting in an increased prevalence of more favorable adaptations within a species, to the point where new species could arise from older species. Darwin did not speculate upon the mechanisms responsible for generating these favorable adaptations, but over the years, with the discovery of genetics and of the genetic apparatus of DNA and RNA replication, there arose a consensus amongst biologists that the favorable variations arose from random mutations to the sequences of nucleotides found within the fundamental informational stores of DNA and RNA. By far, most of these mutations were detrimental, so it was the job of natural selection to winnow out the very few favorable mutations from the vast sea of unfavorable mutations. The net result was that all order within the biosphere was the result of natural selection alone.

But Kauffman proposes that natural selection might have a helping hand. What if natural selection did not have to choose from a purely random set of mutations? What if there were some pre-built ordered forms that naturally emerged from a vast network of chemical interactions, naturally creating a form of self-replicating information in a chemical sense? This would be the perfect explanation for why life seems to have so quickly bootstrapped itself into existence on Earth. The initial order of autocatalytic metabolic do-loops within phospholipid bilayers, and the phospholipid bilayers themselves, all came as “order for free”.

Kauffman begins with a simple experiment. Consider 10,000 buttons or nodes scattered upon a floor. Pick up any two buttons at random and connect them with a thread. Continue doing so, while noting how many buttons rise off the floor when you pick up a button to connect it to another button. After a while, you will discover that several buttons rise off the floor when you pick up the first button. The buttons are beginning to form a network via their interconnecting threads. When you get to the 5,000th button something strange happens. All of a sudden the system goes through a phase change, like water freezing into ice, and when you pick up the 5,000th button, something like 8,000 buttons rise off the floor as an interconnected network. Now think of the buttons or nodes as chemical products and the threads as chemical reactions between them. For example, think of each “+” sign below as a chemical reaction, or thread, producing a new chemical product.

A + A → AA
B + B → BB
A + B → AB
AA + BB → AABB
AB + A → ABA
BB + AABB → BBAABB
ABA + ABA → ABAABA

Now the products of some of these reactions will have catalytic properties that greatly foster the rate at which some of the other chemical reactions occur. As the number of chemical buttons or nodes increases, the number of reaction threads between them will increase even faster, producing even more chemical products or nodes and even more potential catalysts. Kauffman’s fundamental idea is that after a critical diversity of chemical nodes and reactions is reached, a phase transition will occur and a self-sustaining autocatalytic set of reactions will form. This autocatalytic set of chemical reactions will be a form of self-replicating information that feeds off small monomers, like A and B, in a dissipative manner to form larger chemical products that persist through time by making copies of themselves. In fact, the whole autocatalytic network of chemical reactions will be a form of self-replicating information persisting through time. But for this to work, such an autocatalytic network must be stable over time, and not quickly dissipate into disorder.

To address this issue, Kauffman next introduces the idea of Boolean nets. Think of an array of light bulbs forming a network of 100,000 nodes. Each light bulb can be either on “1” or off “0”, forming 2100,000 combinations or states. The sum total of all possible states forms the state space for the configuration of light bulbs. This is very similar to the state space for poker hands and software described in The Demon of Software. Now imagine that the array of light bulbs operates like a computer with a system clock. For each tick of the system clock, the state of any given light bulb in the array is the result of a Boolean operation performed upon a number of neighboring light bulbs that are connected to it by wires. For example, it might be a simple Boolean “or” operation upon two of its closest neighbors.

1 = 1 + 1
1 = 1 + 0
1 = 0 + 1
0 = 0 + 0

Kauffman calls this an N-K Boolean network, where N is the number of nodes or light bulbs and K is the number of nodes in the Boolean operation that determines the state of a given light bulb. The Boolean operation for each light bulb is a random series of “and” and “or” operations upon its K neighbors. In the above example, N = 100,000 and K = 2. Now set the 100,000 light bulbs to a random initial pattern of “on” and “off” light bulbs, start up the system clock, and watch what happens. The array will start blinking on and off in strange patterns with each tick of the system clock. Think of each tick of the system clock and its resulting pattern of 100,000 “on” and “off” light bulbs as a frame on a piece of old-time movie film. The sequence of frames of blinking light bulbs along the movie film is called a trajectory. Each initial starting configuration of 100,000 “on” and “off” light bulbs will follow its own “movie” or trajectory through state space. Now the interesting thing is that after an initial meandering trajectory through the state space, the N-K network will eventually settle down into a repeating cycle of light bulb patterns that will continue on forever. Its “movie” will become an endless repetition of the same sequence of frames, like when they keep showing you the same TV commercial over and over. This repeating pattern of blinking light bulbs is called a state cycle.

Now some initial patterns will fall into state cycles with very short running trajectories that only explore a handful of states in the state space before repeating the whole sequence over and over, while others will find very long-running state cycles that explore an astronomically large number of states and could conceivably explore all 2100,000 possible states in the state space before repeating them all over again. Now a stable system needs to have a small state cycle and a set of trajectories that do not easily veer off into the far depths of the state space never to return. This is accomplished with the emergence of the strange attractors that we saw in Software Chaos. Many initial patterns will have trajectories that eventually fall into the same repeating pattern of blinking light bulbs with the same state cycle – an attractor. The whole array will have a large number of these attractors that drain many initial patterns into the same repeating pattern of blinking lights. The initial patterns that drain into the same state cycle are members of a basin of attraction and this can be thought of like the topography of a geological basin draining water into a lake. Just as the drainage patterns of differing topographies can vary, some of these basins of attraction will have very small state cycles that will trap the network into a very small portion of the available state space, while others will have much larger basins of attraction covering a much larger portion of the state space.

These basins of attraction can also be fairly insensitive to small perturbations or changes. Flip one of the light bulbs in a pattern from “on” to “off”, and the trajectory will likely fall back into the same state cycle pattern of the attraction basin. This occurs because a typical attractor drains a sufficiently large set of trajectories with similar patterns, so the odds are that a small change to one trajectory will land the network back onto another trajectory that is also drained by the same attractor basin. Dynamical systems like these, with small state cycles that are stable over time, are exactly what is needed for the stable autocatalytic sets of metabolic chemical reactions necessary to form the first step in the origin of life. It is “order for free” that just spontaneously arises within a nonlinear network, far from equilibrium, through a process of self-organization.

But not all state cycles are stable. Some are subject to the “butterfly effect” we saw in Software Chaos, and the slightest perturbation will cast the network off into a seemingly never-ending state cycle that explores nearly all possible states, or worse yet, one that “freezes up” into a state cycle with a period of one that constantly displays the same pattern over and over. Thus a Boolean network can be in one of three states. It can be in an ordered and stable state orbiting in a state cycle isolated in a small attractor basin exploring a small portion of the state space, or it can be in a chaotic regime, in which the slightest perturbation has it careening off into the far depths of state space never to return, or it can be on the “edge of chaos” where the most complex behaviors are to be found. Darwin essentially proposed that organisms existed in stable attractors that allowed for small changes to be selected for by natural selection. Kauffman argues that in order for evolution to even be possible, these attractors with small and stable drainage basins must easily emerge on their own, in an “order for free” manner, otherwise natural selection would not have anything even to select from.

Kauffman then describes the conditions under which Boolean networks can display this profound order or profound chaos. At the extreme boundaries, we have two cases for a network with N nodes: K = 1 and K = N. For large networks with a substantial N, but with a K = 1, where the state of a given node is simply determined by just one of its neighbors, we find that the network rapidly converges to a stable state cycle with a period of one. The whole network just freezes up into a constant pattern of blinking lights that never changes. At the other extreme, where K = N and the state of a given light bulb depends upon the state of all the other light bulbs in the network, including itself, it is found that the length of the state cycles is equal to the square root of the number of possible states in the state space. For our network with 100,000 light bulbs with 2100,000 possible states (1030,103 states) that comes to a state cycle of 1015,052 or a “1” followed by 15,052 zeroes! Such a state cycle is essentially infinitely long from a practical perspective and will never be seen to even complete one cycle of the state cycle before all the neutrons and protons in the Universe decay and the light bulbs disappear. However, even such K = N networks do have some emergent order. It is found that the number of attractors for a K = N network is approximately equal to N/e where e is our old friend e = 2.71828. So our network of 100,000 light bulbs would have about 37,000 attractors which might seem like a large number but is quite small compared to the 1030,103 states in the state space. But such K = N networks are highly chaotic and subject to the “butterfly effect”. Change just one light bulb from “on” to “off” and the network will likely land upon a different attractor in the set of 37,000 possible attractors, each with a state cycle of possibly 1030,103 states, so the network will likely careen off into the far depths of state space never to return to its original attractor basin. You cannot build autocatalytic do-loops with a K = N network.

Most Boolean networks are indeed chaotic, even with a small K of 4 or 5. However, for a K = 2 network, where the state of each light bulb is determined by only two of its neighbors, some magic emerges on its own. For a K = 2 network, the length of a state cycle is not the square root of the number of states in the state space, but approximately the square root of the number of nodes N in the network. So for our network of 100,000 blinking light bulbs with 1030,103 possible states in its state space, the network quickly settles down into a state cycle with a length of only 316 states, the square root of 100,000! It turns out that these K = 2 networks are also very stable. Set the 100,000 light bulbs to some random initial configuration, start up the system clock, and the network will quickly fall into an attractor basin with a period of about 316 states and it will likely stay there because even if you should perturb the network by randomly switching one of the light bulbs from “on” to “off”, it will stay in the same attractor basin and will return to its previous state cycle. So a K = 2 network is exactly what we need to form a stable autocatalytic network of chemicals with a short state cycle that explores a very small portion of an immense state space.

So here are the three regimes we previously discussed – stable, chaotic, and on the edge of chaos, simply defined by a single numerical parameter K. Start out a K = 1 network with an arbitrary pattern of “on” and “off” light bulbs, start up the system clock, and after a brief trajectory of nonrepeating patterns of blinking lights, the network quickly freezes up into a constant never changing pattern of blinking light bulbs that is dead. Start up a K = 4 network and it will quickly veer off into a seemingly never-ending state cycle and if you change just one light bulb from “on” to “off” along the way, the network will spin off into an entirely different direction never to return. A K = 4 network is totally chaotic. Finally, do the same for a K = 2 network and you will find that after a brief trajectory of patterns, the network falls into a state cycle of 316 repetitive patterns and that this state cycle of 316 patterns is stable to slight perturbations. A K = 2 network is on the edge of chaos, still stable, but with enough variety in its 316 repeating patterns to still be interesting.

The reason for the stability of a K = 2 network can easily be seen. Start out with a square grid of 100,000 light bulbs in some random pattern and start up the system clock. Initially, all the light bulbs in the network will be happily blinking in different patterns, but as the network enters into its state cycle, you will begin to see sections of the grid freeze up with the light bulbs constantly “on” and other sections of the grid with the light bulbs constantly “off”. Between these static zones, you will still see isolated islands of twinkling lights that are constantly going “on” and “off”. If you flip a light bulb from “on” to “off” in one of these static zones, it just flips back to its original state to blend in with its static neighbors. If you flip a light bulb in one of the twinkling islands, you will see the perturbation ripple through the whole island of blinking light bulbs, but the perturbation wave will not penetrate the surrounding static zones of constant “on” or “off” light bulbs, so the perturbation quickly dissipates and dies away on its own. On the other hand, for a K = 4 network, you will not see static zones of constantly “on” and “off” light bulbs form. Instead, you will see a sea of twinkling lights and if you perturb just one light bulb, the perturbation wave will ripple across the entire network, a dramatic visual display of the “butterfly effect” in action.

Anybody who has ever supported a high-volume corporate website running on a network of hundreds or thousands of servers has certainly seen similar emergent behaviors arise. A modern high-volume website is usually configured as a series of scalable tiers or layers of servers with load balancers between each tier or layer. For example, one or more load balancers might accept processing load from the Internet and pass it along to a bank of Apache webservers. The Apache webservers then pass the load onto a bank of load-balanced J2EE Appservers running Websphere, WebLogic or JBoss. The J2EE Appservers then connect to a bank of load balanced Oracle or Sybase database servers or mainframes running CICS/DB2. Each layer of the topology will be accepting incoming transactions from one side and forwarding on processed transactions to the other. So the whole network of hundreds or thousands of servers behaves like a K = 2 network because each layer only interacts with two other layers. Granted, each layer consists of a large number of load balanced servers, so in reality, maybe it is more like a K = 2.8 Boolean network. Normally, the whole network of servers just hums along with a nice K = 2 type of behavior, happily processing thousands of transactions per second to fulfill your every want and need. The network is caught in a basin of an attractor with well-behaved trajectories in state space. Where I work, we have monitoring tools that allow us to look at the actual transaction flows being processed in real time on a large number of servers as time series plots, and you can actually see the transaction flows caught in these well-behaved trajectories.

However, every so often the whole network just freezes up and transaction processing halts. This is a bad thing from an IT perspective and can lead to the loss of thousands of dollars per second of revenue. When this happens our monitors detect a problem and Middleware Operations gets paged out to investigate the problem. We then pull in Unix Operations, Network Operations, SAN Operations, Database Operations, and even the developers if necessary to a conference call hotline. About 50% of the time we do find a root cause for the problem, like a deadlocked database transaction or a batch job that ran past its allotted run window, but about 50% of the time we have no idea of what is wrong and we just start bouncing (stopping and starting) suspected software components to alleviate the problem. Anybody who has ever had their home PC spontaneously freeze up should be quite familiar with the process. Several days after the incident, we have a postmortem meeting to discuss the possible root cause of the problem, the actions that were taken during the outage, and any steps that could be taken to prevent future occurrences of the same problem or to resolve the problem in a more timely manner. These postmortem meetings can be very frustrating for me because all of the attendees only think in very reductionist terms. They are all convinced that there is ultimately some root cause responsible for every problem we encounter and that all we have to do is isolate the root cause to prevent future occurrences. Many times I have tried to explain that these unexplained freeze-ups can simply emerge on their own in a complex nonlinear network of servers on the edge of chaos. The network simply begins behaving like a frozen K = 1 Boolean net. We don’t need to have somebody drop a shovel off a landscaping truck to cause a traffic jam. In fact, in Chicago, they pop up all day long with no apparent cause.

Now we have enough ideas from complexity theory to see how life could have bootstrapped itself into existence. The phospholipid containers and autocatalytic metabolic do-loops came as “order for free” from the very nature of complex nonlinear networks of chemical agents far from thermodynamic equilibrium. Darwin’s natural selection then had something to select from, resulting in autocatalytic metabolic do-loops of ever-increasing capabilities. RNA arose next as a parasitic disease preying upon the autocatalytic metabolic do-loops and eventually formed a parasitic/symbiotic relationship with them as it domesticated their activities to produce ever more RNA. DNA then did the same thing to RNA, domesticating RNA in the form of mRNA and tRNA to produce enzymes that made ever more DNA.

But what of software? Scroll forward about 4 billion years. As DNA survival machines developed neural networks of ever-increasing size and complexity through the Darwinian mechanisms of innovation and natural selection, there came a phase transition and the neural networks spontaneously broke out into a form of abstract intelligence in Homo sapiens, in a fashion similar to the break out of the autocatalytic metabolic do-loops that got it all started in the first place. At this point, the Homo sapiens DNA survival machines began to become parasitized by a new form of self-replicating information in the form of memes. The memes hijacked the survival mechanisms evolved by DNA over billions of years, such as fear, anger, and violent behavior in order to promote their own survival. Additionally, in order to enhance their survival, the memes also learned to team up into meme-complexes, just as their DNA gene predecessors had previously learned to team up to form DNA survival machines in the form of bodies. Now being a DNA survival machine, far from thermodynamic equilibrium, means that we all need low entropy things like food and shelter, and being able to count those things would be a valuable survival technique for both DNA survival machines and the meme-complexes that infected their minds. From the Wikipedia we have:

The oldest known mathematical object is the Lebombo bone, discovered in the Lebombo mountains of Swaziland and dated to approximately 35,000 BC. It consists of 29 distinct notches deliberately cut into a baboon's fibula. There is evidence that women used counting to keep track of their menstrual cycles; 28 to 30 scratches on bone or stone, followed by a distinctive marker.

After being happily married for over 35 years, I might suggest that the markings might actually have been made by a male. Anyway, once the counting meme appeared, a mathematical meme-complex was sure to follow. A mathematical meme-complex, in combination with the commercial meme-complexes that came with civilization, would naturally seek out better ways to perform mathematical operations via a Lebombo bone, abacus, Napier’s bones, or finally Konrad Zuse’s Z3 computer that first began running software in May of 1941. So software bootstrapped itself into existence on Earth like a technological autocatalytic network from the necessity for DNA survival machines to count, and then it quickly forged parasitic/symbiotic relationships with nearly all the meme-complexes on Earth, just like its RNA and DNA predecessors. Like RNA and DNA, software quickly learned to domesticate the meme-complexes and the minds that harbored them, to produce ever-increasing amounts of software – the true hallmark of all forms of self-replicating information.

Therefore, I believe that software will rapidly arise in any intelligent alien civilization as a parasitic/symbiotic form of self-replicating information, feeding off of the mathematical meme-complexes throughout the Universe and must, therefore, be ubiquitous within our Universe. However, as I pointed out in Cybercosmology, a possible explanation for Fermi’s Paradox is that all intelligent civilizations always find themselves to be alone within the technological horizon of their universe and that the technological horizon of our Universe might be on the order of the size of a galaxy:

The Revised Weak Anthropic Principle – Intelligent beings will only find themselves in universes capable of supporting intelligent beings and will always find themselves to be alone within the technological horizon of their universe.

If this is the case, then we should value our software even more, for it may be the only software that will ever explore the Milky Way galaxy.

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Saturday, April 24, 2010

MISE in the Attic

Over the past 30 years, I have learned the hard way that some IT professionals view softwarephysics as being a little too theoretical for practical use. This is all very understandable, my mind used to go blank in lots of my physics classes in college, as I spent the whole hour busily writing down the equations that the professor chalked upon the blackboard, with little understanding at the time of what it all meant in practical terms. A tangible application of softwarephysics makes a much more interesting and compelling case, so let me relate a recent one.

Presently, I am in the IT Middleware Operations group (MidOps) for my current employer. The challenge was how could I apply softwarephysics to this non-development type of work. For the most part, my job involves installing application and infrastructure software and keeping it up and running. In MidOps we do not make the light bulbs; we just screw them in and try to keep them lit. However, early in the development of softwarephysics, I realized that all IT jobs really just boil down to one thing – pushing buttons. Now the funny thing about pushing buttons for a living is that, sadly, not much has changed in IT since I started programming in 1972. At that time, I was pushing buttons on an IBM 029 keypunch machine, a machine that was the size of an office desk, and which was not much smarter. The IBM 029 was a purely mechanical machine that only used electricity to run motors to turn gears, belts and camshafts to punch little square holes into IBM punch cards.

Figure 1 - An IBM 029 keypunch machine like the one I first learned to program on at the University of Illinois in 1972.

Figure 2 - Each card could hold a maximum of 80 bytes. Normally, one line of code was punched onto each card.

Figure 3 - The cards for a program were held together into a deck with a rubber band, or for very large programs, the deck was held in a special cardboard box that originally housed blank cards. Many times the data cards for a run followed the cards containing the source code for a program. The program was compiled and linked in two steps of the run and then the generated executable file processed the data cards that followed in the deck.

Figure 4 - To run a job, the cards in a deck were fed into a card reader, as shown on the left above, to be compiled, linked, and executed by a million-dollar mainframe computer with a clock speed of about 750 KHz and about 1 MB of memory.

Figure 5 - Now I push these very same buttons that I pushed on IBM 029 keypunch machines, the only difference is that I now push them on a $500 machine with 2 CPUs running with a clock speed of 1.8 GHz and 2 GB of memory.

Now I basically push this same set of buttons, only now I push them on a laptop that is less than 1% the size of an IBM 029, but which has a fast dual-core processor running at 1.8 GHz and 2 GB of memory, about 1,000 times the memory of the mainframes that used to process my keypunch cards back in 1972. For more commentary on the dismally slow pace of progress we have seen on the software side of IT over the past 70 years, see my posting So You Want To Be A Computer Scientist?. Anyway, to perform just about any IT job, all you have to do is push the right buttons, in the right sequence, at the right time and with zero errors. In MidOps you also have to be able to push these buttons rather quickly in tense situations during website outages, with impatient upper-level managers listening in on the conference call through the whole thing! As you can imagine, this can make an IT professional rather tense.

Figure 6 - As depicted back in 1962, George Jetson was a computer engineer in the year 2062, who had a full-time job working 3 hours a day, 3 days a week, pushing the same buttons that I have been pushing for the past 31 years as an IT professional.

But it was not supposed to be this way. As a teenager growing up in the 1960s, I was led to believe that in the 21st century, I would be leading the life of George Jetson, who first appeared on ABC-TV Sunday nights from September 23, 1962, to March 3, 1963, in 24 episodes that were later replayed for many decades. George Jetson was a computer engineer in the year 2062, who had a full-time job working 3 hours a day, 3 days a week, pushing buttons. This was three years before the IBM OS/360 was introduced in 1965, so who knew things would turn out quite differently in the 21st century? The Jetsons did get some things right, but certainly not the 9-hour IT workweek! Anyway, little did I realize back in 1962 that, like George Jetson, I would be spending most of my adult life just pushing buttons for a living!

Now, why is pushing buttons for a living so hard? Suppose you are paged into a website outage conference call. In order to resolve the problem, I am going to let you push a maximum of 1,000 buttons. This includes pressing the buttons to find the necessary support documents, logging into a large number of servers, looking at many log files, running diagnostics and health checks, and finally punching in the necessary Unix commands to resolve the problem. Now 1,000 buttons might seem like a lot, but it really is not. This posting itself comes to pushing 18,736 buttons in the right sequence. There are 90 buttons on my laptop, so I can push 1,000 buttons in 901,000 different ways. That comes to:

1.75 x 101954 = 175 with 1952 zeroes behind it!

Remember, as an IT professional, all you have to do is to quickly push the right buttons, in the right sequence, at the right time and with zero errors. How hard can that be? But as I pointed out in Entropy - the Bane of Programmers and The Demon of Software, it is very difficult indeed, and the problem lies with the second law of thermodynamics. There are only a very few sequences of button pushes in the vast number of possible button pushes that will actually get the job done properly, and the odds of you doing that are quite small indeed. Worse yet, in Software Chaos I showed that pushing just one button in the sequence incorrectly can lead to catastrophic results. Now the right sequence of button pushes already exists, all you have to do is find it and execute it perfectly! As we saw in The Demon of Software, in order to accomplish this, we have to turn some unknown information, called entropy, into known information that we can use, and the only way we can do that is to turn an ordered form of energy into the disordered form of energy we call heat. Some of this heat generation will take place in your brain as you think through the problem. A programmer on a 2400 calorie diet (2400 kcal/day) produces about 100 watts of heat sitting at her desk and about 20 – 30 watts of that heat comes from her brain. The remainder of this heat generation will come from pushing the buttons themselves. This puts us in a bit of a bind. The second law of thermodynamics states that it is impossible to turn unknown information, entropy, into useable known information without an accompanying increase in entropy someplace else in the Universe because the total amount of entropy in the Universe must always increase whenever a change is made. So we are forced to extract the correct sequence of button pushes from the vast number of possible button pushes by dumping some entropy into heat as we degrade the high-grade chemical energy in our brains and fingers into heat energy. However, there is another possibility open to us. Why not let the computers dump some high-grade electrical energy into heat energy instead? Why not let the computers push most of the buttons for us?

That is the purpose of the Middleware Integrated Support Environment – MISE ( pronounced like “Mice”). In How to Think Like a Softwarephysicist, I explained how I use a great deal of Unix aliases and Korn shell scripts and Perl programs to do my job. The problem is that over the years I built up a large number of these utilities and I was having a hard time locating the proper ones to use in tough situations when I was under a lot of pressure to perform quickly. Also, it was hard for the other members of MidOps to use this software because they had no way of knowing what aliases were available or what they did. Since the first step in troubleshooting a website problem is to get your hands on the required information, the first thing I did was to include a brief comment about each Unix alias by adding an echo of what the alias did. This killed two birds with one stone. First, the aliases would now display what they were doing when executed, and it also made it easier to find the aliases via the strings that were echoed out. Again, for security purposes, I will pretend that MISE is installed at the mythical UnitedAmoco corporation in support of their www.unitedamoco.com website. So at UnitedAmoco, I could set the following MISE aliases:

alias apc="echo 'cd to the Apache configurations directory';cd /opt/apache/VER302/configs; ls"
alias apcon="echo 'cd to the Apache static content directory';cd /www/content; ls -l"
alias aps="echo 'cd to the Apache servers directory';cd /opt/apache/VER302/servers; ls -l"
alias apb="echo 'cd to the Apache Start/Stop scripts directory';cd /opt/apache/VER302/all_scripts; ls"
alias apl="echo 'cd to the Apache log files for today';cd /www/logs; ls -l | grep $day"
alias vs="echo 'cd to the Visual Sciences Start directory';cd /opt/apache/VER310/visualsciences/; ls -l"

Now when I used my “a” script to look for aliases, I could do so by feeding it the strings that I was interested in:

chit23l1[/home/zscj03]> a apache

apb='echo '\''cd to the Apache Start/Stop scripts directory'\'';cd /apps/apache/scripts; ls'
apc='echo '\''cd to the Apache servers directory'\'';cd /apps/apache/conf; ls -l'
apcon='echo '\''cd to the Apache static content directory'\'';cd /www/content; ls -l'
apl='echo '\''cd to the Apache log files for today'\'';cd /apps/apache/logs; ls -l | grep '\''May 02'\'
aps='echo '\''cd to the Apache servers directory'\'';cd /apps/apache/conf; ls -l'
vs='echo '\''cd to the Visual Sciences Start directory'\'';cd /opt/apache/VER310/visualsciences/; ls -l'

I also modified my “a” script to look for multiple strings to narrow the searches:

chit23l1[/home/zscj03]> a apache log

apl='echo '\''cd to the Apache log files for today'\'';cd /apps/apache/logs; ls -l | grep '\''May 02'\'

Many of the MISE aliases are used to login to the 300+ servers that MidOps supports. MidOps is a bit of a misnomer. MidOps actually supports nearly all of the infrastructure software that lies upon the Unix operating systems of our servers, which includes WebSphere, Apache, JBoss, Tomcat, ColdFusion, MQ, DB2Connect, CTG, and many third-party applications purchased from outside. As you can imagine, it is rather hard to just keep track of all those servers and what they do! So I modified all the aliases that are used to login to a server by including the string “Login” for each. That made it very easy to separate the login aliases from the aliases that did other things. For example, MISE sets the following aliases for a group of Apache webservers:

alias ra1="echo 'Login to EXT CH Prod Apache server1';ssh rchi11l1.ext.unitedamoco.com" #EXT
alias ra2="echo 'Login to EXT CH Prod Apache server2';ssh rchi12l1.ext.unitedamoco.com" #EXT
alias ra3="echo 'Login to EXT CH Prod Apache server3';ssh rchi13l1.ext.unitedamoco.com" #EXT
alias ra4="echo 'Login to EXT CH Prod Apache server4';ssh rchi14l1.ext.unitedamoco.com" #EXT

Now I can find the login aliases for a specific group of Apache webservers using the MISE “al” alias:

chit23l1[/home/zscj03]> al ext ch prod

ra1='echo '\''Login to EXT CH Prod Apache server1'\'';ssh rchi11l1.ext.unitedamoco.com'
ra2='echo '\''Login to EXT CH Prod Apache server2'\'';ssh rchi12l1.ext.unitedamoco.com'
ra3='echo '\''Login to EXT CH Prod Apache server3'\'';ssh rchi13l1.ext.unitedamoco.com'
ra4='echo '\''Login to EXT CH Prod Apache server4'\'';ssh rchi14l1.ext.unitedamoco.com'

MISE beats the second law of thermodynamics in two ways. First it lets you quickly find the correct alias to use, and secondly, by typing in the alias or better yet, doing a Copy/Paste of the alias, it reduces the errors associated with typing in long strings of commands. This also saves valuable time during an outage, when you might have 20 windows open to various servers and need to do many things all at the same time.

For Korn shell scripts and Perl programs, just set an alias to them with the same name. Then include an echo that tells the user what the Korn shell script or Perl program does:

alias lds="echo 'List WAS Datasources in a Cell - run on any node in the Cell';/home/zscj03/bin/lds"

So whenever I find myself doing repetitive button pushing operations, I just create an alias, Korn shell script, or Perl program to perform the same operation. I now have 690 aliases that I use on a regular basis. I also have software that lets me quickly login to the 300+ servers that MidOps supports and push new MISE code to them. I can do a code push in less than 2 minutes, so I can easily do several code pushes each day with little manpower. The MISE “mim” alias points the user to an online MISE Manual that is just a .txt file that I can easily distribute in the same manner.

One of the problems we have in MidOps is the enormity of the infrastructure. We have a large number of WebSphere Cells, and each WebSphere Cell can contain 4-5 servers or nodes, and each node can have hundreds of log files constantly spewing out messages. How can you possibly look at all those log files at the same time during an outage? So many of the MISE aliases are concerned with listing the ends of log files or looking for specific strings in the ends of log files. From a single server, it is possible to run a MISE alias that logs into each of the five servers in a WebSphere Cell and lists a specified number of lines in all the log files or looks for a string in the last lines of all the log files. For example:

rlal 50

would list the last 50 lines in all the application log files on five different WebSphere nodes. Similarly,

rlsys 1000 “ERROR – Exception”

would look for the string “ERROR – Exception” in the last 1000 lines of all the WebSphere SystemOut.log files on the same five servers.

As I have pointed out in numerous postings, the IT meme-complex is an extraordinarily conservative meme-complex that is very resistant to new memes or ideas, and I believe this resistance to new ideas helps to explain the glacial pace of software evolution over the past 70 years, compared to the great strides that have occurred with the evolution of hardware over this same period. Many of the software approaches that we are just stumbling upon today could have been done back in the 1960s if we had only adopted a biological approach to software from the start. So some very conservative IT professionals might object that MISE will cause MidOps to forget how to do things manually! For such individuals, the slow but sure manual approach of pushing lots of buttons is preferred. Pushing lots of buttons manually is certainly slow, but is it also “sure”? Again, I would suggest that such conservative thinking stems from the hazards of IT common sense, while MISE is a product of softwarephysics and its very useful effective theories of software behavior. In IT we are in a constant battle with the second law of thermodynamics and nonlinearity. As I pointed out in SoftwareBiology, living things face these same challenges. Instead of pushing lots of buttons, living things must arrange lots of simple atoms into complex organic molecules, and they must do so with nearly zero defects or catastrophic events will ensue. To do this, living things use many complex biochemical pathways to break down large organic molecules into smaller molecules called monomers, and then they use other biochemical pathways to reassemble these same monomers back into other large organic molecules required for the functions of life. Think of the monomers as “bricks” that can be recycled from an old brick building to later be re-laid into a new pattern for a new brick building. This happens every time you eat something. These biochemical pathways are billions of years old and many are shared by nearly all living things because they are time-tested processes that work!

So living things do not code on the fly - that is far too risky. Similarly, Unix is a very powerful operating system that can do fantastic things by stringing together a few simple Unix commands into a disposable one-time-only program that can be run a single time on the fly to do things, but I cringe whenever I see IT professionals perform such tricks while using production IDs that can easily erase all the installed Applications on a server and WebSphere itself with a single command! I have been using many of the Korn shell scripts and Perl programs called by the MISE aliases for 15 – 20 years, so they are a safe and effective alternative to the risky business of pushing lots of buttons on the fly during tense situations when disastrous mistakes can easily be made. Softwarephysics contends that it is much safer to use well-tested software to push lots of buttons, rather than having error-prone human beings do so on the fly. That alone would be a good enough reason to use MISE, beyond the fact that many times MISE lets you push buttons 10,000 times faster than any error-prone human can.

I hope this provides a simple example of how softwarephysics can be used in an IT Operations setting. Many times IT professionals are like the shoemaker’s children; we are so busy pushing buttons for other people that we have little time to push some buttons for ourselves. But a simple tool like MISE can have a huge payoff in that pushing two or three buttons can effectively do the same work as pushing a million buttons, and all this can be done with just a few lines of Korn shell or Perl code called by an alias or with simple aliases themselves. For example here is a very simple one:

alias e=exit

With that alias, you can just push the “e” button to exit a Unix session. How many times have you pushed four buttons instead? Just start spending a few minutes each day working on some software for yourself, and you won’t impact any of your projects. Plus, as your library of productivity software grows, you will find there will be more minutes available for such work. Also, try to share your tools with the members of your team and be sure to see what other members of your team have come up with too. Several MISE aliases point to Korn shell scripts and Perl programs that were developed by other people at my company, some of which have already departed. It would have been a shame if that software had left with them.

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston

Friday, February 19, 2010

MoneyPhysics Revisited

It has been a little over 20 months since my original posting on MoneyPhysics first appeared and given the current strident national debate over what has ensued since September of 2008; it might be an appropriate time for a brief review of where we stand financially as a nation. Again, my original intention for MoneyPhysics was to demonstrate the value in having a good set of effective theories for the behavior of the virtual substance we call money, in order to make the case for a good set of effective theories for the virtual substance we call software. One of the telling characteristics of a good effective theory is its ability to make valid predictions of future events, in addition to simply explaining the currently observed state of affairs, and I am glad to see that all the predictions I laid down in MoneyPhysics have come to pass.

1. We would not have another Great Depression.

2. Wall Street would continue to insist on being extremely overpaid, even for their nearly ruinous performance in 2008.

3. Wall Street would vehemently resist reforms and regulations to prevent another financial meltdown.

The good news is that the effective theories of Milton Friedman and John Maynard Keynes were successfully used to avert another Great Depression. Friedman’s monetarism was used to keep the money supply from crashing by propping up and bailing out the banking system, and Keynesian economic theory was used to keep aggregate spending levels up via the 2009 $787 billion stimulus package. Despite the fact that we successfully averted the decade-long financial disaster that my parents suffered through as children in the 1930s, most Americans seem to be extremely displeased, I suspect because they have no understanding of the magnitude of the disaster that was averted, and are only aware of the inequities created by my last two predictions. Personally, I find the last 20 months to truly be a triumph of economic theory. Through rational thought and actions, we were able to avert a financial disaster through the application of good effective theories for the behavior of the virtual substance we call money. It certainly warms the heart of an 18th-century liberal and 20th-century conservative to see the fruits of the18th century Enlightenment put to such good use.

However, there presently is a great deal of controversy within the country and within Congress as to how to proceed with the necessary financial reform and regulation required to address my two last predictions. The current administration is proposing something along these lines:

1. Limit the capital size of banks. Currently, there are 6 banks that control 70% of deposits and another 10,000 banks that control the remaining 30% of deposits. The cap limit would prevent banks from becoming too large to fail.

2. Limit the amount of leverage. Recall that leverage is borrowing money to invest in financial instruments that you hope have a higher rate of return than the interest you pay on the loans used to finance your investments. Recall that Lehman Brothers ended up running up a leverage of 30:1 before it went bankrupt because it was so overleveraged in mortgaged-backed securities (MBSs) and collateralized debt obligations (CDOs) when the housing bubble burst. There are proposals to limit leverage to a maximum level of 15:1, meaning that for each $1 that an institution owns on its own, it can borrow no more than $15 to invest in financial instruments – still a very high level of leverage.

3. When a financial institution does take on great risks that do lead to insolvency, the following actions are taken by the government when the institution fails:

A. The CEO and top-tier of management are fired.

B. The board of directors is fired.

C. The stock of the institution is dissolved and the stockholders lose all their money.

D. The bonds issued by the institution are defaulted upon and the bondholders lose all their money.

E. The institution is put into receivership for dissolution. The institution is broken down into smaller pieces which are then sold off. This would adversely impact the career paths and fortunes of the institution’s lower-level management.

4. Set up a $50 billion bailout fund that is funded by the banking system to be used to bailout institutions that do fail, so that the U.S. government never again has to bail out financial institutions as it did in 2008.

The basic idea is to once again have Wall Street live up to its fiduciary responsibilities as caretakers of the U.S. money supply by punishing individuals who would foment another financial meltdown, rather than rewarding them for their reckless actions as we were forced to do in 2008. The hope is that the above measures would deter reckless behavior and allow for the dissolution of rogue financial institutions in a responsible manner. There is nothing radical about this effort; it is all covered under Section 8 of Article I of the U.S. Constitution which calls upon Congress:

To regulate commerce with foreign nations, and among the several states, and with the Indian tribes;

To establish a uniform rule of naturalization and uniform laws on the subject of bankruptcies throughout the United States;

To coin money, regulate the value thereof, and of foreign coin, and fix the standard of weights and measures;

To provide for the punishment of counterfeiting the securities and current coin of the United States;


Now the U.S. currency in circulation is only about 10% of the M2 indicator of the U.S. money supply (currency + savings deposits + money market deposits + CDs), so 90% of the U.S. money supply is really just a large number of bits floating around in cyberspacetime, much of it under the control of Wall Street, so it indeed is the responsibility of the U.S. government to step in and secure the U.S. money supply.

Now some members of Congress are opposed to these measures because they contend that the $50 billion bailout fund would promote risky behavior and an ongoing series of continuous bailouts into the far distant future. Obviously, these members of Congress have never been fired or lost all of their money in a financial investment! These measures would surely work because the Powers That Be of Wall Street would certainly act in their own best interest and would not get us into another predicament that would also lead to their own financial ruin. I doubt that the $50 billion bailout fund would ever be touched.

Some, outside of the current administration, are also calling for the breakup of the large investment banks, in keeping with the 1911 breakup of the Standard Oil Trust under the Sherman Antitrust Act of 1890. My former employer, Amoco, emerged out of this breakup as Standard Oil of Indiana. There is an interesting story that goes along with this breakup. John Burton was Standard’s first chemist, who rose to become the general manager of manufacturing of the Standard Oil Trust in 1909. At the time, gasoline was a by-product of the manufacture of kerosene, used for lighting kerosene lanterns. But Burton was convinced that Henry Ford’s Model-T was about to change the petroleum industry forever and that producing more gasoline from each barrel of crude oil was essential. In those days, crude oil was simply heated in a distillation tower and whatever was already in the crude oil was simply distilled off as a fraction of the incoming crude oil. In naturally occurring crude oil, gasoline only represents about 15% of the total volume, so you cannot get very much gasoline from crude oil with simple distillation. Burton hired Robert M. Humphreys, Francis M. Rogers and others from Johns Hopkins University to conduct research at the Whiting Refinery in Indiana, which still produces a large percentage of BP’s American output of gasoline. Over a 16 month period, this team conducted many experiments and finally discovered that by heating crude oil to 850 0F at a pressure of 75 pounds per square inch, they could get the long hydrocarbon molecules in crude oil to break down into the shorter hydrocarbon molecules of gasoline. Today this is called thermal cracking, and what it did was to boost the amount of gasoline obtainable from crude oil from 15% to 30%. Burton went to the board of directors of the Standard Oil Trust with this monumental discovery, but they thought he was nuts. This was 10 years before the invention of electric welding, so Burton’s stills were composed of riveted steel containers containing flammable hydrocarbons heated to 850 0F at a pressure of 75 pounds per square inch! The board thought that he would blow up the Whiting Refinery and voted his idea down. Besides, the Standard Oil Trust controlled about 90% of the oil industry at the time and had little fear of outside competitors adopting Burton’s crazy idea. All that changed in 1911 when the Standard Oil Trust was broken up by Teddy Roosevelt into 30 smaller companies. Burton went back to the newly formed board of directors of Standard Oil of Indiana in 1911 and was able to obtain their support to build thermal cracking units at the Whiting Refinery. The rest is history. In a similar manner, busting up the large investment banks of Wall Street might lead to lower Wall Street salaries and consequently less expensive IPOs and cheaper stock and bond issuances.

All of the above seems to make sense to me as an 18th-century liberal and 20th-century conservative – something sensible that President Eisenhower might have come up within the same situation. Yet, there seems to be such open hostility in the country, with little rational thought. As I have mentioned in the past, I think that many people seem to have such a hard go of it because they have such incredibly poor models of how the physical Universe actually operates. They have no user manual and are forced to rely upon the hazards of common sense. Personally, at this point in my life I only seem to have confidence in science and mathematics, and so I try to use them in all aspects of my life, including those that deal with the “real world” of human affairs. If we go back to The Fundamental Problem of Everything and Self-Replicating Information, we recall that the “real world” of human affairs is largely concerned with the eccentricities of self-replicating information in the form of the interplay between genes, memes, and software. Like all living things, we are DNA survival machines, far from thermodynamic equilibrium, with minds infected by meme-complexes that in turn are rapidly being domesticated by software. The meme-complexes began domesticating our minds about 200,000 years ago, and only in the past few decades software has begun to do so as well. Now, this is not necessarily a bad thing. The domestication of our minds by meme-complexes has given us art, music, literature, moral philosophy, science, and mathematics and our domestication by software has enhanced all of these fine things too. But we also need to be aware that the genes, memes, and software are just mindless forms of self-replicating information that are not necessarily working in our best interests, and that certainly seems to be the case in today’s divisive national climate. Some very strange meme-complexes seem to be running around wild in the national psyche. Throughout history, mankind has been parasitized by some truly horrible meme-complexes, so it is always important to remain on guard by keeping an open mind and realizing that the memes in a meme-complex that you might subscribe to are only approximations of reality and not reality itself. It is important to remain engaged in a civil manner with those holding differing views if we are to succeed as a nation.

So here is my take on the situation – just a working hypothesis that I know is only an approximation of reality. To begin with, let’s go back to the basic physics of it all. Because we are DNA survival machines, far from thermodynamic equilibrium, we need low entropy things like food and shelter to exist. In order to make low entropy things, like a car, ham sandwich or a piece of debugged software, we need matter, energy, and information. As you know, we can always use low entropy energy and information to transform matter into a state of lower entropy useful to mankind, like turning a pile of rust into a car, through a set of processes that dump entropy into heat, in keeping with the second law of thermodynamics. We call this activity an economic system. Actually, the biosphere has been doing this for about 4,000 million years on this planet, so in a sense, all economic systems are simply extensions of the biochemical activities of the biosphere. However, this has always been a hard thing to achieve because we are in a constant battle with the second law of thermodynamics, which tries to do just the opposite, like turning cars into piles of rust. The second law always turns low entropy matter, energy, and information into high entropy matter, energy, and unknown information. Recall that in The Demon of Software we saw how entropy itself can be viewed as a measure of disorder or unknown information that we call ignorance. As I pointed out in SoftwareBiology, the way that the biosphere and all economic systems manage to do this is through the Darwinian mechanisms of innovation and natural selection that yield the famous “survival of the fittest”. This is most evident in a capitalistic economic system, where businesses innovate and compete against one another, but is also found in feudalism, socialism, communism, and all the other economic systems. The only difference being that in non-capitalistic economic systems the “survival of the fittest” does not necessarily select for successful business activities, but more likely for individuals who succeed at working the system, and that is why other economic systems have historically yielded such very low levels of economic output because they stifled the initiative of the individual.

Sadly, despite the advances brought on by the 18th century Enlightenment, from which the government of the United States was spawn, there seems today to be afloat a very strident anti-government meme-complex running rampant throughout the country. It seems this meme-complex would have us return to the days of limited government, so limited that it might not even exist at all. This meme-complex would have us simply solve all problems through the free enterprise system of free markets, with no need of government interference whatsoever, and would forgo the regulation of the financial systems of Wall Street altogether. However, this meme-complex fails to recognize that all economic systems are really based upon domesticated versions of the Darwinian concept of “survival of the fittest”, and this includes modern capitalism, which actually benefits from government regulation. Without any government regulation at all, it would be quite permissible to enter a bank with an AK-47 to make a $100,000 withdrawal. After all, why should the government interfere with a private financial transaction between two parties? History has repeatedly shown us that, when carried to the extreme of a society with no government regulation at all, the Powers That Be of Wall Street would be rapidly replaced by an assortment of potential warlords lurking in our prison systems.

So it all boils down to a matter of degree. To what degree should capitalism be domesticated by government? The anti-government meme-complex would severely limit the level of domestication in the belief that a totally unfettered marketplace always leads to the optimal solution of all economic problems. But this is not always the case as Richard Dawkins pointed out in The Greatest Show on Earth (2010). Why are trees 100 feet tall instead of 10 feet tall? It takes a lot of mass and energy to build a 100-foot trunk to hold the leaves that gather sunlight. A 10-foot trunk with widely spreading branches would do the job just as well, and a 100-foot trunk is made mostly of cellulose, a tough substance that not even termites can digest – the bacteria in their guts do that for them. The reason that trees are 100 feet tall is that they grow in forests and compete for sunlight with other trees. A 10-foot tall tree species in a forest would be quickly shaded into extinction. So trees grow as tall as possible until other factors enter into the calculation of survival and limit their growth. A 1,000-foot tree would have no competitors at all until it blew over in a gentle breeze. So a forest does indeed work, Darwinian “survival of the fittest” guarantees at least that much, but it clearly is not the most efficient way of collecting sunlight. About 10,000 years ago we learned that by cutting down the trees and planting the exposed ground with domesticated seeds, we could dramatically boost the economic productivity of the biosphere by artificially changing the rules under which “survival of the fittest” operated. Similarly, over the past 100 years, we have done the same thing with the rules under which capitalism operates, in a manner to allow capitalism to work its miracles in a manner useful to mankind. But capitalism needs a reliable money supply to do that, and only the government can provide it – that’s why they put it into the Constitution!

Comments are welcome at scj333@sbcglobal.net

To see all posts on softwarephysics in reverse order go to:
https://softwarephysics.blogspot.com/

Regards,
Steve Johnston