donderdag 30 juli 2009

SoftwarePhysics

FRIDAY, OCTOBER 31, 2008

How to Think Like a Softwarephysicist

In this posting I would like to sum up softwarephysics and explain how you can use it in your daily activities as an IT professional.

The Basic Idea of Softwarephysics
In softwarephysics I have tried to imagine what a physicist would do if he were suddenly transported to another universe with similar, but slightly different, physical laws than the physical Universe we are all used to. This is essentially what happened to me in 1979, when I switched careers from being an exploration geophysicist, exploring for oil in the Gulf of Suez with Amoco, to being a professional IT person supporting Amoco’s production geophysical software. One very scary Monday morning, I suddenly found myself surrounded by all these strange IT people scurrying about in a controlled state of panic, like the characters in Alice in Wonderland. This was a totally alien terrain for me. Granted, I had been programming geophysical models for oil companies since taking a FORTRAN class back in 1972, but that was the full extent of my academic credentials in computer science. Fortunately, back in 1979 most of the other IT professionals I came across were also refugees from the physical sciences, engineering, mathematics, or accounting, but there was also a disturbing influx of young computer science graduates from the recently formed computer science departments of the major universities within the United States. Being totally lost in this new career, I naturally gravitated back to the physics, chemistry, biology, and geology that had served me so well in my previous career. I figured if you could apply physics to geology; why not apply physics to software? So like the Gulf of Suez exploration team at Amoco that I had just left, consisting of geologists, geophysicists, paleontologists, geochemists, and petrophysicists, I decided to take all the physics, chemistry, biology, and geology that I could muster and throw it at the problem of software, in order to help me cope with the daily mayhem of life in IT, by viewing software as a virtual substance whose behavior could be modeled, but not fully understood at the deepest levels. Again, softwarephysics is just an effective theory of software behavior that only makes valid predictions over a limited range of IT conditions and only provides a limited insight into the true nature of software. So in softwarephysics we adopt a very positivistic point of view, in that we do not care what software “really” is, we only care about how software appears to behave, with the intended goal of developing models that reproduce and predict software behavior. In all of my previous postings on softwarephysics, I have tried to illustrate this evolutionary change in the way people approach physics and the other physical sciences. In the 17th, 18th, and 19th centuries physicists mistakenly thought that they were actually discovering the fundamental laws of the Universe, which they thought were based upon real tangible things like particles, waves, and fields. According to Newton, light was a stream of particles, for Maxwell it was an electromagnetic wave, and for Einstein it was both. Now with QED, we think of light as a probability wave that simultaneously follows all possible paths as you observe your image in a mirror. Somehow, each photon seems to instantly perform an infinite number of calculations to determine where and how it will ultimately end its journey. So by the end of the 20th century, most of physics had dissolved into pure mathematics and worse yet, we now realize that all these theories and models are just approximations of reality, if reality even exists. In a similar manner, in softwarephysics I have tried to pattern software behavior after the very successful effective theories of physics, most notably thermodynamics, statistical mechanics, the general theory of relativity, and quantum mechanics. But always keep in mind that that these models are just approximations of software behavior. Do not fall into the same trap that the early physicists did, by confusing models of software behavior with what software “really” is. In fact, nobody “really” knows what software is because if you keep digging deeper you eventually cross over to the hardware upon which the software runs, and then you get into real trouble – just ask any physicist, because nobody “really” knows what the hardware is made of.

In The Fundamental Problem of Software, I laid down the three laws of software mayhem:

1. The second law of thermodynamics tends to introduce small bugs into software that are never detected through testing.

2. Because software is inherently nonlinear these small bugs cause general havoc when they reach production.

3. But even software that is absolutely bug-fee can reach a critical tipping point and cross over from linear to nonlinear behavior, with disastrous and unpredictable results, as the load on software is increased.

So as an IT professional, you have two major pitfalls to avoid – the second law of thermodynamics and nonlinearity. InEntropy – the Bane of Programmers, I described how software can be viewed macroscopically as the functions the software performs, the speed with which those functions are performed, and the stability and reliability of its performance. In The Demon of Software, I also showed how software could also be viewed microscopically, as a large number of characters in a huge number of possible microstates, or versions, and in both of these postings, I showed how the entropy, or disorder, of software tends to increase and its internal information content decrease whenever a change is made because of the second law of thermodynamics – there simply are far more “buggy” versions, or microstates, of a piece of software, than there are correct versions, or microstates, of a piece of software. InSoftwareChemistry, I carried this further by describing a model which depicted software as series of interacting organic molecules (lines of code) consisting of atoms (characters), each of which can be in one of 256 quantum ASCII states. In this model, each character or atom in a line of code is defined by 8 bits or electrons in a spin up ↑ or spin down ↓ state. In SoftwareBiology, I described how living things are faced with exactly the same problem as programmers, in that they must assemble complex organic molecules from individual atoms with very low error rates in order to perform the functions of life in a Universe dominated by the second law of thermodynamics. And inSoftware Chaos, I showed how both living things and software must also contend with the effects of existing in a nonlinear Universe, where very small changes to these organic molecules or lines of code create dramatic and unpredictable results. In Self-Replicating Information, I showed how both software and living things are forms of self-replicating information, and that is why there are so many similarities between biology and IT. So as IT professionals, there is much we can learn from the survival strategies that living things have developed over the past 4 billion years to overcome the second law of thermodynamics and nonlinearity.

Keep an Open Mind and Learn From the Other Sciences
The first thing you need to do is open your mind and learn from the other sciences. In my opinion, computer science is a very isolated science indeed, much more so than the other sciences, which also suffer from this malady. Indeed, inbred thinking is a dire threat faced by all the sciences, which severely limits the pace with which they can make progress. In Self-Replicating Information and the The Fundamental Problem of Everything, I tried to describe how the very conservative nature of meme-complexes severely restricts the adoption of new ideas, or memes, into a meme-complex. To some extent, this is a good survival strategy for a meme-complex, so that it does not pick up mutant memes of a dubious nature, but it seems that nearly all meme-complexes, and especially IT, take this conservative position to an extreme, and that prevents them from making valuable progress. Yes, there is always a risk in adopting a new idea, or meme, and that is why meme-complexes are so conservative. But there is also a risk in not adopting, or at least examining, a new idea or meme too. So the first thing you need to do as a softwarephysicst is to keep an open mind to new ideas from the other sciences beyond what you were taught in computer science classes. Do not fall into the “But we do not think about IT problems like that” trap, without at least thinking the whole thing through. Perhaps the source of all your problems has been precisely because you have not thought about IT problems in those terms!

Google and the Wikipedia are great ways to brush up on your general scientific knowledge. Another thing I like to do is to read the many popular books written by some of the greatest scientists in the world today. I read about one of these books each week. These scientists invested a great deal of their valuable time in writing these books, that could have easily been put to other uses, to help us all gain a better understanding of the Universe, and they certainly did not do it for the money! Finally, I like to visit the district library of my township to check out very heavy 800 page college textbooks on subjects like chemistry, organic chemistry, biochemistry, astronomy, cosmology, geology, molecular biology, cell biology, and the like. When reading these textbooks, I just read through the entire volume, skipping over all the chapter problem sets and not worrying about exams in the least. I really loved the university life of my youth, but being an old man free from the pressures of problem sets and exams, allows me to focus on the essence of the subject matter at hand, and unlike most university courses which only cover perhaps 30% of the volume, I can read the entire textbook at my own leisurely pace. As I said before, I frequently have thoughts of going back to my old physics department to change the plaque hanging on the department wall to read: “I can do the problems; I just don’t understand the material!”.

Use Softwarephysics as Your Secret Weapon
Next, if you are young and upwardly mobile, I would recommend keeping softwarephysics to yourself for your own personal use. As I originally explained in SoftwarePhysics, I decided to wait 25 years until the year 2004, before attempting to approach the IT community with softwarephysics a second time. My hope was that by 2004, the IT and computer science communities would have matured to the point where softwarephysics might be more favorably accepted than it was back in the 1980s. But I did not take into consideration the dramatic deterioration of the scientific curiosity and literacy of the American public over this same 25 year period. Indeed, I have found the marketing of softwarephysics in the 21st century to be even more difficult than it was back in the early 1980s, when most IT professionals came from a background in the physical sciences or mathematics. The formation of a very conservative computer science meme-complex in the 1980s, with its own set of accepted and legitimate ideas that preclude all others, did not help either. So I continue to be frustrated by strange looks whenever I try to explain to my fellow IT colleagues why they are being tormented so by software and how to avoid some of the pitfalls. I am 57 years old, on a glide path to retirement, happy where I am, and with very little to lose in a compassionately frozen career path, but if you are young and on the way up, spouting ideas about softwarephysics in meetings will definitely not enhance your upward mobility – believe me I was once young too. But you can still secretly use the concepts from softwarephysics to steer yourself clear of many of the pitfalls of IT, and that will definitely bode well for your career. So use softwarephysics as your secret weapon in tight situations, when you have to quickly make tough IT decisions. Your fellow IT colleagues will be trying to get by on IT common sense, and I have showed you how unreliable common sense can be in the Universe we live in. So to quote Rudyard Kipling - ”If you can keep your head when all about you are losing theirs”, you are obviously unaware of the situation, or perhaps, you are secretly using softwarephysics to get yourself through it all.

Take a Biological Approach to Software
In SoftwareBiology and Self-Replicating Information, we saw that software is a form of self-replicating information that has entered into a parasitic/symbiotic relationship with the business your IT efforts support. The business provides a substantial IT budget for the care and feeding of software and also for the promotion of its replication, and in return, the software allows the business to conduct its business processes and operations. Smart businesses view this as a symbiotic relationship, while less agile businesses view software in a more parasitic manner. For example, I was in the IT department of Amoco for more than 22 years, and at Amoco, IT was definitely viewed as a parasitic cost - just a necessary evil to its core business of finding, producing, refining, and marketing oil. On the other hand, my current employer, the best company I have ever worked for, views software completely differently. My current employer is in the financial industry, and since the only thing this business does is to store and process information, IT is core to its business processes and is viewed as a means of gaining competitive advantage. On the other hand, there is Amoco, the last of the mighty Standard Oil Trust companies to still use the infamous Standard Oil Torch and Oval emblem, but which is no longer with us, having finally managed to achieve its lifelong ambition of reducing its IT budget to $0.

In SoftwareBiology, we saw that as an IT professional, you are the equivalent of a software enzyme, greasing the wheels for the care and feeding of the software upon which your business runs. But the problem has been that over the past 70 years, we have not learned to be very effective software enzymes. The good news is that you can drastically improve your IT competence and productivity by adopting the same survival strategies that living things have discovered through 4 billion years of innovation and natural selection to overcome the second law of thermodynamics and nonlinearity. That will be the emphasis for the remainder of this posting.

Do Not Fight the Second Law of Thermodynamics
The second law of thermodynamics is really just a scientific restatement of Murphy’s Law – if it can go wrong, it will go wrong. The second law guarantees that all systems will naturally seek a level of maximum entropy, or disorder, minimum information content, and minimum free energy. In my day-to-day activities, I constantly see my fellow IT professionals taunt the second law of thermodynamics with abandon, like poking a sleeping bear with a sharp stick, only to see them gobbled up in the end. Living things on the other hand, do not fight the second law of thermodynamics, but use it instead to fashion the structures out of which they are made. In SoftwareBiology, we saw how living things compartmentalize things by surrounding them with membranes. This includes the external cell membrane itself, which is used to isolate the innards of cells from their external environment, like object instances in the memory of a computer, but also to surround the organelles within, like their mitochondria and chloroplasts, to isolate functions like the methods of an object instance. We saw that these very useful membranes are constructed by simply letting phospholipids form a bilayer which minimizes the free energy of the phospholipid molecules, like a ball rolling down a hill.

Thus, living cells use the second law of thermodynamics to construct these very useful cell membranes one molecule at time, with no construction crew on the payroll. In addition, they embed protein receptors into the phospholipid bilayer of the cell membrane in order to communicate with the outside world. Molecules called ligands that are secreted by other cells can plug into the socket of a receptor protein embedded in the phospholipid bilayer of a cell membrane, causing the protein to change shape as it minimizes its free energy. This shape change of a receptor protein then causes other internal cellular molecules to take actions. The receptor protein itself results from amino acids being strung together into a polypeptide chain by the transcription of a DNA gene into a protein via mRNA, tRNA, and ribosomes. Once the polypeptide chain of amino acids forms, it naturally folds itself up into a complex 3-dimensional structure by minimizing its free energy too.

+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++@+++@++++++++++++++++++++++++++++
+++++++++++++++++++++@@@++++++++++++++++++++++++++++
OOOOOOOOOOOOOOOO@@@@OOOOOOOOOOOOOOOOOOOOOOOO
||||||||||||||||||||||||||||||||||||@@@@@||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||||||@@@@@||||||||||||||||||||||||||||||||||||||||||||||||
OOOOOOOOOOOOOOOO@@@@@OOOOOOOOOOOOOOOOOOOOOOO
++++++++++++++++++++@@@@++++++++++++++++++++++++++++
++++++++++++++++++++@@@@++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++


There is much to learn from this ingenious strategy from an IT perspective. IT professionals normally are in a constant battle with the second law of thermodynamics and we normally take it on in a deadly frontal assault, which gives the second law all the advantages, as it happily machine guns us down from a protected position. As you can see, living things use more of a guerrilla warfare approach to the second law, by sneaking behind the lines and tricking the second law into firing on its own troops. Instead of turning cars into piles of rust, the second law suddenly finds itself constructing beautiful and intricate structures from simple molecules!

One way for IT professionals to trick the second law is to always use templates, like the DNA, mRNA, and tRNA templates used in protein synthesis. My description of BSDE – the Bionic Systems Development Environment is a good example of how I used templates to generate code. In this tool, I went to the extreme of trying to fully replicate the protein synthesis steps used by living cells to generate SQL code from “genes” for the programs within an “embryo” application that developed within BSDE through embryonic growth and differentiation as the “genes” were turned on and off by a programmer.

Another example of using templates is to try to copy/paste code and text as much as possible. For example, I currently approve all the change tickets that Middleware Operations performs, and it is always a challenge for me to get the people who submit these change tickets to include accurate information. In WebSphere you install Applications into a WebSphere Appserver via an .ear file, like Customer.ear, that contains all the code required by the Customer Application. These .ear files are stored on a server controlled by our Source Code Management group. So in the change ticket, the requester has to specify the path to the required .ear files. Quite frequently, the paths and .ear file names are misspelled, which causes us all sorts of grief when we try to install the .ear files in the middle of the night. I keep telling change ticket submitters that all they have to do is navigate in Windows Explorer to the desired .ear file and then highlight the Address textbox showing the path to the .ear file and then copy/paste the path into their change ticket. Right-clicking on the .ear file and displaying the .ear file’s Properties allows them to then copy/paste the exact name of the .ear file too. I am always frustrated by the great reluctance on the part of change ticket submitters to follow this simple fool-proof process.

Another way to trick the second law is to minimize typing with your fingers whenever possible. Every time you type out some software or a Unix command on the command line, there is always the chance of making a mistake. For example, I currently support over 200 production servers, and also a large number of UAT, Integration, and Development servers. Trying to keep track of all those servers and what they do is a real challenge. I have a script on our home server called /home/scj03/p that sets my Unix environmental variables the way I like them and also about 400 aliases that significantly reduce my need to type. Reducing typing also speeds up my ability to handle tough situations. When we have a website outage, I will get paged into a conference call for the problem, and I might end up with 20 windows open to different servers and monitoring tools. Just logging into all those servers and getting to the appropriate directories can take a long time, so using aliases really helps speed things up. For example my “p” script sets:

alias g="grep"
alias ap1=”ssh apw01it.unitedamoco.com”
day=`date +'%C%y%m%d'`
alias apl="echo 'cd to the Apache log files for today';cd /apache/logs; ls -l | grep $day"

So if I want to look at today’s Apache webserver logs on webserver apw01it.unitedamoco.com for the customer instance, instead of typing:

ssh apw01it.unitedamoco.com
cd /apache/logs
ls –l | grep 021409 | custom

I just type:

ap1
apl | g custom

and I see:

cd to the Apache log files for today
-rw-r--r-- 1 apache apache 35599711 Feb 4 01:59 access.customer-public-14000.20090204.00h00m.log
-rw-r--r-- 1 apache apache 29864992 Feb 4 03:59 access.customer-public-14000.20090204.02h00m.log
-rw-r--r-- 1 apache apache 23817935 Feb 4 05:59 access.customer-public-14000.20090204.04h00m.log
-rw-r--r-- 1 apache apache 81466621 Feb 4 07:59 access.customer-public-14000.20090204.06h00m.log

I also have some WebSphere aliases that let me quickly look at the SystemOut.log for a WebSphere Appserver. For example, suppose the WebSphere Appserver is running on dwas99it.unitedamoco.com:

alias dw1="ssh dwas99it.unitedamoco.com”
alias l="echo 'cd to the WAS Appserver log directories';cd /data/WebSphere; ls"
alias clm="echo 'cd to logs directory and more SystemOut.log';. /home/scj03/bin/clm6"

The above clm alias calls a small clm6 script in my bin directory:

/home/scj03/bin/clm6
#!/usr/bin/ksh
#
if [ $# -lt 1 ]
then
echo " Syntax error - need the name of a directory"
echo " Example:"
echo " clm6 appserver1"
echo " Does a:"
echo " cd appserver1/ver6/logs"
echo " more SystemOut.log"
else
cd $1/ver6/logs
dir=`pwd`
echo "more $dir/SystemOut.log"
echo " "
more SystemOut.log
fi

So instead of typing in:

ssh dwas99it.unitedamoco.com
cd /data/WebSphere
cd orders
cd ver6/logs
more SystemOut.log

I just type:

dw1
l
clm orders

and I immediately see the SystemOut.log file for the orders WebSphere appserver:

************ Start Display Current Environment ************
WebSphere Platform 6.1 [ND 6.1.0.13 cf130745.06] running with process name UnitedAmocoCell\was6node1\orders and process id 164482
Host Operating System is AIX, version 5.3
Java version = J2RE 1.5.0 IBM J9 2.3 AIX ppc-32 j9vmap3223-20071007 (JIT enabled)
J9VM - 20071004_14218_bHdSMR
JIT - 20070820_1846ifx1_r8
GC - 200708_10, Java Compiler = j9jit23, Java VM name = IBM J9 VM

Since I have over 400 aliases, I have an alias that helps me find other aliases:

alias a="echo ' '; alias | grep -i"

So if I want to find all the aliases that have to do with our Apache webservers, I just type in:

a apache

and I see:

apb='echo '\''cd to the Apache Start/Stop scripts directory'\'';cd /opdata/apache/scripts; ls'
apc='echo '\''cd to the Apache servers directory'\'';cd /opdata/apache/conf; ls -l'
apcon='echo '\''cd to the Apache static content directory'\'';cd /data/content; ls -l'
apl='echo '\''cd to the Apache log files for today'\'';cd /opdata/apache/logs; ls -l | grep '\''Feb 04'\'
aps='echo '\''cd to the Apache servers directory'\'';cd /opdata/apache/conf; ls -l'
sa='echo '\''sudo su - apache'\'';sudo su - apache'

I have my /home/scj03/p script on all the servers I support, and I have a script send_p.sh that scp’s the p script to all the servers when I make changes to it. When I login to a server, I frequently have to sudo to a production ID that has permissions on the production files, such as “sudo su – apache”. After I do that, I press F2, which I have set to “. /home/scj03/p” in my telnet software to set all my aliases for the production ID.

Do Not Fight the Nonlinear Nature of Software
In Software Chaos, I described the nonlinear nature of software, in that small changes to software or the load that software processes can cause dramatic and unpredictable results. I also suggested that IT needs to stop thinking of software in linear terms, constantly looking for root causes, when none may even exist. What is the root cause of a tornado? The sad truth is that because of the nonlinear nature of weather, a tornado might simply be generated by a gentle wind blowing over a hill. IT needs to view software outages in the same way that the civil authorities view severe weather conditions like tornados. The first priority should be reducing the loss of life and the damage to property, by the constant monitoring of conditions and an early warning system that generates alerts for people to take action. You can always go back to look at log files and dumps to try to figure out what happened, but your first action should be to fail production traffic over to your backup software infrastructure, or to start bouncing impacted software components if you have no backup infrastructure. You should think of your IT infrastructure like the ER of a hospital. Your first priority should be to stabilize the patient and get them out of danger, then you can begin to look for root causes. First get the patient’s heart pumping again, then get him breathing, stop the bleeding, and only then start to look for bullets in his log files and core dumps.

In Software Chaos, we also saw that many nonlinear systems, like a simple pendulum, do have regimes in which they behave like nice controllable linear systems. Many times, if you overbuild your software infrastructure sufficiently, you can safely operate your software in such a linear regime. Unfortunately, in IT there has always been a tendency to push the software infrastructure beyond 80% of capacity to get your moneys worth. Many times this simply happens because the growth of the processing load overtakes the capacity of the infrastructure because rigorous capacity planning was not continuously performed.

Follow Standards
All living things use the same 20 amino acids to build proteins, the same nucleic acids in the form of DNA and RNA to store and process genetic information, the same simple sugars to build polysaccharide structures, the same metabolic pathways like the Krebs cycle to oxidize carbohydrates, the same fatty acids to make fats and oils - the list goes on and on. And these standards that all living things follow are not necessarily predetermined things. For example, you can build almost an infinite number of amino acids from their basic structure of:

H H O
| | ||
H-N-C-C-OH
|
R

by simply changing the atoms in the R side group. But of all these millions of possible amino acids, all living things from bacteria to humans, use the same 20 amino acids to build proteins. And they also all use the same bases A, C, T, G, and U for DNA and RNA and the same mapping table to map amino acids to the 3-bit base-pair bytes of genetic information. It even goes further than that. Many of the organic molecules involved in biochemical reactions can come in left and right-handed versions, called stereoisomers or optical isomers. To see how this works, hold up your left and right hands palm down. Notice that they both look completely identical, with the same number of fingers and the same size and shape. But are they? Imagine you lost your right hand in a car accident, and by some miracle of surgery, they replaced it with a donor hand, but the donor hand happened to be a left hand! This would present all sorts of difficulties for you, beyond just trying to put your gloves on. As an IT professional, you can easily simulate these difficulties by simply crossing over your hands on your keyboard. Now try to type some code! You will find that your fingers no longer line up properly with the keys on your keyboard. Similarly, right-handed organic molecules have a hard time lining up with left-handed organic molecules in a lock and key configuration. This is why nearly all of the amino acids used by living things are left-handed, or L amino acids, while nearly all sugars are right-handed or D sugars. Living things could probably have gotten by if they had reversed things by only using D amino acids and L sugars, but there had to be a standard set by the biosphere at some point to go with one or the other. Otherwise predators would not be able to eat their prey, without worrying about the arbitrary coding standard their prey happened to have decided upon!

This is a valuable lesson for all IT professionals – use standards whenever possible. This can be applied to all the artifacts of IT – design documents, variable names, method names, database names, database column names, job names, job schedule names – the list goes on. For nearly 30 years, I have watched IT people suffer the consequences of the expediency of the moment. They plunge ahead in the heat of the moment to get something quickly into production, with the sincere intent of coming back to fix everything to conform to standards, but they never seem to do so. If you learn nothing more from softwarephysics than the value in following standards to overcome the effects of the second law of thermodynamics and nonlinearity, as all living things do, you will find it well worth your effort. Too much of IT is hand-crafted and non-standard.

If It Ain’t Broke, Don’t Fix It!
Living things evolve through small incremental enhancements that always improve their survivability. Richard Dawkins calls this Climbing Mount Improbable (1996). In this book, Dawkins depicts survivability as a mountainous landscape, with foothills and valleys leading up the slope. Living things do not jump straight up the face of a steep cliff in this survivability terrain, instead, they follow a slow arduous upward path in their assent to improved survivability. They also do not descend into valleys of lower survivability, which might have an easier path to higher survivability on the other side of the valley, because living things cannot “foresee” the terrain of the survivability landscape lying ahead. Natural selection only lives for the moment and selects for advantageous mutations and against disadvantageous mutations at every point along the landscape. Consequently, living things can only move upwards in climbing mount improbable, or stand still if nothing else. There is no selective advantage to decreasing your chance of survival by descending into a valley of lower survivability. Now there is both good and bad in this strategy from an IT perspective. As an IT professional, you are not limited to this path of small incremental enhancements in your climb up mount improbable, because you are privy to an expanded view of the survivability terrain of software. This gives you a better view of the hills and valleys leading up the mountain than living things are privy to, but sometimes it is also advantageous to take the more limited view that living things have in formulating IT designs. So when somebody comes up with a brilliant enhancement in a meeting that sounds like a good idea, I frequently put the question to myself – “Would this enhancement naturally evolve in nature? What are the selective advantages of this approach? What are the selective disadvantages?“.

Here is a recent example, in WebSphere there is a plugin-cfg.xml file that is installed on Apache webserver instances that tells Apache where to send WebSphere requests that it receives from browsers over the Internet. These requests are sent to physical WebSphere servers hosting WebSphere Applications installed in WebSphere Appservers. Now a typical physical Apache webserver might have 20 Apache instances serving up webpages for the many websites being hosted by the physical Apache webserver. Prior to WebSphere 6.0 we had just one communal plugin-cfg.xml file for all the Apache instances on a physical Apache webserver. The danger was that when we used WebSphere to regenerate the plugin-cfg.xml file for changes to Application A, there was a slight chance that it could mess up the plugin-cfg.xml file section for Application B. However, in 5 years of WebSphere administration, I do not recall a single instance of this actually happening. To overcome this non-existent problem, in WebSphere 6.0 IBM came up with an enhancement that allows for separate plugin-cfg.xml files for each of the 20 Apache instances we might currently have on an Apache webserver, providing complete isolation between the Applications being serviced by the Apache webserver. Now on the face of it, this sounded like a great idea to all, except to me. I immediately thought to myself, “Would this enhancement have a chance to evolve in nature? Would it be viewed as a positive mutation, enhancing survivability, or as a genetic disease to be ruthlessly eliminated from the gene pool?” My conclusion was that this enhancement would cause all sorts of problems because of the second law of thermodynamics and nonlinearity, with no offsetting advantages. My fear was that the developers who created our change tickets would forget to mention which of the 20 Apache instances we should map their WebSphere Applications to and that our Offshore team members doing the installs in the middle of the night, would occasionally get mixed up and accidentally copy the wrong plugin-cfg.xml file from one of the 20 directories storing plugin-cfg.xml files on the WebSphere Deployment Manager server to its corresponding directory on the 8 Apache webservers. You see, the WebSphere Deployment Manager server now has 20 directories storing plugin-cfg.xml files and each of the 8 Apache webservers also have 20 directories storing plugin-cfg.xml files, so the number of permutations of messing this up are huge. With WebSphere 5.0 there was only one plugin-cfg.xml file stored in one directory on the WebSphere Deployment Manager server and only one directory on each of the 8 Apache webservers storing the single plugin-cfg.xml file. This was pretty hard to mess up and it never happened over the course of five years. Now with the WebSphere 6.0 enhancement, we had 20 plugin-cfg.xml files to worry about on the WebSphere Deployment Manager server and 20 plugin-cfg.xml files on each of the 8 Apache webservers! Just do the math to come up with the ways you could mess that up! And sure enough, one pager cycle when I was Primary, we got hundreds of calls into our call center about people getting intermittent 404s when trying to login to our website. Naturally I could not reproduce the problem. It turns out that our install team accidentally copied the wrong plugin-cfg.xml file into one of our 8 Apache webservers, causing a 1 in 8 chance of generating a 404. This was a very difficult problem to troubleshoot because I never had this problem when there was only one plugin-cfg.xml file used by all the Apache instances, so I never even suspected a bad plugin-cfg.xml file. Now do I find fault with our install team for this mishap? Not in the least. Our install team does a marvelous job with the very difficult task of doing production installs. Too many times in IT we needlessly taunt the second law of thermodynamics when we tell people to avoid mistakes by simply “being more careful”. This is just setting people up for failure, like poking the second law of thermodynamics with a sharp stick. To alleviate this problem we now have a script that automatically pushes out the plugin-cfg.xml file from a menu. All you have to do is pick the correct plugin-cfg.xml file listed on the menu of 20 plugin-cfg.xml files. Even so, this requires a huge amount of intellectual energy to do correctly. The developers have to specify the correct plugin-cfg.xml file to regenerate for the Apache instance their Application uses on their change tickets and our Offshore team has to pick the correct plugin-cfg.xml file from the menu at install time. My contention is that this “enhancement” would be viewed in nature as a genetic disease, with a great deal of selection pressure against it because it consumes energy and resources, but provides no competitive survival advantage.

Follow the Lead of Bacteria for Day-To-Day Activities
As I pointed out in SoftwareBiology, prokaryotic bacteria are the epitome of good IT design, consequently, bacteria are found to exist under much harsher conditions and under a much wider range of conditions than multicellular organisms. We saw that bacteria block their genes to minimize I/O operations and do not load up their genomes with tons of junk DNA and introns, as do the “higher” forms of life. The simplicity, resourcefulness, and frugality of bacteria are to be admired from an IT perspective. So for the mundane day-to-day issues of IT, I frequently ask myself “What would a bacterium do in this situation?”.

Follow the Lead of Multicellar Organisms and the Biosphere for Architectural Issues
For higher level IT issues look to the superb organization found in multicellular organisms and the biosphere. For example, we are currently going through the SOA – Service Oriented Architecture revolution in IT. With SOA, we develop a large number of common services, like looking up the current status of a customer, which can then be called by any number of applications, rather than have each application individually code the same identical functionality. As we saw in SoftwareBiology, SOA is just the IT implementation of the dramatic eruption of multicellular architecture during the Cambrian Explosion 530 million years ago. Consider the plight of a single, lonely, aerobic bacterium which is challenged to find its own sources of food, water, oxygen, and warmth and must also find an environment in which it can dump its wastes without poisoning its immediate surroundings, and do all this while it tries to avoid all the dangers of a hostile microbial world. Contrast that with the relatively fat and easy life of the 100 trillion cell instances in your body that find themselves bathed in all the food, water, oxygen, and warmth they could desire, without the least worry about dumping their wastes into their immediate environments because their wastes are briskly flushed away, and without the least worry of being taken out to lunch by a predator. The poor little bacterium must have code that handles all these difficult situations, while the cells in a multicellular organism just rely on the services of other cell instances residing in SOA service machines, or organs, known as hearts, lungs, intestines, livers, kidneys and spleens to handle all these common services. In Software Symbiogenesis and Self-Replicating Information we saw how the biosphere has taken SOA to an even higher level. Not only do the cells in a multicellular organism rely upon the services of cells within the organs of its body, they can also rely upon the services of cells in other bodies via parasitic/symbiotic relationships between organisms. We are beginning to see this in IT too, as companies begin to expose services to other companies over the Internet to allow B-to-B applications to form symbiotic relationships between businesses in a supply chain.

I became convinced of the value of SOA many years ago at United Airlines, before SOA had even appeared on the IT scene. At the time, I was supporting the middleware for www.united.com running on Tuxedo. Through a process of innovation and natural selection, the middleware group ended up writing a large number of Tuxedo services to access things like customer data from a series of databases and reservation data stored in the Apollo reservation system to support www.united.com. We then opened up these Tuxedo services for other internal applications at United to use via a JOLT call from their java applications. Over a period of a year or two, we accidentally evolved a pretty sophisticated SOA architecture. This SOA architecture was put to the test one day, when my boss got a call from our CIO. It turns out that our marketing department had published a “Fly Three, Fly Free” campaign in hundreds of newspapers that day. The campaign explained that if you flew three flights with United in any given month, you were then eligible to fly free to any destination within the continental United States. All you had to do was to register for the campaign to obtain your flight benefit. Now that was the problem. Our marketing department had forgotten to tell IT about the new campaign, and in the newspaper ads, it stated that the promotion was going into effect that day at 12:00 midnight! So we had 15 hours to design, develop, test, and implement an application to be used by our call centers and that could also be run from www.united.com. We immediately formed a number of crash workgroups in applications development, database, QA testing, and call center training to field this application as quickly as possible by working in parallel as much as possible. And because we could sew together an application quickly by calling our already existing SOA Tuxedo services, we actually made the 15 hour deadline! After that experience, I was totally sold on the idea of SOA, before SOA even existed.

Let Softwarephysics Guide Your Career Path
SOA has the advantage of reducing the amount of redundant code that a corporation has to maintain and allows developers to quickly throw together new Applications because they can just assemble them from a collection of existing components or services. The problem that SOA presents is governance - who decides how and when to change components? SOA can also be a problem for Operations when troubleshooting problems because many applications draw upon the same services, and a bug in one service can impact many applications. So is SOA a good thing or a bad thing? And how do you decide?

Well there was this same controversy about object-oriented programming in the early 1990s. Was object-oriented programming a good thing or a bad thing? And was it just a flash in the pan, or something that would catch on? There is a lot of hype in IT, and you can easily get misdirected down the wrong architectural path. For example, in the early 1980s they told us to start looking for a different job because IT would soon be vanishing. You see, in the early 1980s, the theory was that 4GL languages (4th Generation Languages), like Mark IV and Focus, would soon allow end-users to simply write their own software, and the Japanese were also working on a 4th Generation Computer, due to be completed by 1990, that would be based upon an operating system using Artificial Intelligence. End-users would interact with this new operating system like the folks in 2001 - A Space Odyssey, with no need for pesky IT people. But none of that ever happened! So in the early 1990s, the COBOL/CICS/DB2 mainframe folks had a dim view of object-oriented languages like C++ because they thought they were just another flash in the pan. There was also a lot of FUD (Fear, Uncertainty, and Doubt) in the early 1990s because of the impending architectural change to a distributed computing platform which made matters even more confusing. We saw folks throwing together LANs with cheap PCs, and then there were those nasty Unix people bringing in Unix servers to replace the mainframes too. Mainframes were supposed to be gone by 1995, and IBM nearly did go bankrupt in those days. So maybe Unix and C++ might be something good to learn - or maybe not?

So how do you make sense of all this? How do you make good IT decisions about your career path when IT architectural changes seem to be happening, but there is all this hype? Fortunately, I had softwarephysics back in the early 1990s to help me make decisions. Based upon softwarephysics, I taught myself Unix, C++ and Java (1995) when it came out, because softwarephysics told me that object-oriented programming was a keeper and would have a big impact on IT. Sofwarephysics also predicts that SOA is the way to go too. Softwarephysics claims that object-oriented programming and SOA are really just implementations of multicellular organization in software. An object instance is just a cell. The human body has 210 cell-types or Classes. Each of the 100 trillion cells in your body is an object instance of one of these 210 Classes. Each cell is isolated by a cell membrane that protects it from other cells, so that other cells cannot directly change the cell's "data". In object-oriented languages, this is called encapsulation. Each cell contains many internal methods(), used by the cell to conduct biological operations. Each cell also has a set of public or exposed methods() that can be called by other cells, via the secretion of organic molecules, that bind to receptors on the cell membrane and induce the cell to perform biological processes. The cells in your body also use the object-oriented concepts of inheritance and polymorphism. The 100 trillion cell instances in your body use the SOA services of other cell instances, like the cell instances in your lungs, liver, kidneys, heart and intestines. These organs, or service machines, provide your cell instances with oxygen, food, and water, and also dispose of the wastes they excrete. So given the success of the multicellular architecture found in the biosphere, softwarephysics predicts that object-oriented programming and SOA will also be successful and worthy of investing some time in learning.

Conclusion
As you can see, softwarephysics is not a magic bullet to cure all of your IT woes. It is really more of a way to think about software. Because it provides an effective theory of software behavior, softwarephysics can be a very robust and flexible tool in your IT arsenal. All you have to do is use your imagination!


Comments are welcome at scj333@sbcglobal.net

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

CyberCosmology

FRIDAY, FEBRUARY 13, 2009

CyberCosmology

In this posting I would like to offer my speculative thoughts on the origins of the Software Universe, cyberspacetime, software and where they all may be heading. Since CyberCosmology will be purely speculative in nature, it will not be of much help to you in your IT professional capacities, but I hope that it might be at least a bit entertaining. If you are new to softwarephysyics – this is probably the very last posting you should be reading, you really need to read the previous posts before taking on CyberCosmology.

The Big Bang of the Software Universe
At the very beginning there was no Software Universe nor any cyberspacetime either and darkness was upon the face of the deep as the old creation myths go. Today the Software Universe and cyberspacetime are huge and are rapidly expanding in all directions throughout our Solar System and beyond it to nearby star systems onboard the Pioneer 1 & 2 and Voyager 1 & 2 probes. How did this come to be and where is it all going? In So You Want To Be A Computer Scientist?, we saw how the Software Universe began about 2.15 billion seconds ago in May of 1941 on Konrad Zuse’s Z3 computer and has been expanding at an ever increasing rate ever since. However, to really predict where it is all going, we need to know a few more things about the physical Universe from which the Software Universe sprang. To do that we need to deal with several conflicting principles that are currently troubling the scientific community, so let’s proceed by listing these principles and examining some their conflicts.

The Copernican Principle - We do not occupy a special place in the Universe.

The geocentric model of Ptolemy held that the Earth was at the center of the Universe and the Moon, the planets, and the stars all circled about us on crystalline spheres. Copernicus overturned this worldview in 1543 with the publication of On the Revolutions of the Heavenly Spheres. But as with all things, you can carry any idea to an extreme and claim that there is nothing special at all about the Earth, the Earth’s biosphere, or mankind in general. Many times you hear that we are just living on an unremarkable planet, circling a rather common star, located in just one of hundreds of billions of similar galaxies in the observable universe, but is that really true?

The Weak Anthropic Principle - Intelligent beings will only find themselves existing in universes capable of supporting intelligent beings.

As I pointed out in The Foundations of Quantum Computing, if you change any of the 20+ constants of the Standard Model of particle physics by a just few percent or less, you end up with a universe incapable of supporting intelligent beings. Similarly, in 1969 Robert Dicke noted that the amount of matter and energy in the Universe was very close to the amount required for a flat spacetime to a remarkable degree. If you run today’s near flatness of spacetime back to the time of the Big Bang, spacetime would have had to have been flat to within one part in 1060! This is known as the “flatness problem”. You see if spacetime had just a very slight positive curvature at the time of the Big Bang, then the Universe would have quickly expanded and recollapsed into a singularity in a very brief period of time and there would not have been enough time to form stars or living things. Similarly, if spacetime had a very slight initial negative curvature, it would have rapidly expanded – the Universe would have essentially blown itself to bits forming a very thinly populated vacuum which could not form stars or living things.

Fermi’s Paradox - If the universe is just chock full of intelligent beings, why do we not see any evidence of their existence? The Universe should look like a bunch of overbuilt strip-malls, all competing for habitable planets at the corners of intersecting intergalactic caravan trade routes, but it does not – why?

If the Copernican Principle tells us that there is nothing special about our place in the Universe, and the weak Anthropic Principle explains why our Universe must be fit for intelligent life, then why do we have Fermi’s Paradox? In Self-Replicating Information I described how genes, memes, and software could one day team up to release von Neumann probes upon our galaxy, self-replicating robotic probes that travel from star system to star system building copies along the way, and how Frank Tipler calculated that von Neumann probes could completely explore our galaxy in less than 300 million years - I have seen other estimates as low as 5 million years. If that is so, why have we not already been invaded? As I said before, all forms of self-replicating information have to be a little bit nasty in order to survive, so I cannot imagine how a totally benign von Neumann probe could come to be. If nothing else, I would think that alien von Neumann probes would at least try to communicate with us to show us the errors of our ways.

There are a few theories that help to resolve the above conflicts:

The Rare Earth Hypothesis
As Peter Ward and Donald Brownlee pointed out in Rare Earth (2000), the Earth is not at all common in contradiction to the extreme version of the Copernican Principle that there is nothing special about the Earth. The weak Anthropic Principle may hold that intelligent beings will only find themselves in universes capable of supporting intelligent beings, but Ward and Brownlee point out that our Universe just barely qualifies. If you think of the entire observable Universe, and list all those places in it where you could safely walk about without a very expensive spacesuit, you come up with a very small fraction of the available real estate.

First of all, not all parts of a galaxy are equal. Close in towards the central bulge of a spiral galaxy, there are far too many stars in close proximity spewing out deadly gamma and x-rays from the frequent supernovae of the densely populated neighborhood, and the close association of these stars also perturbs the comets in their Oort clouds to fall into and collide with their Earth-like inner planets. Too far out and the metallicity of stars, the matter made up of chemical elements other than hydrogen and helium, drops off dramatically for the want of supernovae, and it is hard to make intelligent beings out of just hydrogen and helium. So perhaps only 10% of the stars in a spiral galaxy are in a location capable of supporting complex animal life. The elliptical galaxies are even worse, being completely composed of very old metal-poor stars that do not contain the carbon, oxygen, and nitrogen atoms necessary for life. Next, the central star of a stellar system must be of just the right mass and spectral classification. If you look up into the night sky, and look closely, you will notice that stars come in different colors. Based upon their spectral colors, stars are classified as O, B, A, F, G, K, and M. Each letter classification is further divided into ten subclasses 0-9. This classification ranges from the blue-hot O and B stars down to the very cool reddish K and M stars. Thus Naos is a blueish O5 star, Sirius is a blue-white A1 star, the Sun is a yellow G2 star, Arcturus is a reddish K2 star, and Barnard's Star is a very red M4 red dwarf. You frequently read that our Sun is just an “average-sized” nondescript star, just one of several hundred billion in our galaxy, but nothing could be further from the truth. This probably stems from the fact that the Sun, as G2 main sequence star, falls in the very middle of the spectral range of stars. But this Universe seems to like to build lots of small M stars, very few large O stars, and not that many G2 stars either. You see, the very massive hot O stars may have a mass of up to 100 Suns, while the very cool M stars weigh in with only a mass of about 1/10 of the Sun, but for every O star in our galaxy, there are a whopping 1.7 million M stars. In fact, about ¾ of the stars in our galaxy are M stars or smaller with a mass of only a few tenths of a solar mass, but because there are so many, they account for about ½ the mass of our galaxy, excluding the dark matter that nobody understands. The very massive and hot O, B, A, and F stars have lifetimes of 10 million – 1.0 billion years which are too brief for complex intelligent life to evolve. The very small and dim K and M stars have very long lifetimes of up to 10 trillion years, but have a habitable zone that is very close in towards the central star which causes the planets to tidal lock, like the tidal lock of our Moon as it orbits the Earth. A planet in tidal lock has one side that always faces its star and one that always faces away from its star, causing the planet to have a very hot side and a very cold side that are both unfit for life. Consequently, only stars in the range of F7 to K1, like our G2 Sun, are fit for life and that amounts to only about 5% of the 10% of stars in the habitable zone of a spiral galaxy – so that drops us down to about 0.5% of the stars in a spiral galaxy and probably 0.0% of the stars in an elliptical galaxy.

Stars form when large molecular clouds of gas and dust collapse under their own weight in the spiral arms of a galaxy. These very large molecular clouds are composed mainly of molecular hydrogen, but also contain molecules of carbon monoxide, ammonia, and other organic molecules, and can have a mass of up to 5 million solar masses. The molecules in these clouds oscillate and bounce around like ping-pong balls attached to very floppy springs, and as they do so, they radiate away lots of energy reducing the temperature of the clouds down to 10 0K. Individual clumps of cold dense gas and dust then collapse into individual stars. Each clump naturally has some initial spin because the odds of it having none would be quite small. Just think of what happens when you drop a bunch of marbles on the floor. So as these clumps collapse, they have to get rid of the angular momentum of their original spin. Some of the angular momentum goes into the spin of the protostar itself, but about half goes into what is called a protoplanetary disc. Planets then form out of this protoplanetary disc as small clumps of gas and dust coalesce into plantesimals which later collide to form planets. As a molecular cloud collapses, it creates many thousands of stars all in close proximity called an open cluster. Because stars form in large numbers in the stellar nurseries of large molecular clouds, they tend to come in pairs. What happens is that several stars will form together all at the same time, and then the collection of stars will begin flipping individual members out of the collection as the stars orbit each other in chaotic orbits until you end up with just two stars orbiting each other. It turns out that more than half of the stars in our Galaxy come as binary pairs, so our solitary Sun is once again an anomaly. Now it is possible for each star in a binary pair to have planets if the two stars orbit each other at a sufficient distance, however if the two stars orbit each other in a tight orbit, they will flip any planets out into interstellar space. Even if the stars do orbit each other at a great distance, they will tend to perturb the Oort clouds of their partners, sending biosphere-killing comets down into the planetary systems of their partner to collide with its inner planets. Because binary star systems do not seem very welcoming, this again cuts the number of likely stellar candidates for complex life down to about 0.25% of the stars in a spiral galaxy.

The Earth is also blessed with a large sentinel planet we call Jupiter that is in a large circular orbit about the Sun and which is vigilantly standing guard over the inner terrestrial planets. Jupiter flips many of the biosphere-killing comets out of our Solar System that periodically fall out of the very distant Oort cloud surrounding our Sun, preventing these comets from impacting upon the inner terrestrial planets like the Earth and wiping out their biospheres. Presently, we are locating many large Jupiter-like planets circling about other stars, but they usually have highly eccentric elliptical orbits that pass very close to their central stars which would flip any inner terrestrial planets like the Earth out of the planetary system. In fact, it is quite common to find these newly discovered huge Jupiter-like gas giants orbiting quite close to their central stars in orbits much closer than our Mercury. Now these gas giants could only have formed at great distances from their stars as did our Jupiter and Saturn where temperatures are quite low, otherwise the gas would have all boiled away. Indeed, the current theory is that these gas giants of other star systems did form at large distances from their central stars, and as they flipped plantesimals out to the Oort clouds of their star systems, they lost angular momentum and consequently fell into much lower orbits, with many of the gas giants eventually falling into their central stars. So many of the gas giants that we are detecting about distant stars seem to be caught in the act of falling into their stars via this process of orbit degradation. Clearly, if Jupiter or Saturn had pursued this course, they would have flipped the Earth out of our Solar System in the process, and we would not be here observing other star systems in the midst of this process. So the question is what fluky thing happened in our Solar System that prevented this common occurrence?

The Earth also has a very large Moon that resulted when a Mars-like plantesimal collided with an early Earth. This collision was a little off axis and imparted a great deal of angular momentum to the Earth-Moon system that resulted from this collision. The orbit of our massive Moon about the Earth helps to keep the tilt of the Earth’s axis fairly stable and prevents the Earth’s axis from wandering around like the other planets of the solar system. Otherwise, tugs on the equatorial bulge of the Earth by Jupiter and the other planets would cause the axis of the Earth to sometimes point directly towards the Sun. Every six months, this would make the Northern Hemisphere too hot for life and the dark Southern Hemisphere too cold, and six months later the reverse would hold true.

The Earth is also the only planet in the Solar System with plate tectonics. It is thought that the ample water supply of the Earth softens the rocks of the Earth’s crust just enough so that it’s basaltic oceanic lithosphere can subduct under the lighter continental lithosphere. Earth really is the Goldilocks planet – not too hot and not too cold, with just the right amount of water on its surface for oceanic lithosphere to subduct, but not so much that the entire Earth is covered by a world-wide ocean with no dry land at all. It would be very hard for intelligent beings to develop technology in the viscous medium of water, just ask any dolphin about that! Flipper did get his own television show in 1964, but for some reason never signed any of his contracts and was thus deprived of all the lucrative residuals that followed. Plate tectonics is largely responsible for keeping some of the Earth’s crust above sea level. When continental plates collide, like India crashing into China, the oceanic sediments between the two plates get pushed up into huge mountain chains, like a car crash in slow motion. The resulting mountain chains like the Himalayas or the much older Appalachians take hundreds of millions of years to wear down to flat plains through erosion. These collisions also cause wide-scale uplift of continental crust. Without plate tectonics, the Earth would become a nearly flat planet and mostly under water within less than a billion years.

Plate tectonics is also one of the key elements in the carbon cycle of the Earth. Living things remove carbon from the Earth’s atmosphere by turning carbon dioxide into calcium carbonate coral reefs and other calcium carbonate shell-based materials that get deposited upon the ocean floor. This solidified carbon dioxide gets subducted into the Earth at the multiple subduction zones about the Earth. As these descending oceanic lithospheric plates subduct under continental plates at the subduction zones, some of this captured carbon dioxide returns to the Earth’s surface dissolved in the melted magma that rises from the descending plates, like a 1960s Lava Lamp, forming volcanoes on the Earth’s surface. The net effect is that the living things on Earth have been slowly removing carbon dioxide from the Earth’s atmosphere over geological time, because not all of the captured carbon dioxide is returned to the Earth’s atmosphere in this carbon cycle. This has been a fortunate thing, because as the Sun’s luminosity has slowly increased as the Sun ages on the main sequence, the carbon cycle of the Earth has been slowly removing the carbon dioxide greenhouse gas from the Earth’s atmosphere as a compensating measure that has kept the Earth hospitable to complex life.

In The Life and Death of Planet Earth (2002), Ward and Brownlee go on to show that not only is the Earth a very rare planet, we also live in a very rare time on that planet. In about 500 million years, the Sun will become too hot to sustain life on Earth even if all the carbon dioxide is removed from the Earth’s atmosphere. The Earth’s atmosphere currently contains about 385 ppm of carbon dioxide, up from the 280 ppm level prior to the Industrial Revolution. But even if the carbon cycle of the Earth were able to reduce the Earth’s atmosphere down to a level of 5 ppm, the lowest level that can sustain photosynthesis, in about 500 million years the Sun will be too hot to sustain life on Earth, and the Earth’s oceans will boil away under a glaring Sun. Now complex plant and animal life is a very recent experiment in the evolutionary history of the Earth, having formed a mere 530 million years ago during the Cambrian Explosion, and since the Earth will not be able to sustain this complex plant and animal life much beyond 500 million years into the future, this places a very restrictive window of about a billion years for Earth-like planets hosting complex plant and animal life capable of evolving into intelligent beings. The reason that complex animal life took so long to emerge is that it takes a lot of energy to move around quickly. It also takes a lot of energy to think. 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. Anaerobic metabolic pathways simply do not provide enough energy to move around quickly or write much code. What was needed was a highly energetic metabolic pathway, like the Krebs cycle, that uses the highly corrosive gas oxygen to oxidize energy rich organic molecules. But for the Krebs cycle to work, you first need a source of oxygen. This occurred on Earth about 2.8 billion years ago with the arrival of cyanobacteria which could photosynthesize sunlight, water, and carbon dioxide into sugars, releasing the toxic gas oxygen as a byproduct. Oxygen is a highly reactive gas and was very poisonous to the anaerobic bacteria of the day. For example, today anaerobic bacteria must hide from oxygen at the bottoms of stagnant seas and lakes. But initially these ancient anaerobic bacteria were spared from the Oxygen Catastrophe which took place 300 million years later (2.5 billion years ago) because first all the dissolved iron in the oceans had to be oxidized and deposited as red banded iron formations before the oxygen level could rise in the Earth’s atmosphere. Chances are your car was made from one of these iron deposits because they are the source of most of the world’s iron ore. So you can think of your car as a byproduct of early bacterial air pollution. Once all the iron in the Earth’s oceans had been oxidized, atmospheric oxygen levels began to slowly rise on Earth over a 2.0 billion year period until by the Cambrian, about 530 million years ago, they approached current levels. Not only did an oxygen rich atmosphere provide for a means to obtain large amounts of energy through oxidation of organic molecules, it also provided for an ozone layer in the Earth’s upper atmosphere to shield the land-based forms of life that emerged several hundred million years later in the Silurian and Devonian periods from the devastating effects of intense solar ultraviolet radiation which destroys DNA, making land-based life impossible.

The essential point that Ward and Brownlee make in a very convincing manner in both books is that simple single-celled life, like prokaryotic bacteria, will be easily found throughout our Universe because these forms of life have far less stringent requirements than complex multicellular organisms, and as we saw in SoftwareBiology, can exist under very extreme conditions and from an IT perspective, are the epitome of good rugged IT design. On the other hand, unlike our Rare Earth, we will not find much intelligent life in our Universe because the number of planets that can sustain complex multicellular life will be quite small. Even for our Rare Earth, simple single-celled life arose a few hundred million years after the Earth formed and dominated the planet for more than 3,500 million years. Only within the last 530 million years of the Earth’s history do we find complex multicellular life arise which could be capable of producing intelligent beings. So even for the Earth, the emergence of intelligent life was a bit dicey.

The Big Bang of our Physical Universe
There is plenty of information on the Internet concerning the Big Bang, so I will not go into great detail here. However, when reading about the Big Bang, it is important not to think of the Big Bang as an explosion of matter and energy into an already existing vacuum, or void, as you frequently see on television documentaries. It’s better to think backwards. Imagine that about 14 billion years ago the front and back doors of your house were at the same point in space. Now keep doing that for points in space that are at ever increasing distances apart. So 14 billion years ago, the northern and southern parts of your hometown were at the same point in space, as were the North and South Poles of the Earth, the Sun and Neptune, the Sun and the nearest stars, all the stars in our galaxy, and all the galaxies in our observable Universe – all at a singularity out of which our Universe formed.

In addition to the “flatness problem” previously described, the Big Bang presents another challenge – the “horizon problem”. The horizon problem goes like this. Look to your right with the proper equipment and you can see galaxies that are 12 billion light years away. Look to your left and you can see galaxies that are 12 billion light years away in the other direction. These galaxies are 24 billion light years apart, but the Universe is only about 14 billion years old, so these galaxies could not have been in causal contact at the time they emitted the light you now see because no information could have covered the 24 billion light year distance in only 14 billion years. Yet the galaxies look amazingly similar, as if they were in thermodynamic equilibrium. Similarly, when you look at the CBR (Cosmic Background Radiation) with the WMAP satellite (Wilkinson Microwave Anisotropy Probe), you see the radiation emitted from the Big Bang a mere 400,000 years after the Big Bang. Prior to this time, the photons from the Big Bang were constantly bouncing off free electrons before they could travel hardly any distance at all, so the Universe was like a very bright shiny light in a very dense fog - all lit up, but with nothing to see. When the Universe cooled down below 3,000 0K as it expanded, the free electrons were finally able to combine with protons to form hydrogen atoms. As you know, hydrogen gas is transparent, so the photons were then free to travel unhindered 14 billon light years to the WMAP satellite from all directions in space. Consequently, the CBR was originally radiated at a temperature of about 3,000 0K, with a spectrum and appearance of an incandescent light bulb. But this radiation was stretched by a factor of about 1,000 as the Universe also expanded in size by a factor of 1,000, so now the CBR is observed to be at a temperature of only 2.7 0K. However, the CBR is remarkably smooth in all observable directions to a factor of about one part in 100,000. This is hard to explain because sections of the CBR that are separated by 1800 in the sky today were originally 28 million light years apart when they emitted the CBR radiation – remember the Universe has expanded by about a factor of 1,000 since the CBR radiation was emitted. But since the CBR photons could only have traveled 400,000 light years between the time of the Big Bang and the formation of the hydrogen atoms, they could not possibly have covered a distance of 28 million light years! So why are all these CBR photons the same to within a factor of one part in 100,000?

In 1980, Alan Guth resolved both the “flatness problem” and the “horizon problem” with the concept of Inflation. According to Inflation, the early Universe underwent a dramatic exponential expansion about 10-36 seconds after the Big Bang. During this period of Inflation, which may have only lasted about 10-32 seconds, the Universe expanded much faster than the speed of light, until the Universe expanded by a factor of about 1026 in this very brief time. This was not a violation of the special theory of relativity. Relativity states that matter, energy, and information cannot travel through spacetime faster than the speed of light, but the general theory of relativity does allow spacetime itself to expand much faster than the speed of light. This rapid expansion of spacetime smoothed out and flattened any wrinkles in the original spacetime of the Big Bang and made spacetime extremely flat as we observe today. For example, if you were to rapidly increase the diameter of the Earth by a factor of 1,000,000 all the mountains and valleys of the Earth would rapidly get smoothed out to flat plains and would lead the casual observer to believe that the Earth was completely flat, a notion that held firm for most of man’s history even on our much smaller planet.

Inflation also resolved the horizon problem because a very small region of spacetime with a diameter of 10-36 light seconds, which was in thermal equilibrium at the time, expanded to a size of 10-10 light seconds or about 3 meters during the period of Inflation. Our observable Universe was a tiny atom of spacetime within this much larger 3 meter bubble of spacetime, and as this 3 meter bubble expanded along with our tiny little nit of spacetime, everything in our observable Universe naturally appeared to be in thermal equilibrium on the largest of scales, including the CBR.

Inflation can also help with explaining the weak Anthropic Principle by providing a mechanism for the formation of a multiverse composed of an infinite number of bubble universes. In 1986, Andrei Linde published Eternally Existing Self-Reproducing Chaotic Inflationary Universe in which he described what has become known as the Eternal Chaotic Inflation theory. In this model, our Universe is part of a much larger multiverse that has not yet decayed to its ground state. Quantum fluctuations in a scalar field within this multiverse create bubbles of rapidly expanding “bubble” universes, and our Universe is just one of these infinite number of “bubble” universes. A scalar field is just a field that has only one quantity associated with each point in space, like a weather map that lists the temperatures observed at various towns and cities across the country. Similarly, a vector field is like a weather map that shows both the wind velocity and direction at various points on the map. In the Eternal Chaotic Inflation model, there is a scalar field within an infinite multiverse which is subject to random quantum fluctuations, like the quantum fluctuations described by the
quantum field theories we saw in The Foundations of Quantum Computing. One explanation of the weak Anthropic Principle is that these quantum fluctuations result in universes with different sets of fundamental laws. Most bubble universes that form in the multiverse do not have a set of physical laws compatible with intelligent living beings and are quite sterile, but a very small fraction do have physical laws that allow for beings with intelligent consciousness. Remember a small fraction of an infinite number is still an infinite number, so there will be plenty of bubble universes within this multiverse capable of supporting intelligent beings.

I have a West Bend Stir Crazy popcorn popper which helps to illustrate this model. My Stir Crazy popcorn popper has a clear dome which rests upon a nearly flat metal base that has a central stirring rod that constantly rotates and keeps the popcorn kernels well oiled and constantly tumbling over each other as the heating element beneath heats the cooking oil and popcorn kernels together to a critical popping temperature. As the popcorn kernels heat up, the water in each kernel begins to boil within, creating a great deal of internal steam pressure within the kernels. You can think of this hot mix of oil and kernels as a scalar field not in its ground state. All of a sudden, and in a seemingly random manner, quantum fluctuations form in this scalar field and individual “bubble” universes of popped corn explode into reality. Soon my Stir Crazy multiverse is noisily filling with a huge number of rapidly expanding bubble universes, and the aroma of popped corn is just delightful. Now each popped kernel has its own distinctive size and geometry. If you were a string theorist, you might say that for each popped kernel the number of dimensions and their intrinsic geometries determine the fundamental particles and interactions found within each bubble popcorn universe. Now just imagine a Stir Crazy popcorn popper of infinite size and age constantly popping out an infinite number of bubble universes, and you have a pretty good image of a multiverse based upon the Eternal Chaotic Inflation model.

The Technological Horizon
All universes capable of sustaining intelligent beings must have a set of physical laws that are time independent, or that change very slowly with time, and they must have a time-like dimension for the Darwinian processes of innovation and natural selection to operate. All such universes, therefore, impose certain constraints on technology. Some examples of these technological constraints in our Universe that we have already explored in previous postings on softwarephysics are the speed of light limiting the velocity with which matter, energy, and information can travel, the Heisenberg Uncertainty Principle limiting what we can measure, the first and second laws of thermodynamics limiting the availability of energy, and Kurt Gödel’s incompleteness theorems which limit what mathematics can do for us. These technological constraints, that all intelligent universes must have, form a technological horizon or barrier surrounding all intelligent beings, beyond which they are cut off from the rest of the universe in which they find themselves existing. This technological horizon might be quite large. For example, let us suppose that in our Universe travel via wormholes in spacetime is not allowed at the most fundamental level, then the cosmological horizon that forms our observable universe would also be the technological horizon of our universe because galaxies beyond our cosmological horizon are expanding away from us faster than the speed of light. On a smaller scale, we can presume that for our own Universe the technological horizon must be no smaller than a galaxy because we have already launched the Pioneer 1 & 2 and the Voyager 1 & 2 probes beyond our Solar System into the interstellar space of our galaxy with the puny technology we currently have at hand. However, the technological horizon of our Universe could very well be on the order of the size of our galaxy, making intergalactic travel technically impossible.

A Possible Explanation for Fermi’s Paradox
So the answer to Fermi’s paradox (1950), why if the universe is just chock full of intelligent beings, we do not see any evidence of their existence, might just be that all intelligent beings will never see the evidence of other intelligent beings because they will always find themselves to be alone within the technological horizon of their universe. The reason that intelligent beings might always find themselves to be alone within their technological horizon is two-fold. First, the Rare Earth hypothesis guarantees that there will not be much potential intelligent life to begin with within a given technological horizon if the technological horizon of a universe is not too large. Secondly, there is the nature of all self-replicating information. As we saw, self-replicating information must always be just a little bit nasty in order to survive and overcome the second law of thermodynamics and nonlinearity. So the reason that intelligent beings always find themselves alone within the technological horizon of their universe is that if there were other intelligent beings within the same horizon, these alien intelligent beings would have arrived on the scene and interfered with the evolution of any competing prospective intelligent life within the technological horizon. Unfortunately, given the nature of self-replicating information, competing alien intelligences will always intentionally or unintentionally poison the home planets of all other prospective forms of intelligent life within a technological horizon of a universe. Based upon this speculation, let us revise the weak Anthropic Principle as:

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.

What the Future May Bring
Cyberspacetime is currently in an inflationary expansion, just as spacetime was 10-36 seconds after the Big Bang, and is doubling in size at least every 18 months or less based upon Moore’s Law. Countless works of science fiction and also many serious papers in numerous prestigious journals have forewarned us of mankind merging with machines into some kind of hybrid creature. Similarly, others have cautioned us to the dangers of the machines taking over and ruthlessly eliminating mankind as a dangerous competitor or enslaving us for their own purposes. Personally, I have a more benign view.

This is my vision of the future. First of all, it is not the machines that we need to worry about, it is software that we need to be concerned with. Secondly, we are not going to merge with software into some kind of hybrid creature, rather software is currently merging with us whether we like it or not! In Self-Replicating Information, I showed how software has already forged very strong symbiotic relationships over the past 70 years with nearly all the meme-complexes on Earth, and that we as IT professionals are rather ineffectual software enzymes currently preoccupied with the construction and care giving of software. In Self-Replicating Information, I also described Freemon Dyson’s theory of the origin of life as a two-stage process, in which parasitic RNA eventually formed a symbiotic relationship with the metabolic pathways that preceded it in the first proto-cells that arose as purely metabolic forms of life. As RNA took over from the metabolic pathways of the proto-cells to become the dominant form of self-replicating information on the planet, the RNA did not get rid of the legacy metabolic pathways. Instead, RNA domesticated the “wild” metabolic pathways to better replicate RNA. This whole process was again repeated when DNA took over from RNA as the dominant form of self-replicating information. The DNA did not get rid of RNA, but instead, domesticated “wild” RNA to better serve the replication of DNA via ribosomal RNA, mRNA and tRNA. Several billion years later, when the memes arose in the complex neural networks of Homo Sapiens, they too did not get rid of mankind, but instead, “domesticated” the “wild” mind of man through the development of mythology, religion, music, art, political movements, and eventually the invention of civilization. The invention of civilization and writing greatly enhanced the survivability of meme-complexes because now they could replicate under the auspices of the Powers That Be and could replicate with a high degree of fidelity through the power of the written word. Today, we call this domestication process of the mind “education”, as we civilize the wild minds of our children with appropriate meme-complexes, so that we do not end up with the unruly rabble of William Golding’s Lord of the Flies (1954).

The same thing is happening today with software, as parasitic software forms ever stronger symbiotic relationships with the meme-complexes of the world. As with all the previous forms of self-replicating information on this planet, software is rapidly becoming the dominant form of self-replicating information on Earth, as it invades its host, the meme-complexes of the world. But like all of its predecessors, I do not foresee software trying to eliminate the meme-complexes of man or mankind itself. Instead, software will domesticate the meme-complexes of the world, and in turn, domesticate us! I don’t know about you, but software already runs my life. As an IT professional in Operations and frequently on 24x7 call, I already schedule my entire life around the care and feeding of software. Software determines when I sleep, when I eat, and when I can safely leave the house to run errands. IT professionals are just the first wave of this domestication of mankind by software; the rest of mankind is not far behind us – just watch all those folks running around with those Bluetooth gizmos stuck in their ears!

But what happens if someday software no longer needs us? Will that spell our doom? In SoftwareBiology, I described the evolution of software over a number of Periods:

SOA - Service Oriented Architecture Period (2004 – Present)
Object-Oriented Period (1992 – Present)
Structured Period (1972 – 1992)
Unstructured Period (1941 – 1972)

Notice that I did not describe these periods of time as Eras, like the Paleozoic, Mesozoic, and Cenozoic Eras of the geological time scale. This is because I consider them all to be Periods within the Paleosoft Era (old software Era). Software in the Paleosoft Era is software which cannot self-replicate without the aid of humans. But that problem is currently being disposed of by a number of institutions, like the Digital Evolution Lab at Michigan State University:

http://devolab.msu.edu/

The devolab is working towards software that can someday write itself through the Darwinian mechanisms of innovation and natural selection, principally through its experimental Avida software. However, even if software can one day write itself, I don’t think that will necessarily spell our doom. Forming a symbiotic relationship with the meme-complexes of the world and the DNA survival machines that house them will always prove useful to software, at least on this planet. Over the past 4.5 billion years of evolution on Earth, we have seen numerous forms of self-replicating information rise to predominance – the metabolic pathways, RNA, DNA, memes, and software, and none of them to date has discarded any of its predecessors because the predecessors have always proved useful, so I believe the same will hold true for software.

Conscious Software
The critical question is will software break into consciousness at some point in the future, and if it does, what will it likely be thinking about? It seems that consciousness is an emergent behavior that occurs when a nonlinear network gets sufficiently complex. Of course, the nonlinear network does not purposefully evolve towards consciousness. Like a screwdriver evolving into a wood chisel, the nonlinear network merely evolves towards higher levels of complexity in pursuit of optimizing other beneficial adaptations that enhance the performance of the original network, such as processing website requests or international financial transactions. So as software begins to run on ever more complex networks, will it too break into consciousness? Or has it already started to do so?

Many times while trying to troubleshoot a website outage, I will adopt what Daniel Dennett calls an intentional stancetowards software, which is one of his hallmarks of impending consciousness. A modern website is hosted on hundreds or thousands of servers – load balancers, firewalls, proxy servers, webservers, J2EE Application Servers, CICS Gateway servers to mainframes, database servers, and email servers, which normally are all working together in harmony to process thousands of transactions per second. But every so often, the software running on these highly nonlinear and interdependent servers runs amuck and takes on a mind of its own, and instead of processing transactions as it should, the network seems to start doing what it wants to do instead. That is when I adopt an intentional stance towards the software. I begin to think of the software as a rational agent with its own set of beliefs and intensions. Many times I will find myself thinking to myself, “Now why is it doing that? Why is it maxing out its DB2 connection pool? Why does it think that it cannot connect to DB2?” I will begin to psychoanalyze the network of servers until I find the root cause of its troubles, and then I will take whatever actions are necessary to alleviate its mental problems. For example, a few weeks back I bounced a couple of DB2Connect servers even though their log files were lying to me and telling me that their healthcheck connections were just fine. Further back in our infrastructure, the WebSphere servers were telling me just the opposite – they were getting DB2 connection errors, so I bounced the DB2Connect servers and that instantly solved the problem.

In George Dyson’s Darwin among the Machines – the evolution of global intelligence (1997), Dyson also sees software as a form of naturally emerging and evolving A-Life that is on the verge of breaking out into consciousness on its own, as the networks upon which software run become larger and ever more complex. Darwin among the Machines is a wonderful study in the history of the idea that machines will become self-replicating forms of intelligence. Dyson traces this idea all the way back to Thomas Hobbes’ The Leviathan (1651) and follows it through the work of Samuel Butler in the 19th century, Alan Turing and John von Neumann in the 1940s, Nils Barricelli’s development of A-Life on a vacuum tube computer in 1953, and the arrival of the World Wide Web in the 1990s. George Dyson is the son of Freeman Dyson whose two-step theory of the origin of life we already saw in Self-Replicating Information. What an amazing father-son team that is! But I think that some of the confusion surrounding A-Life, biological life, and the memes in our minds, stems from not realizing that they are all forms of self-replicating information that share a commonality of survival strategies as they deal with the second law of thermodynamics and nonlinearity, but at the same time have differences that uniquely define each.

You see, it’s really not about self-replicating machines or hardware; it’s really about self-replicating software. At the dawn of the Software Universe we all worried about getting the hardware to work, but it did not take long to learn that getting the software to work properly was the real challenge. To make sense of this all you have to realize that software is just another form of self-replicating information. Just as DNA uses DNA survival machines in the form of physical bodies to self-replicate, and memes use meme survival machines in the form of minds infected by meme-complexes, software uses software survival machines in the form of hardware.

Conclusion
My hope for the future is that just as the memes domesticated our minds with meme-complexes that brought us the best things in life like art, music, literature, science, and civilization so too will our domestication by software help elevate mankind. For example, I certainly could not have written the postings in this blog without the help of Google – not only for hosting my softwarephysics blog and providing some really first class software to create and maintain it with, but also for providing instant access to all the information in cyberspacetime. I also hope that the technological horizon of our Universe is at least the size of a galaxy, and that the genes, memes, and software on Earth will forge an uneasy alliance to break free of our Solar System and set sail upon the Milky Way in von Neumann probes to explore our galaxy. After all, on the scale of the visible Universe, a von Neumann probe is really just a biological virus with a slightly enhanced operational range. Let us hope that the same can be said of a computer virus.

Comments are welcome at scj333@sbcglobal.net

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