(2000) Needles in the craystack: when machines get sick
Mark Burgess
Orginally published in USENIX ;login: magazine in 2000-2001- Part I: In sickness and in health: the three laws
Usenix ;login: December 2000, Volume 25, Number 8 - Part II: A kind of magic
Usenix ;login: February 2001, Volume 26, Number 1 - Part III: The myth of computer control
Usenix ;login: April 2001, Volume 26, Number 2 - Part IV: Entropy: The Good, the Bad and the Aged
Usenix ;login: June 2001, Volume 26, Number 3 - Part V: In Search of Cleopatra's needles
Usenix ;login: July 2001, Volume 26, Number 4 - Part VI: Clusters and Parallels: ecologies
- Part 7: Diagnosis - the projection of LISA to come?
Usenix ;login: October 2001, Volume 26, Number 6 - Epilogue: A Christmas Carol
Usenix ;login: December 2001, Volume 26, Number 8
Part I: In sickness and in health: the three laws
In the early days of science fiction it was popular to write stories about how computers would go mad and destroy the world. To many who use computers today, this prophesy apparently comes true on a daily basis, at least on a small scale. The fact that computers have taken over the world is, in a compelling sense, clear. Computers pervade our society from the kitchen to the supermarket. They are in our washing machines, our cars, our supermarket checkouts. They are responsible for monitoring and communicating the movements of a global economy which, to a large extent, is stylized by the very computer technology it uses. They are in our televisions as well as our PC's, in video games and wristwatches. Soon we shall be wearing them and most likley even implanting them.
The fact that computers go mad and wreak destruction is also self-evident to anyone who works with them regularly. Computer programs are imperfect, they crash with astonishing regularity, destroying work and disrupting our lives. The word `mad', which is probably more sensational necessary, is perhaps no more than a quaint metaphor, but the basic gist of this fictional vision vision has a wry truth to it.
The invention and proliferation of computers in our world has not merely simplified many difficult and mundane tasks, it has also changed the way society works. In spite of the now comical prediction by IBM's Thomas Watson in 1945, that the world would only need five large computers, today it seems that they are as commonplace as plastic.
The fact that we reply on computers for so many of our daily activities has changed the way we live. E-mail is replacing pen and paper, secretaries are disappearing, we pay for items with plastic cards, we order goods from foreign countries just as easily as we do from the corner shop. We arrange our schedules according to which particular machine we have to wait for, and so on.
Because computer programs have limited capabilities, we often have to adapt ourselves to the software we depend upon. We change our work habits and re-assess our wishes on the basis of what a computer is willing or capabable of doing for us; we even work around faults (bugs) which we know to exist, bending over backwards for the machine. In a subtle but pervasive way, our use of computers controls us every bit as effectively as we are able to control them. In this sense, computers really have taken us over. It is not an evil computer intelligence which controls us, but rather something far more pernicious: we are self-styled slaves to our own almost religious use of The Machine.
Then there is the madness. Computers crash, they amplify small mistakes into huge mistakes, they do not always behave predictably, sometimes they work slowly for no apparent reason. As one popular E-mail signature proclaims: computers allow us to make mistakes faster than any other invention in history. Sometimes they even seem stubborn in their refusal to do what we would like. They produce meaningless answers to apparently sensible questions. Surely the behaviour of something, not entirely in possession of all of its marbles.
But enough of the melodrama. What is this all about? Why do computers not just continue to work like vacuum cleaners or ovens? They are, after all just appliances, marginally more delicate, but machines nonetheless. Why indeed do cars break down, people get sick? Why do plagues upset nature, storms reak havoc? Are there any parallels to be learned from these parallels? Why does anything stop working the way it is supposed to? Does it have to do with foreign invaders? Bacteria and viruses? Things jammed in the works? Bits that fell off? Sabotage by enemies of the state? If so, what are these disruptors and why do they exist? Is there a corresponding gremlin which invades computer systems, causing them to fail? One thing is certain: computer viruses are not the whole story.
In this series of essays, I want to take a broader, more reflective view of what it means to build and maintain our information systems. I mean to show that many of the problems we face in running the world's computer systems are not new, even though we seem to be learning the details now for the first time. As many of my physics colleagues often complain of their research: everything has been done before; every problem has occurred and has usually been solved in some other context. There are lessons to be learned from the past, from analogous situations and also from the writings of scientists and thinkers in many contexts. It is time to revisit these ideas and reflect on their virtues, as we wobble on the springboard of the new millenium, poised to launch forth through our hand-held mobile monoliths and be reborn as masters of it all...or not?
Why should anyone bother to make these connections? There are two reasons for this indulgence: one is that we might actually gain a greater understanding of the specific problems we grapple with on a daily basis and see solutions through a wider perspective. We are creatures of association, and the illusion of understanding is usually enhanced by our ability to appreciate the same idea in several contexts. The other reason is that reading about things we recognize, in a new context can be inspirational and lead us in new directions. "My god, it's full of wildcards!"
Naturally, no one should be looking to copy blindly from analogues in nature or history. Cheats flunk their exams, and shallow comparisons lead us only into blind-alleys. Visionary monoliths are not summoned forth by beating our computers over the chassis with Lucy's favourite thigh-bone (though the sentiment is sometimes compelling); and, whatever Clarke and Kubrick had in mind with their 2001 monolith, it was surely more than just a mobile phone, or a CPU with the pins broken off...but that does not mean that we cannot take a good idea and reinvent it.
Part of the reason that we do not immediately recognize old problems, when they stare us in the face, is that they are embedded in a novel context: wolves in sheeps' clothing, or perhaps electric sheep on our Deckard's lawn, posing as red Herrings. Displaced ideas must be adapted. The key to understanding and solving associative problems is abstraction: to distill the general principles from the specific instances and retain the lessons which they convey. These may then be molded into new forms.
There are two sides to this interaction between humans and computers to be addressed. We would control our computers, and yet our computers control us. We are locked in this loop. Our preferred approach to managing information systems is somewhat haphazard, though only a little more haphazard than our general approach to managing governmental and civic functions, or our daily lives, for that matter. We strive for order, through control, but this control is based on skeletal procedures, often without a sufficient regard for the whole. Usually we wait for failure, if we even plan for it at all, and then attempt to diagnose. At the same time, our practices are defined by the computers we would like to control.
Human dependency on computers is a weakness, which makes us vulnerable to their failures. When a key system fails, the machine stops, it no longer performs its function and the loop is shattered. Not only are humans dependent on computers, but computers are dependent on humans. Recently the dangers of dependency have been considered much more seriously in connection with the possibility of computer warfare. All one needs to do, to paralyse a society, is to cripple its computer systems. We have built a tower of cards, based on fragile machinery, ill-equipped to face even simple threats from the environment. This mutual dependency must be broken if one is to find a more secure relationship with machines.
Interestingly, as is often the case, partial answers have already been explored by people who think up ideas for a living: science fiction writers. During the 1940's, biochemist and science-fiction writer Isaac Asimov began to consider what kind of problems would result from a society dependent on machines. Asimov's machines were robots, mobile computers with great physical strength, some of whom appeared like humans. Asimov's future society was extremely reliant on robots. He quickly realized that machines would have the capacity to do great damage unless they were constrained with a tight leash. Asimov's answer to this problem was to endow automatons with a set of rules which curbed their behaviour and prevented them from harming humans. In a sense, a theoretical immune system for humans against machines. Asimov, and his editor John Campbell Jr, together invented the Three Laws of Robotics. The laws went like this:
- A robot may not injure a human being, or through inaction allow a human being to come to harm.
- A robot must obey the orders given to it by human beings, except where such orders would conflict with the First Law.
- A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
Asimov's laws were supposed to protect humans from complex machinery in unpredictable circumstances. It was clear to Asimov that people could quickly become dependent on machines, and thus there was a need to be able to trust them implicitly. Of course, he also knew that this can never be: no matter what kind of rules one creates, there are always unforeseen circumstances which probe for loopholes in a set of rules, and many of his robot stories were based on the mysteries arising from these loopholes.
The main threat to any system working on a set of programmed instructions is that complexity of its surroundings tests it in every conceivable way, picking at the locks until every door is opened. Sooner or later, the system will break under the pressure. As the character in Jurassic Park says: `nature will find a way'. My rule of thumb is this: when the complexity of its environment exceeds the complexity of a system, the system will not be completely predictable. Nevertheless, a set of rules can clearly greatly reduce the risk of aberrant behaviour in a mechanism.
Apart from protective protocols, like Asimov's laws, which protect quality of service, security against loss of service is easily secured by a strategy which is very familar in Nature: redundancy. ``Redundancy is the last avenue of our survival'', wrote Robert Silverberg, of his post-biowar novel Shadrach in The Furnace, where the lead character is `system administrator' for Genghis Mao's biological system. In the biological world, simple mechanisms, like single celled creatures are not well suited to survival in complex environments, unless they exist in huge numbers. The only strategy a single celled organism has against total and final death is to reproduce very fast and maintain large numbers, before something steps on it. If one is destroyed, there will always be a backup to continue the execution of their simple program: copy thyself. For computer systems, one makes backups of data to prevent loss, multiple servers to secure failover capacity. The general rule is that we use parallelism rather than serial architectures to increase the assurance of delivery. This strategy is particularly important in complex environments, because environments (by their size and nature) exert a higher level of parallism against the system than the system is capable of producing to protect itself.
There are, then, two key strategies which should drive computer management: mechanisms which protect against loss of service, and mechanisms which protect quality of service. The extent to which such mechanisms exist varies. Certainly no off-the-shelf computer systems have such systems, as a part of their basic design. Software and hardware design is obsessed with speed and convenience, not safety and reliability. The Volvo of computer systems has yet to be sold in show-rooms, though it can be put together as a kit, with a little dedication. Since the mid 1990's several researchers, including myself, have argued for (and even built) experimental systems which take on different aspects of this problem.
Computers have come a long way since the punch card looms from which they evolved. In a compelling sense, they are now very much like primitive organisms or societies. To understand why they are so unpredictable, one needs to piece together an understanding of how they work, and the nature of their environments. This is an involved story, but as a piece of commonplace technology, it is part of our cultural heritage and so it has earned the right to a few chapters of explanation. To understand why computers get sick, one first needs to ask why they even work at all. Clearly something which never changes cannot get sick. So the first step is to answer the question: how do computers change? The journey there is not a difficult one but it is surely complex and fascinating.
The next part of this story take us into the realm of our technological development and our attitudes towards it.
Part II: A kind of magic
In the 1960's science writer Arthur C. Clarke came up with a maxim, actually he called it a `law'. He said that any sufficiently advanced technology would appear to us to be indistinguishable from magic. Back in the 1960's, if one identified with that line of thought at all (which usually meant being a fan of science fiction), one could smile wistfully and admire the wisdom of Clarke's acuity. Today though it is almost a platitude. The pace of technological change is so great that what was, for most people, a distant and speculative remark has been transformed into a mundane truism, at least in the developed world. The magic of our own technology is revealed to us on a daily basis.
The magnitude of our accomplishments, however, is overwhelming. The years of research and discovery, the gradual refinement of small things. The putting together of many small accomplishments into larger accomplishments. Standing on the shoulders of earlier giants, we are able to reach even higher to build taller giants and each generation of this evolution carries us forward. Each time we take for granted the technology of the last generation to build something new. Each step seems small, each advance trivial. It is only when we step back and view the whole coherent effort, from beginning to end, that the process seems overwhelming.
Locked in this web of innovation are the answers to many pertinent questions about the present and future of our information systems. For that reason, it is worth exploring the process of development which brought us here. I am not a historian by nature, but, history is nothing if not a data-structure charting the structure of data, or patterns of stuff which brought us to where we are today. Patterns recur and problems manifest themselves repeatedly; our history is a catalogue of only a few common themes.
To really appreciate the nature of our development, we have to allow ourselves to be impressed by common-place things. Take something as simple as a window. Try looking at it, instead of through it, and you will see that a window is a perfect example of the advanced technology which we take for granted. The window was originally just a ventilation hole. The word originates from the Scandinavian `vind-auga' meaning `eye for the wind'. Windows were originally just knocked-out holes, used to ventilate and perhaps illuminate shelters (this was a pre-IKEA design). This illustrates the fact that even technologies as evolved and perfected as the window can have humble beginnings.
The window has been around for centuries in different forms but it has also gone through enormous technological changes: the invention of glass, the technology to make large, smooth, flat plates of it; the extraction of the raw materials, the generation of temperatures required to melt those materials, the containers to hold them while hot. The metal in the frames and the handles, sun reflective technology, heat insulating technology, sound insulating technology, the moulding of the parts. The list is long. All this does not just apply to windows, of course, but to tables and toasters and CD players and televisions, books, buildings and computers.
We switch off feelings of awe and take things for granted most of the time. Without that emotional shield we might be cowering in front household appliances in awe, perhaps not worshipping them, but perhaps not far from it. But is this what we want? The more we feign the triviality of it all, the more we are in danger of losing control and becoming dependent. This process of technological dependency is well underway.
Computers from soup
Computers are information systems. We are also information processing systems. We are orders of magnitude more complex, but by looking at our own problems, we are peering into the future of our computer systems. The biological program is the simplest of all imaginable programs (copy thyself), there are nonetheless important parallels. Our computers are simply a byproduct of our own evolution. Their sicknesses emerge from the same principles that ours do. The fact that humans are the vector by which computer sickness is instigated is neither here nor there: the deeper reason, that sickness can occur at all, is independent of the medium.
In one sense, familiar to Darwinists, all our technology assembled itself. It is the final leg of the well-known process of the evolution of structure. According to the best available evidence, we were once nothing more than chance molecular formations, in a microscopic region of a large puddle: the so-called primæval soup. No one really knows how, but presumably conditions became favourable for some molecules to clump together and replicate, and gradually the statistics of this replication led to inevitable mutation. Mutuation is always provided by a complex and unpredictable environment, messing with the replication program. Errors occur, because the environment intervenes at random with the replicator's task, and these errors get propagated onward in the chain. To cut a long story short, these molecules end up being something like RNA, then later DNA, which have the remarkable property of extremely high fidelity reproduction.
DNA is only a compressed code for protein manufacture. The real information in biological systems lies in the finished proteins. These fold into complex three dimensional structures. In fact, DNA is unstable and only ever reproduces inside the protective bubble of cells. No one can be completely sure how cells first formed, but once a single cell had been formed, it allowed for greater refinement of a delicate procedure. Thereafter, DNA copied itself by copying and dividing cells.
The replication game chanced upon increasingly bizarre and intricate multi-cellular structures: plants and animals. Fortune favoured our development into intelligent mechanisms (just replicators nonetheless) capable of understanding, abstracting and manipulating the world to our own advantage. Our motivations changed from mere replication of biological information, to the replication of abstract information: art, science, imagination, belief and other culture. Much of `intelligent' human behaviour can be understood in a framework of copying ideas and themes from person to person. These are called memes, (`mind genes'). Successful ideas are not necessarily good ideas, but simply those which copy themselves most perniciously: the awful songs that get stuck in our heads, the images which are most seductive. The whole notion of jingles and catch-phrases is based upon this idea: involuntary replication inside human minds. Drive us crazy, but survive at any cost. From this billion year evolutionary process, come humans and all the rest of it, including our technology. It is a kind of meme, not a kind of magic.
The evolution of the human body and mind is perhaps the most complex `technology' ever to arise on the planet; the most bizarre and wondrous stalactite, deposited and mutated by the drip of time, sculpted and refined by the whittling away erosion of natural selection. Tracking this complexity through all its mindless jiggling, is so far beyond our comprehension that some still prefer to believe in a supernatural explanation for our emergence, but the principles are clear, if not the details. By comparison, today's information systems are almost trivial, yet still so complex that it is difficult to comprehend them in every detail. Probably it is only the blatant smoking gun that convinces us that humans made computers and that no supernatural explanation is required to explain them.
Biology is about complex chemical machinery which often fails to live up to expectations. We observe and accept its diseases from bitter experience, and invest great effort into researching solutions. Computer systems are about electronic machinery, of lesser but still formidable complexity. Our attitudes towards them are mixed, but seldom consistent. There are users and there are menders, and which ever side we are on, we need to understand the price that complexity brings.
The sheep look up
We take our windows for granted. Technology is treated as a kind of magic to which we are entitled, but which many do not feel obliged to understand, or forgive. Some feel that, if only things were made better, they would not go wrong. The reality might well be that, as things become more complex and more refined, the wrongs only change in character. They do not go away, because that all-important interaction with the environment remains.
The declining interest in technology related subjects at colleges and universities is no accident. Technology has never been more used or more passé than it is today. The mystery is gone, the vision of a better future, which technology used to symbolize, has been diluted by its perceived triviality. It is just another home comfort, which we can buy in the safe abstraction of a shopping mall, another step into the air-conditioned virtual reality of our contemporary Western theme park. Only computer and mobile communication technologies remain interesting on a wide scale. This seems to be mainly due to the social freedoms and multi-media glamour which they offer, rather than the technical challenges they represent.
But how does society hope to better technologies, or even maintain existing ones, if new generations are not inspired to learn something about them? Sure enough, there will always be a few which remains interested (you are the ones reading this, I expect), but a situation of dependency on a few figures in a society, no matter how well-intentioned they might be, is a dangerous position to place oneself in. Power corrupts. It is a sobering fact that the true driving force behind technological development has not been curiosity, or sense of adventure, but the quest for supremecy.
The evidence of our complacency to technology is everywhere. It began with the best of intentions: to simplify technology for everyday use. Take the development of windowing systems for computers as an example. Windowing systems offer the possibility of no-knowledge execution of a handful of tasks by pushing big buttons. As a form of communication, icons are trivial and hold only limited meaning. There is no grammar for combining primitives into more complex actions, and thus icon users are locked into a rigid framework from which they cannot escape. It is like holding a conversation by semaphore: it is difficult to order a medium-rare steak or complain about the wine with only the flags provided.
Command line interfaces represent the `user-unfriendly' side of computing, but they are grammatical languages where users can express their precise wishes. This is seldom articulated. Even computer science students will press buttons at random for hours rather than spending a few moments to express their wishes in textual form. In other words, they prefer to hit buttons at random, like rats in an experiment, than invest time in learning a form of expression which would empower them on a whole new level. Whether commendable or not, this must be human nature. We should probably fight it.
These are symptoms of a more general malaise: the convenience society We began a cycle of making things easier for non-experts. This is a downward spiral which ends up in system designers under-estimating user abilities. The BBC news service recently had a serious discussion about whether to follow suit in "dumming down the news" to bring it more into line with other world news stations. In Norway, the process has already begun. Flaunting this attitude that expertise is not for normal folks is disturbing. Normal folks don't waste their time with that kind of expert nonsense.
Information is power, as they say. Security is the opposite of convenience. Since computers are likely to hold the keys to power ever more in our future, computer designers and managers need to be aware of this problem and counteract it. If computer systems are to be protected from users, at the same time as giving users what they need, the issues are not only about simplifying things and making everything as easy as possible. They must be understood.
Why do computers get sick? One answer is abuse, neglect and even ignorance. They will we only get sicker if we do not invest a steady effort in researching their weaknesses. Before the existence of medical research, we were slaves to our limited immune systems. Before the discovery of antibiotics, open wounds would often be fatal, broken bones would lead to disability. The story with our computers will be the same, unless we have our wits about us. Fixed defenses might serve in routine cases, but if one stands still, the enemy will gain an advantage. Keeping complex systems in a stable state is an arms race. Nature will find a way.
Part III: The myth of computer control
If apathy could place our technological future in jeopardy, making us slaves rather than masters of our contrivances, then the diametric pitfall is a simple arrogance: the desire to control it all. The absolute control of computers is doomed to failure, for the same reasons that the absolute control of weather and environment are doomed to failure. Such complexity cannot be controlled, only regulated. To understand why and what this means for the administration of our systems, we must leave the relative safety of simplification, and dive into a more turbulent sea, in search of detail. The aim is to emerge with the the skill to surf and swim at any depth.
Imagine opening up a computer and aiming a microscope inside. Imagine turning up the magnification step by step through circuit boards, components, materials and finally atoms and electrons. Clearly the important electrical behaviour of a computer takes place at the level of electrons, so we could in principle understand almost everything about a computer in terms of i) the arrangement of its atoms and ii) the motions of its electrons. Although possible in principle we could never do it in practice. We would never be able to cope with all those details in one go. It would be like trying to explain the trends and goings-on in a city by tracing the movements and interactions of each of its inhabitants over time.
Our brains have limited processing power; we are not good at modelling complex details and extracting long term trends, so we must use a strategy of divide and conquer, by scale. Scaling is a common term in physics, where it has long been understood that an understanding of complex phenomena can, in many cases, be separated into the understanding of different partial-phenomena at different scales or sizes. This was how the magician's illusion worked, in part 2 of this series.
If we return to the microscope anlogy, it seems reasonable to divide the understanding of computers up into scales, which minimize the number of independent levels compounded to create the illusory magic of computers. For instance, there is the level at which electrons move around electric circuits in controlled ways, leading to microscopic switching technology. The transistor, invented by twice Nobel laureate John Bardeen (his second prize was awarded jointly with Cooper and Schrieffer for the BCS theory of superconductivity), was the key development which paved the way to miniaturization of digital technology. Then there is the level at which transistors are combined to make Boolean logic gates, the level at which logic gates are combined to produce processors and memory, then the level at which these are combined into a working computer with devices attached, the level at which computers are combined into networks and so on.
These levels are essentially independent. Each scale adds new information, which does not depend significantly on the details of how the lower levels worked. So, it would not matter to the construction of computers if one replaced transistors with optical switches, the operation of the higher levels would be the same. It might be faster or heavier, so specifics might vary, but the evaluation of answers would not be affected by the changes. This is fortunate, otherwise we would have to redesign computers every time a new switching technology came about. Systems are routinely designed in layers so that components can be exchanged for newer and better ones, without causing turmoil. For instance, think of the OSI network model, or TCP/IP. Telnet works over serial lines, or via TCP/IP over ethernet, or with TCP/IP over fibre optics etc. It is like procedural programming. It is the most important principle in computing.
This principle is applicable in many situations in science. For instance, one does not need to know about quarks in order to describe planetary motion, even though planets are almost entirely made up of quarks. The scale at which quark interactions are important is so small, that the results do not depend on what the quarks do to a hundred decimal places or more. In other words, low level differences can be ignored to a very good approximation.
The most important idea in computing
This type of reductionism is an often misunderstood strategy, even by many scientists. Paradoxically, we tend to claim that we understand something if we know how to reduce it in some way. That is a strange idea! If we can see that it is possible to express something as a sum of smaller building blocks, we feel that it is somehow possible to get a handle on it. This idea is the essence of all hierarchical thinking: directory structure in file systems, process trees and so on. It is all about hiding unnecessary detail in Pandora boxes, to simplify and reveal clarity of structure. As long as we know how to open a black box, we are happy to say that we understand it, at least in principle.
Of course, this reduction is not always possible. There are some prominent counter examples. Quantum mechanics is one: it cannot be reduced into anything else we know about. Quantum mechanics consists of a set of rules for calculating the mechanics of particles at the microscopic level, which work with extraordinary precision. Despite this, no one knows how to explain these rules in terms of anything deeper, and for that reason most of us feel that we do not understand quantum mechanics, and rightly so. Another example is non-linear systems where chaos leads to a mixing of levels, in often unpredictable ways.
But how well does anyone understand anything? The illusion of understanding is, in a sense, proportional to the number of times one can reduce a thing into smaller or more fundamental things. At some point that process has to stop, and we end up with pieces which we can no longer break down. So how deep do we need to go in order to claim to understand something? In fact, most of us are not very demanding. If we were, we would probably not be able to cope with the detail required.
The principle of reductionism is remarkably simple to state. An efficient way to understand any thing is to take it apart, breaking it down into its consitutent parts and to understand how these parts interact to form the whole. Usually this is a complex business and we never manage to complete this program of inquiry. Often the parts themselves are so numerous and so unexpected that their study tends to dominate the discussion and the important information about how they fit together is left out. This has certainly been true of system administration.
If we want to understand a car, we begin by describing its main features and then proceeds by taking it apart and examining each of those parts. Each part which we remove can be broken down into smaller and smaller parts until, in the end, we come down to atoms and their constituents. The basic LEGO pieces. We learn a lot by this reductionist process, but it is crucial to understand that, at every stage of the reduction procedure, we lose a considerable amount of information, namely the information about how to put the parts back together in the right places in order to make a car, i.e. the information at the level above. In the end, the LEGO bricks all look the same, and tell us little about the original construction.
It is the structural information which distinguishes a car from a refrigerator, or a horse from a block of flats. When it comes down to it everything is made up of a few basic constituents. What defines unique entities is the information about how to put them together. Once again, it is about levels of details, where structure does not necessarily depend on the exact nature of the building blocks, to some degree of approximation.
Analogy, approximation and cognition
So is this about approximation? In a sense it is. Computers were not always digital in nature. Before digital electronic computers were built, electrical circuits were constructed to model particular calculations with voltages and currents. These were apparently continuous signals used to evaluate continuous solutions to differential equations. They did not work to a fixed digit floating point accuracy, they worked by analogy and answers were obtained with voltmeters and galvanometers. They were thus referred to as analogue computers, or analogy engines. The word analogue has since entered our vernacular with the meaning `opposite of digital', which is clearly nothing to do with its root.
Understanding the relationship between continuous and digital signals is a crucial step to understanding the implictions of complexity for computer systems. Everything looks more blurry than it is. There is an inherent uncertainty, not only in our senses, but in any measurement, due to the limits of digitization (the resolution) of a scale of measurement. The same uncertainty lies in any digital or digitized process. There are no truly continuous signals. Even detailed sources are only sampled with limited resolution, so their original nature is neither relevant nor determinable.
When we replay a CD we hear continuous music, not digital staccato. The resolution of audio sampling on a CD is greater than the sampling rate of our ears, and thus it is beyond our ability to discern the difference: higher Fourier modes which might otherwise unmask the charade, are not available to our perceptual apparatus and thus we are incapable of knowing more without artificial aids. Even artificial aids have limitations. They might extend the ability to detect greater resolution, but no instrument or physical object can provide infinite detail, for the simple reason that the universe itself has finite detail.
A CD recording is but a simulacrum of an original physical (musical) process: wasn't that orginal process continuous, with infinite detail? (Hi-Fi buffs have sometimes used this argument in favour of LP's over CD's). The answer is no: the bow of the violin is a rough surface which plucks the string very fast, giving only the illusion of continuous play. The grains in the vinyl of an LP imply a maximum resolution that can be represented in that medium, beyond that is unpredictable noise. At some point (for whatever reason) one comes down to a minimum size for representing information: single atoms, for instance, probably represent the smallest units one can use to represent information with any fidelity.
Our sensory-cognitive apparatus has a great influence on the way we go about analyzing information, and `understanding' it. So much so that its prejudices are frequently fooled by optical illusions, Rorschach tests, blurry images, colour blindness, Martian canals etc etc. Our desire to see patterns and to fill in gaps, coupled with the experience that a closer look reveals more detail, builds a tower of assumptions about how things behave. We are seldom asked, by nature, to examine the limits or consequences of digitization, but when analyzing scientifically, we are obliged to explore these consequences.
As humans, we think and assign meaning in digital terms: either we coarsely classify shades (blue is still blue, no matter how light or dark, turquoise is still blue-green, no matter what mixture), or we enumerate classes (like red, green, blue, with arbitrary shade boundaries). In spite of this, we still maintain the illusion of continuous change, and we describe it mathematically as the limit of a digital process, abhoring the discontinuous in favour of smoothly changing lines.
Continuous representation of information is a thorn in the side for pattern recognition. True pattern recognition can only be achieved for a digitial representation and the same is therefore true of computer control, since the elements of control are digital instructions. When two strings of digits are the same, a match is found. We can match any kind of blue, only because the digital concept of blue represents a whole range of colours. But the range of possible blues means that there is an uncertainty in the meaning of `blue'. It is a class of finite width. When a digitization is very detailed, i.e. approaching the continuous, it is not always practically possible to distinguish every digit of data. Similarly it is not practical to issue very complex instructions at the microscopic level.
Analogue and digital: some information theory
The study of information began in the 1930's and 1940's by mathematicians such as Church, Turing, Von Neumann and Shannon. What we call information theory today was largely worked out by Claude Shannon (of Bell Labs) and published in 1949 under the title The Mathematical Theory Of Communication. He defined the mathematical measure of information and devised many of the core theorems used in information theory today.
Information theory is about the representation (manner of storage), interpretation and transmission of patterns of data, i.e. patterns made up of different kinds of `something' and `nothing'. We attach meaning to these patterns and call the result information. Patterns of data are mainly of interest when they are transmitted from a source to a receiver: e.g.,
- Text read from page to brain.
- Morse code sent by telegraph or by lantern.
- Speech transmitted acoustically or by telephony.
- Copy data from hard-disk to memory.
- Copy data from memory to screen.
- Copy DNA using RNA within a cell.
In each case, a pattern is transferred from one representation to another. Information is fundamentally about representation. It is the limitations implied by a given representation which form the substance of information theory. Some of the issues one has to contend with are:
- Distinguishing patterns of `something' and `nothing'.
- Perhaps distinguishing different kinds of `something'. (Classification)
- Space-time coordinates and units. (Is a long beep the same as a short beep? Quantization/digitization)
- The meaning of redundancy and repetition in a signal.
To build a more precise picture of what information is, we can begin with a signal f(t,x,..), of unknown detail, which is a function or field which changes in time or space. The signal is really a just pattern formed by a disturbance in a physical medium. Our everyday experience leads us to believe that there are two types of signal f(s):
- Analogue or continuous functions f(t).
- Digital or discontinuous (step) functions.
In order to say anything about the signal, one has to map it out by placing it on a discrete grid of coordinates. At some arbitrary level, one decides not to subdivide space-time any further and one reaches a limit of resolution.
Information can only be defined relative to such a set of coordinates since it is the only means one has of describing change. Let us begin by assuming that the detail in the signal is greater than the resolution of the grid. We do the following:
- Divide up the time axis into steps of equal width dt. Here we shall look at an interval of time from t=0 to t=N dt, for some N. \item Divide up the f-axis into C classes Fi = [Fi-,Fi+], which touch such that Fi+=Fi+1-.
Digitization means that, whenever the function f(t) is mostly inside a cell Fi, its value is simply represented by the cell. We have compressed the detail in the square region Fi into a single representative value i, over an interval of time.
There are good digitizations and bad digitizations (see figures 2,3,4). Nyquist's law tells us that the interval widths need to the half the width of the `finest change' in the signal. In Fourier language, the sampling rate must be twice that of the greatest frequency we wish to resolve. This is why CD players sample at 44.1 kHz and DAT samples at 48kHz: the limit of human hearing is about 20kHz when we are young, and falls off to about 12kHz as we grow old.
The digits Fi are the `atomic' units (the LEGO bricks) of information: they are a strict model for representing change. If C=2, we have binary diggits {F1,F2} = {0,1} etc, or bits.
God is a pile of bricks but the devil is a puddle of soup
The reality of continuous data is a myth, because the idea of precise values is a myth. We sample or measure in finite elements, which have a finite size and thus an intrinsic uncertainty.
You might think: but mathematical curves have precise values. If we plot a curve of system behaviour, then we can sample with unlimited accuracy. This is wrong. Naturally, one can compress data into a few parameters, if the whole story is known for all time, e.g. y=sin(x). Computers are not like this, because they are moved by unpredictable environmental influences.
Floating point representations can only calculate with limited accuracy; analogue computers were only true representations of the calculations they were built to model, within certain tolerances. Can we ever achieve complete accuracy? The answer is no. No non-integer value can be measured with unlimited accuracy, thus no non-integer value can be fed into a computer with total accuracy, hence no exact answer can be computed, even if the computer has infinite information resolution (which no computer has). In short, once we stray from the solid world of integers, everything is an approximation. This is the core realization of experimental science, and it is the fact which has implications for control of computers.
Digitization has consequences for classification and thus for system state. A digital representation is good enough to represent any state, but only within a certain tolerance. A digitization of fixed resolution implies an intrinsic uncertainty. Trying to control computers with simple push-button commands is like trying to counteract noise with single tone filters. The amount of information is incommensurate.
In the mythological realm of truth and uncertainty, one might say that God is digital and the devil is continuous. Absolute truth and clarity can only be determined for discrete sets, at a fixed scale. If one is forced to deal with continuously varying quantities, or averages, then hellfire abounds in the uncertainties of an arbitrary scheme of measurement (the measuing stick for comparisons). That is the reason why anomaly detection and pattern recognition are hard. One cannot fail to have enormous respect for the brain as a processing device: it is fantastically successful at pattern recognition, better than any simple man-made algorithm.
There is one more twist which may turn out to be important in the quest to understand computer system behaviour. Mathematically, a separation of scales is often possible only because the scales couple linearly. Non-linearity is a concept which has been adopted from physics into common language, where it is loosely used to convey complexity. It occurs through dependency; a dependency is a strong coupling between parts of the system.
In a non-linear environment, even small changes can resonate with large consequences. This idea was made popular by the notion of the butterfly effect, where the fantastical flapping of the wings of a butterfly in Japan could lead to equally legendary hurricanes in Florida (weather is non-linear fluid dynamics). In other words, in non-linear systems, it is difficult to predict the outcome of small perturbations. Non-linear amplification tends to mix scales together, which is why non-linear systems are difficult to understand (one often speaks of `chaos').
Digitization is clearly at the heart of computer behaviour and measurement. We can be more precise about describing it and measuring its effects. The ability to discern state is clearly dependent on arbitrary choices. There is an inevitable non-determinism (probability rather than certainty) in any system immersed in an environment. We need to recognize this and adopt strategies apropriately.
Computer ecology means computer immunology
Why is it not possible to control computers? The reason is simply that they are not predictable. We grow them in the laboratory, with simple push buttons, but we raise them in the wild, where environment pokes and prods them with far greater resolution. Unless we place systems in straightjackets, the influences of environment take their toll. Computer behaviour is more intricate than any set of controlling commands we can practically build. This is an imbalance which provides the explanation for the tendency of systems to disobey their controls. In order to compete with the complexity of the environment, one needs continuous measurement and regulative forces. Competition is all that is left of strategy once digitization is suppressed.
Machines get sick when this regulation fails. Sometimes regulation fails because a foreign element (virus) invades the system. Actually, it is not really important whether the element is foreign or not: the invading element might be `self' or `non-self'. What is important is whether its influence is predictable in relation to the average state of the system. Will it lead to an instability? Will it drive the autonomous system in a new direction, different from the intended one? Sickness is not about right and wrong. Bacteria and viruses are not failures of a system, they are simply unusual input which alters its direction.
Inherent weakness is a precarious strategy for building technology, yet we build simple things for complex jobs. Fragility is no strategy for success. What is it that makes a system resilient and fit for its purpose? That it is under held rigid control, that it contributes to a larger whole, or perhaps that it endures under tough conditions? There are many answers. Much of the work in system administration has been about looking for simple answers to this complex problem, but we need to think of computers more as wildlife in a changing ecology. We need to embrace the instrinsic incertainties faced when placing coarse, digital animals into complex, intricate environments.
Part IV: Entropy: The Good, the Bad and the Aged
You and I, and everyone on the planet are doomed to die because of a memory leak in the human genome. For better or for worse, whether bug or a feature, DNA contains a sequence of repeated molecular material called telomeres which is used in the unzipping and replication of the DNA strand. Each time DNA is replicated, one of these telomeres is used up and does not get transferred to the copy. Finally, after fifty or so forks, all the telomeres have been used up and the cell replication program crashes. It is a classic case of unlimited use of limited resources.
Enzyme telomerase is a garbage collection agent which returns this resource to the resource pool. In the growing foetus, it is hard at work, rejuvinating the stem cells which provide the clay for the developing body. But in time its ceases to be produced and the telometer starts clocking up our fare.
Runaway resource usage is nothing to write home about. It is happening all around us. Until the recent trend for recycling made a small dent on a huge problem, most of the Earth's resources were harvested and disposed of in such a way that they were non-recoverable. We think little about waste. We consume and we abandon. What we abandon is even toxic to the system: fuel emissions, for example, produce poisonous gases, upset the greenhouse balance and even the protective ozone balance. Klondyke Pete with his trusty mule searched the hills for years to dig up a few grams of gold, only for future generations to spread it thinly over electronic devices, which are now being buried under piles of dirt, when we are bored with them---and in such a way that the gold can never be recovered. Burying nuclear waste might frighten some, but burying precious resources is a more certain threat to our future.
With computers we see the same phenomenon in the disposing of hardware, the circuitry and the cases, but also with the resources of the software: disk space is used wastefully (lack of tidying, growing log files), memory leaks in buggy software (never frees RAM or disk), creeping featurism in software (placing ever greater demands on resources). DOS attacks and spam take advantage of the limitation of finite resources and show us the folly of presumption. The idea that we should watch our consumption of precious resources is not a popular paradigm in contemporary western society, but it will be a necessary one.
Environmentally conscious observers have long pointed out the negative effects on quality of environment due to resource abuse, but it is less common to point out the steady decline of our resource pool. It is not just fossil fuels, but metals, forests, biodiversity itself which are at risk. This familiar problem has always existed and will always exist, because resources are inevitably finite.
Availability of resources has been discussed in many contexts, but all its examples are essentially symptomatic of a fundamental phenomenon: the build up of useless information. In the safe abstraction of physics, this phenomenon acquired the name of entropy. The concept was orginally used in the study of ideal gases, but it was later extended to many other phenomena, as general principles were understood. It was many years before the full meaning of entropy was revealed. Many of us have acquired a mythological understanding of entropy, through accounts of popular physics, as being the expression of what we all know in our guts: that everything eventually goes to hell. Disorder increases. Things break down. We grow old and fall apart.
Entropy: information's lost+found
Although there is nothing wrong with the essence of this mythological entropy, it is imprecise and doesn't help us to understand why resource consumption has inevitable consequences, nor what it might have to do with computers. Entropy is both a useful measure, and its increase is an important principle, so its understanding is key to all science. What makes entropy a poorly understood concept is its subtlety. The exuberant mathematician John Von Neumann is reputed to have told Claude Shannon, the founder of information theory, that he should call his quantity H informational entropy, because it would give him a great advantage at conferences where no one really understood what entropy was anyway.
Before statistical methods were introduced by Boltzmann and others, entropy was defined to be the amount of energy in a system which is unavailable for conversion into useful work, i.e. the amount of resources which are already reduced to waste. This had a clear meaning to the designers of steam engines and cooling towers, but did not seem to have much meaning to mathematics. Physicists like Boltzmann and Brillouin, and later Shannon made the idea of entropy gradually more precise so that, today, entropy has a precise definition, based on the idea of digitization---discussed in the last part of this series. The definition turns out to encompass the old physical idea of entropy as unusable resources at the same time as providing a microscopic picture of its meaning.
Think of a digitized signal over time. At each time interval, the signal is sampled, and the value measured is one of a number of classes or digits C, so that a changing signal is classified into a sequence of digits. Over time, we can count the occurrences of each digit. If the number of each type i is ni, and the total number is N, we can speak of the probability of measuring each type of digit, since measurement started. It is just the fraction of all the digits in each class pi=ni/N. Shannon, then showed that the entropy could be defined by
H = - p1 log2 p1 - p2 log2 p2 ...- pC log2 pC
where the base 2 logarithm is used so that the measurement turns out to be measured in `bits'. This quantity has many deep and useful properties, which we don't have to go into here. Shannon showed that the quantity H was a measure of the amount of information in the original signal, in the sense that it measured the amount of its variation. He also showed that it is a lower limit on the length of an equivalent message (in bits) to which a signal can be compressed.
The scale of entropy tells us about the distribution of numbers of digits. It has a minimum value of zero if all of the pi are zero except for one, i.e. if all of the signal lies in the same class, or is composed of the same single digit for all time. "AAAAAAAAA..." This corresponds to a minimum amount of information, or a maximum amount of order in the signal. It has a maximum value if all of the pi are the same. This means that the digitized signal wanders all over the possible classes evenly and thus contains the maximum amount of variation, or information, i.e. a very disordered signal. "QWERTYUIOPASD.."
The entropy is just a number: it does not `remember' the sequence of events which led to the value describing state of the system, because it involves an implicit averaging over time (we cannot recover a sequences of changes from a single number), but it does record how much average information was present in the sequence since measurements began.
As a metaphor, entropy is discussed with three distinct interpretations: gradual degradation (the ugly), total information content (the good), and loss of order (the bad). Let's consider these in turn.
- Ugly: this interpretation is based on the assumption that there are many random changes in a system (due to unexpected external factors, like users, for instance), which cause the measured signal (or state of the system) to gradually wander randomly over all possible states. Entropy will tend to increase due to random influence from the environment (noise). This corresponds to a gradual degradation from its state at the initial time. This interpretation comes from physics and is perhaps more appropriate in physics than in computer science, because nature has more hidden complexity than computers, but still it carries some truth because users introduce a lot of randomness into computer systems.
- Good: information can only be coded into a signal by variation, so the greater the variation, the greater the amount of information which it could contain. Information is a good thing, some would say, but this view does not have any prejudice about what kind of information is being coded.
- Bad: if the point of the exercise is to keep a system in an ordered state, then clearly variation is interpreted as a loss of order, or a spreading out, which is a bad thing. If a system starts out in a state which is considered to be ordered, then since the number of ways it can be disordered is far greater than the number of ways it can be in its ordered state, by sheer virtue of numbers it is clear that it is more likely to degenerate into disorder than remain ordered.
It is not hard to see that these viewpoints all amount to the same thing. It is simply a matter of interpretation: whether we consider information to be good or bad, wanted or unwanted: change is information, and information requires change. Our prejudicial values might tend to favour an interpretation where a noisy radio transmission contains less information than a clear signal, but that is not objectively true.
Noise is indeed information, in fact it is very rich information. It contains information about all the unrelated things which are happening in the environment. It is not desired information, but it is information. Much of the confusion about entropy comes from confusing information with meaning. We cannot derive meaning from noise, because it contains too much information, without a context to decipher it. Meaning is found by restricting and isolating information strings and attaching significance to them, with context. It is about looking for order in chaos, i.e. a subset of the total information.
In fact, at the deepest level, the meaning of entropy or information is simple: when you put the same labels on a whole bunch of objects, you can't tell the difference between them anymore. That means you can shuffle them however you like, and you won't be able to reverse the process. Entropy grows when distinctions lose their meaning and the system spreads into every possible configuration. Entropy is reduced when only one of many possibilties is prevalent. What does this have to do with forgetfulness and wastefulness? There are two principles at work.
The first is grouping by digitization (ignoring detail) involves reducing the number of classes or distinctions into fewer, larger groups called digits. By assimilating individual classes into collective groups, the number of types of digits is fewer, but the numbers of each type increase and thus the entropy is smaller. This, of course, is the reason for our current obsession with the digital: digital signals are more stable than continuous signals, because the difference between 1 and 0 is coarse and robust, where as continuous (analogue) signals are sensitive to every little variation. The second principle is about repeated occurrences of the same type of digit. One digit in the same class is as good as the next, and this means that repeated occurrences yield no more information than can be gleaned from counting. Similarity and distinction can be judged by many criteria and this is where the subtlety arises. When we measure basic resources in terms of abstract definitions (car, computer, sector, variable etc) there is often a number of overlapping alternative interpretations, which means the entropy of one abstract classification is different to that of a different abtract classification.
Consider an example: fragmentation of resources canbe discussed in terms of entropy. In memory management, one region of memory is as good as the next and thus it can be used and reused freely. The random way in which allocation and de-allocation of memory occurs, leads to a fragmented array of usage. As memory is freed, holes appear amidst blocks of used memory; these are available for reuse, provided there is enough of it for the task at hand. What tends to happen, however, is that memory is allocated and de-allocated in random amounts, which leaves patches of random sizes, some of which are too small to be reused. Eventually, there is so much randomization of gap size and usage that the memory is of little use. This is an increase of entropy.
Several small patches are not the same as one large patch. There is fragmentation of memory, or wasted resources. One solution is to defragment, or shunt all of the allocated memory together, to close the gaps, leaving one large contiguous pool of resources. This is expensive to do all the time. Another solution is quantization of the resources into fixed size containers. By making memory blocks of a fixed size (e.g. pages or sectors), recycling of old resources is made easier. If every unit of information is allocated in fixed amounts of the same size, then any new unit will slot nicely into an old hole, and nothing will go to waste.
This is essentially the principle of car parks. Imagine a makeshift car park in a yard. As new cars come and park, they park at random, leaving random gaps with a distribution of sizes (non-zero entropy). New cars may or may not fit into these gaps. There is disorder and this ends up in wastefulness. The lack of discipline soon means that the random gaps are all mixed up in a form which means that they cannot be put to useful work. The solution to this problem is to buy a can of paint and mark out digital parking spaces. This means that the use of space is now standardized: all the spaces are placed into one size/space category (zero entropy).
The reason for dividing memory up into pages and disks into sectors is precisely to lower the entropy, by placing all the spaces into the same class, one has zero entropy and less wastage. C's union construction seems like an oddball data-type, until one understands fragmentation; then it is clear that it was intended for the purpose of making standard containers.
Standardization of resource transactions is a feature which allows for an efficient use of memory, but the down side of this is that it results in increased difficulty of location. Since the containers all look the same, we have to go and open every one to see what is inside. In order to keep track of the data stored, different labels have to be coded into them which distinguish them from one another. If these labels are ordered in a simple structure, this is easy. But if they are spread at random, the search time required to recover those resources begins to increase. This is also entropy at work, but now entropy of the physical distribution of data, rather than the size distribution. These problems haunt everyone who designs computer storage.
The accumulated entropy of a change, is a measure of the amount of work which would be needed to remember how the change was made. It is therefore also that amount of information which is required to undo a change. In the car parking example, it was a measure of the amount of resources which were lost because of disorder. In sector fragmentation it is related to the average seek time. Entropy of the universe is a measure of the amount of energy which is evenly spread and therefore cannot be used to do work. We begin to see a pattern of principle: inefficient resource usage due to the variability of change with respect to our own classification scheme. Entropy reflects these qualities and is often used as a compact way of describing them. It is not essential, but it is precise and lends a unifying idea to the notion of order and disorder.
Rendezvous with Ram
In classifying data we coarse grain, or reduce resolution. This means actively forgetting, or discarding the details. Is this forgetfulness deadly or life-giving?
If we recycle the old, we use less resources but we are prevented undoing changes and going back. The earlier state of order is lost forever to change, by erasure. We could choose to remember every change, accumulate every bit of data, keep the packaging from everything we buy, keep all of the garbage, in which case we drown in our own waste. This is not a sustainable option, but it is the price of posterity.
Forgetting the past is an important principle. In a state of equilibrium, the past is unimportant. As long as things are chugging along the same with no prospect of change, it doesn't matter how that condition arose. Even in periods of change, the distant past is less important than the recent past. Imagine how insane we would be if we we're unable to forget. One theory of dreaming was based on the idea that dreams are used for short-term memory erasure, collating and integrating with long term experience.
In Star Trek, TNG it was suggested that the android Data never forgets. That being the case, one might ask how-come he hasn't exploded already? Where do all those memories go? If elephants never forget, no wonder they are so big! Taxation has long been a way of opposing the accumulation of material wealth or potential resources (money). Throughout the centuries, all manners of scheme have been introduced in order to measure that wealth: hearth (fireplace) tax, window tax, poll tax, income tax, road toll and entrance fees. After income tax was introduced, records in the UK have been kept on all citizens activities, for years at a time, Although there is an uncanny feeling that tax inspectors might pursue them to the grave for lost revenue, replacing the accumulation of wealth with an accumulation of records. In fact, after twelve years, tax records are destroyed, in the UK.
This is a sliding window model, rather than a fully cumulative model.
Queuing and entropy
Memory is about recording patterns in space, but entropy of spatial classification is not the only way that resources get used up. Another way is through entropy of time resources. Everyone is familiar with the problem of scheduling time to different tasks. Interruption is the system administrator's lot. As one reader commented to me, his company often insists: drop what you are doing and do this instead! It results in fragmentation of process: only a small piece of each task gets done. In computer systems it is algorthmic complexity which is responsible for sharing time amongst different tasks. Context switching is the algorithm multi-tasking computers use for sharing time strictly between different tasks. This sharing of time implies some kind of queueing with all its attendant problems: starvation and priorities. Context switching places tasks in a round-robin queue, in which the system goes through each task and spends a little time on it, by assigning it to a CPU. This is an efficient way of getting jobs done, because the number of objects or classes is approximately constant, and thus the parking lot principle applies to the time fragments. It does not work if the number of jobs grows out of control. But if one simply piles new jobs on top of one another, then none of the jobs will get finished. Anyone who has played strategy games like Risk knows that it does not pay to spread one's army of resources too thinly.
This is much the same problem that is considered in traffic analysis (cars and network packets). At a junction, cars or packets are arriving at a certain rate. The junction allows a certain number to flow through from each adjoining route, but if the junction capacity is too slow, then the entropy of the total resources grows to infinity because the number of different digits (cars or packets) is growing. No algorithm can solve this problem, because it has to focus on smaller and smaller parts of the whole. This is the essence of the expression a watched kettle never boils taken to extremes. Spamming or denial of service attacks succeed because resources are used up without replacement. This leads to `starvation' of time resources and/or memory resources.
It was once suggested to me that cars should not have to drive more slowly on the motorway, when lanes are closed for repair: according to hydrodynamics, everyone should drive much faster when they pass through the constricted channel, to keep up the flow. Unfortunately, unlike ideal fluids, cars do not have purely elastic collisions. Queues build up because there is a limit to how fast transactions can be expedited by a communications channel.
Reversible health and its escape velocity
The message I have been underlining above is that there is a fundamental problem where limited resources are involved. The problem is that reversibility (the ability to undo) depends on information stored, but that information stored is information lost in terms of resources. There is an exception to this idea however. Some corrections occur in spite of no log being made.
What goes up must come down. Common colds and other mild diseases are not fatal to otherwise healthy individuals. The pinball will end up in its firing slot. A compass always points to magnetic North. Moths toward a flame. Adults prefer to look younger. Follow the light at the end of the tunnel. Ideals.
If you drop a ball to the ground, it does not usually land at your feet and remain there: the ground is seldom flat, so it begins to roll downhill until it finds a suitable local minimum. It tries to minimize its potential energy under the incentive of gravitation. Now energy is just a fictitious book-keeping parameter which keeps track of how much it cost to lift the ball up earlier and how much will be repaid by letting it roll down again. Like entropy, energy is a summary of information about how resources are distributed in the face of an unevenness. In thermodynamics, energy U and entropy S appear in relationships with the opposite sign:
dF = dU - TdS
F is the free energy, or the amount of energy available for conversion into useful work, while U is the total energy and S is the entropy (the amount of energy which is spread about in a useless form). T is the temperature, which acts as an essentially irrelevant integrating factor for the entropy in this formulation.
A potential is an anti-entropy device. It makes a difference, by weighting the possibilities. It tips the balance from pure randomness, in favour of one or few possibilities or ideals. Think of it as a subsidy, according to some accounting principle, which makes certain configurations cheaper and therefore more likely. A potential can guide us into right or wrong, healthy or unhealthy states if it is chosen appropriately. While entropy is simply a result of statistical likelihood (deviation from ideal due to random change), a potential actually makes a choice.
Potentials are all around us. Indeed they are the only thing that make the world an interesting place. Without these constraints on behaviour, the Earth would not go around the sun, indeed it would never have formed. The universe would just be a bad tasting soup.
Emotions are potentials which guide animal behavour and help us to survive. I have often wondered why the writers of Star Trek made such an issue about why the android Data supposedly has no emotions. For an android without emotions, he exhibits constantly emotional behaviour. He is motivated, makes decisions, shows complex `state' behaviour, worries about friends and has `ethical subroutines'. The fact that he does not have much of a sense of humour could just as well mean that he originated from somewhere in Scandinavia (this would perhaps explain the pale skin too).
Probably, complex animals could not develop adaptive behaviour (intelligence) without emotions. Whatever we call complex state information, it amounts to an emotional condition. Emotions may have a regulatory function, or a motivational function. They provide a potential landscape which drives us in particular directions, at different times. They alter the path of least resistance by enticing us to roll into their local minima. It's pinball with our heads.
There is probably no other way of building complex adaptive behaviour than through this kind of internal condition. We think of our emotions as being fairly coarse: happy, sad, depressed, aroused etc. but in fact, they have complex shades. We just don't have names for them, because as was noted in the last issue, we digitize.
Reversal of state can be accomplished without memory of the details, if there is an independent notion of what ideal state is: a potential well, like an emotional context, driving the system towards some tempting goal. That is because a potential curves the pathways and effectively makes them distinguishable from one another, labelling them with the value of the potential function at every point. Health is such a state: a complex multifaceted state which whose potential is implemented in terms of a dynamical immune system rather than a static force. Ecologies and societies also have emergent goals and preferences. These represent a highly compressed form of information, which perhaps summarizes a great deal of complexity, just as a curve through a set of points approximates possibly more complex behaviour.
If one could make a computer's ideal condition, its path of least resistance, how simple it would be to maintain its stability. Usually, it's not that simple however. The playing field is rather flat, and armies battle for their position. It is as though, hoards of barbaric changes are trying to escape into the system, and administrators represent the forces of law and order, trying to annex them. Neither one has any particular advantage other than surprise, unless the enemy could be placed in a pit.
Computer systems remain healthy and alive when they recycle their resources and do not drift from their ideal state. This was the idea behind cfengine when I started writing it eight years ago. The ideal computer state is decided by system policy, and this weights the probabilities pn so that randomness favours a part of the good, rather than the bad or the ugly. Although a potential can only guide the behaviour on average (there will always be some escape velocity which will allow a system to escape its bounds), the likelihood of its long-term survival, in a world of limited resources, can only be increased by compressing complex information into simple potentials. This was the message of cfengine and the message of my papers at LISA 1998 and 2000. Now all we need is to design the pin-ball table.
Part V: In Search of Cleopatra's needles
During his fifty or so year reign around 1500 B.C., the Pharaoh Thothmes III saw erected two seventy foot columns, before the great temple of Heliopolis, near what is today Cairo. These two exclamatory masts were powerful symbols of the Egyptian spiritual and technological supremecy, singular and immutable signals, in contrast with North Africa's seething, inconstant desert sands. For almost three and a half thousand years, they adorned the entrance to the impressive temple as a symbolic gateway, with little competition from their surroundings.
The first of the needles changed hands as a gift to the British people, in 1819 in recognition of Nelson's Victory over the French fleet, at the Battle of the Nile in 1798. An odd gift perhaps, a lump of stone so heavy that it took years even to muster the effort to move it---but the significance lay more in its shape than its composition. The symbolic gesture was repeated for the United States in 1881, when the Rhedive of Egypt, hoping to stimulate economic investment in his country, gave the twin monument to the city of New York. Since then, the obelisks have been emulated in monuments of several large cities, including Paris and Washington. They have nothing at all to do with Cleopatra (preceding her by some 1500 years), nor are they made of any valuable substance, but their singularity of form conveys a powerful symbolism which is recognized by all cultures.
Symbolism is at the very root of our being. It is about the attachment of meaning to patterns (patterns of material or of behaviour). It is an seemingly irrational phenomenon, not unique to humans, but quite possibly the very essence of our intelligence. Symbolism is interesting because it underlines an important dichotomy: the difference between information and meaning.
In the last part of this series we met the three horseman of entropy: the good, the bad and the ugly. Information (entropy) has three interpretations: the good (that variation is information), the bad (that variation hence information brings uncertainty) and the ugly (that information tends to increase with and result in degenerative aging, or disorder).
The essence of these interpretations is that information and meaning are two very different things. Indeed, too much information is simply noise. Imagine a television from which the antenna has been removed. The screen is a speckled swarm of dots, devoid of any obvious meaning. However, it is not devoid of information. On the contrary, the length of a message you would have to send to a friend, so that he or she could reproduce the precise picture, would have to be very great indeed. The point is not that there is little information, but that there is so much information that it is impossible to find any meaning in it. If one could trace the effect back to its many causes, one would find the history of colliding particles in the early universe which led to today's cosmic background radiation. All that information is represented on our television screens, but the essential connection from cause to effect is a little more than we are willing to grasp, or care about.
Failing the half-closed-eye test
It is necessary to limit information in order to attach meaning. Symbolism is about attaching meaning to limited lumps of information. Lighthouses, totem poles, monuments, company logos and even icons of the natural world, such as mountains, are all simple statements, with very low entropy: concentrated powerful signals which are easily seen against their surrounding environments. The more complex a message is, the more analysis it requires and the harder it is to discern its meaning.
The importance of such strong signals is not just symbolic, rather the opposite: the reason they have symbolic significance is because they are effective competition with their surroundings. Competition is not a word normally used in Computer Science, certainly not information theory: we are used to the relative certainty of propositions and logic, not the to the bullying and submission of the boxing ring; but competition is crucial concept whenever systems interact.
This has broad ramifications for information. Strong signals have a powerful effect on the environment. Conversely, too much information or meaning becomes garbage. It is indestinguishable from no information. Indeed, the whole concept of `renormalization' in science is about trimming away the noise tp see what is left. If every signal is equally loud, the result is just loud noise.
Look at the web pages of many ISPs, for instance, and one finds a seething jumble of signals, from advertisements to links, to imagery, to text and colour -- not unlike the pornographic neon jumble of urban market districts. If one half closes one's eyes and looks at a page of information, the immediate impact of its layout and any strong symbols is all that can be seen. Today, multimedia messages assail us from every angle, detracting from overall impact of any one part. Commerical television is perhaps the worst example in some countries (especially the US), where invasion by commercials, rapid cuts, overlaid text information, unnatural emphasis of voice, inappropriate music and never a second of silence, pollute any message being conveyed with toxic irrelevancy.
To make a garbage heap, one only needs to collect a sufficient number of individually meaningful things and put them all together. There is a reason why Washington monument (another obelisk) is used as a symbol of strength and unity, rather than a haphazard slum or shanty town, where there is much more information. There is a reason why Big Ben in London is well known; the Vigeland monument in Oslo; the Eiffel Tower in Paris, the Statue of Liberty in New York. These are strong signals, dominating their environments.
Today, we are constantly eroding the meaning of symbols by abusing them out of context. Think of mobile phones which now spam us with well-known music, rather the low-info bell, or imagine the Eiffel Tower in the Amazon rain-forest. Such loss of context demeans the significance of symbols, creating garbage out of art.
Understanding the significance of mixed signals is a subtle business, in fact it is one of the perpetually unsolved problems which demands our attention. Part IV of this series was about how to use information maximally, by limiting and structuring it; it was also about the fundamental limitations incurred when information is limited for the purpose of ordering. That discussion provided a mapping from cause to effect, and showed the limits incurred on going back the other way.
But what about this opposite direction? Separating signal from noise is much harder. Going from observed effect to the possibly many causes is a much harder problem, because summarial effect is often a mixture of many causes (a many to one mapping), and the combination is not necessarily a linear superposition. Yet this problem is clearly at the heart of all diagnostics, fault analysis, intrusion detection and performance tuning. What can we hope to find out from observations?
"Imagination is more important than knowledge"
We take many complex things around us for granted. For instance, according to statistics textbooks, coin tosses and rolled dice are considered random events. Is this true? A coin has only two sides, it is circular: the simplest shape possible in two dimensions. A die is scarely more complicted. Isn't it possible to predict the outcome? How hard could it be?
What we know is that, if we do toss coins or dice, the distribution of results, over many throws, seems pretty random. The reason is, of course, only that we can't be bothered to figure it out. It is not all that difficult, in principle to predict the outcome. We know Newton's laws, we know about gravity, we know about geometry. So what's so hard? The answer is: everything else -- the environment. The environment (fingers, the table, floor, air, height etc) comprises a bunch of variables which are quite complicated. Since we are lazy, and the problem of coin tossing is not the least bit interesting, we pretend we don't know how to do it and call the result "random". So random means "other variables" which we don't account for. It turns out that, when we get down to quantum mechanics, and the sub-atomic, the world turns out to be unpredictable for completely unknown reasons, but for most things, random means "too complicated to really analyze". In a coin toss, we classify all of the complex variables into just two outcomes -- a many to two mapping.
If we want to know what causes the result, it is not possible to extract information about all of those causal variables just from the two outcomes. One cannot reverse a many to few mapping. Lost detail is gone forever.
Statistics was invented in order to get something out of situations like this. Statistics says: "Even though we can't reasonably analyze some problem in complete detail, we can still try to say something about them." The usual way that statistics is presented is rather obtuse, and even a little dishonest. The idea is that we go out and measure a bunch of stuff in some problem and plot the outcomes in some way. Then we try to fit some off-the-shelf probability model (Gaussian, Poisson, Parot..etc) and work out a bunch of standard things. That approach is a little bit like trying to say something about human behaviour by matching hairstyles.
In order to use statistics meaningfully, we need a model of what causes the the results: a hypothesis which can be tested. That means we essentially have to guess how the mapping from many causes to few results works. From such a model, one can then work out the consequences and see whether they match observation. This is how science is done. Einstein, always good for a quote, said that "imagination is more important than knowledge". What he meant is that, to understand nature, we need to dream up models by imaginative means. They can then be confirmed or denyed. He did not mean, as some have suggested, that imagination overrides knowledge, only that knowledge itself is not enough for finding answers: creativity is needed.
Once information has been thrown away, or lost, it is not possible to go back and recreate it, unless it is somehow coded into a local potential, as in Part IV, or journalled in an ever-growing archive. The only way to refine one's understanding of events, to amplify on "it was just random", is to postulate a reason and then collect evidence which supports or denies it. Imagination is itself just a random entropic walk of possibilities, loosely contrained by a hypothesis.
A comedy of errors
Our brains are extremely good at fitting models to data -- almost too good, in fact. It is as inconceivable as it is inevitable. When I was younger, I would sit and watch the television noise, after everyone had gone to bed, with a friend. While listening to Led Zeppelin, we would wait for the rabbit on the bicycle to race across the bottom on the screen, as it often did, late at night. The rabbit had apprently been observed by many of our friends, while watching the fuzzy dots. Of course, some prefer to look for faces in clouds, or emotional expressions on car radiator grills. The essence is the same.
At the end of the 19th century, an Italian astronomer Sciaparelli was having much the same problem. He trained his telescope on Mars and was amazed to find a criss-cross pattern of lines which he called canali. Percival Lowell misinterpreted his notes and thus began the legend of the Canals of Mars. The canali were later discovered to be a trick of the low resolution distortion, or a loss of information, about random dark spots on the surface. A century later, another blurred picture of Mars apparently revealed a gigantic human face carved into the surface. On closer inspection, it was another trick of the light, fueled by lack of resolution, much to the disappointment of UFO enthusiasts and indeed Hollywood, who went ahead and made the movie anyway.
Model fitting is intrinsic to the way our cognition works, and we use that to good effect. When we look for meaning, we do so by attaching interpretive models to data we perceive. The process of problem solving, is the forward process of mapping cause to effect. The reverse process is that of diagnostics, mapping effect back to cause. Our capacity for reasoning might even have developed as a by-product of this ability for causal analysis.
Models are essential to the way we think, so to understand any data, to diagnose any situation, we need some kind of causal model. We build mental-model imagery by generating high entropy associations, when we parse language; this gives us the ability to infer things from previous experience and leave things unsaid. When we say cake, we don't just think of a description of physical attributes, we think of the cake granny made on saturdays when we were small. We think that it was like the one in the cafe the other day. We think, not of one cake but all cakes of different colours shapes and sizes and of all out experiences eating cakes and parties. Perhaps we think of a cookery program on the television or of a famous chef. From one starting place, our thinking diffuses into every niche of possible meaning. Those who are good at diagnostics, are often those who are good at this random walk of association.
In other words, concepts are not isolated things in our minds. The robustness of meaning has only to do with the competetive strengths of the different interpretations. Our memories are dense networks, tied into many models. We have no unique search-key: there is no unique way of attaching meaning to memory; rather we tie memories into many different models of meaning, which compete for attention. This feature of human cognition is what we exploit in blending systematic, rational thought with the apparently random walk of imagination. It is how we solve problems and diagnoze causal change. This is not at all like databases. Computers work more like warehouses. We find a piece of information and store it on a shelf at a particular place. None of the other information is aware of it. No free relationships are forged. We have learned to make simple associations with relational databases, but these are very primitive.
Time's causal arrow
One of the apparent paradoxes of change, which was first pondered in the world of physics, is how the apparently reversible laws of physics can lead to irreversible consequences.
Reversibility is a property of physical law which means that time has no arrow. The fundamental equations of physical systems work just as well forwards as backwards. There is no concept of past or future. This harks a little of the problem of correlation in statistical analysis. If two things are correlated, then if A is correlated with B means that B is correlated with A. There is is no arrow which tells us whether A caused B, or whether B caused A, or whether they both are byproducts of some deeper cause. This is precisely the problem that models try to unravel.
The `paradox' of reversibility is not really such a mystery to the three horsemen of entropy, because it all has to do with how things spread out into an environment. Many apparent paradoxes of physics arise because physicists forget the environment surrounding their object of attention, as a matter of routine. Physics is about isolating the signals of nature into single threads which are independent of one another. The aim is to find the arrow from cause to effect as clearly as possible, by stripping away the jungle of irrelevancy. Amongst the approaches used is to try to physically isolate effects from other signals by putting them in a box, or by shielding systems from their environments, or by performing control experiements and subtracting one from the other to obtain the variance.
The mystery of reversibility is this: the laws of physics describe infinitesimal changes: they are formulated in terms of `differentials', or changes so small that the environment is irrelevant to them. However, the laws also include recipies for combining small changes into large ones. It is at this larger scale, where we take a step back from the small details and do the half-closed eyes test, that the environment becomes important. It is how we combine the infinitesimal changes which is important, and that combination puts out feelers into the environment, where other signals and effects are lurking. Every time we combine tiny changes into larger ones, the effects of the environment play an infinitestimal role. As we get farther and farther from the starting point and, after many such combinations, we begin to see a real change, reflected in the landscape of influences from the surroundings. Systems spread out into their environments, mixing as they go, with other signals. Suddenly, the way the infinitesimal changes were combined (their history) becomes very important to the final result.
The following analogy might be helpful. If you drive your car one metre in any direction, the world around does not have any great effect on you, and the change is easily undone. However, if you drive half way across the continent, then the route you take begins to play an important role: the features of the landscape make one route inequivalent to another. That places an implicit arrow on the journey. Complex changes are not easily undone, without a memory of exactly what transpired. The way that physics is formulated, the memory of how changes transpire is usually lost (dissipated) to the environment; one chooses to ignores the information and treat it as ambient noise, thus it seems like a mystery how the rest of the changes happened.
When we look for changes in the machinery of computer communities, this principle is of central importance. It is not enough to collect data about changes, do little statistical analyses and plots graphs etc, if one cannot separate the important signals from the environment. Physicists throw away parts of a signal which they are not interested in (and sometimes get confused, but not as often as one might expect); this is how they find order in chaos.
The meaning of signals is a mapping from cause to effect. Signals which change things are more than just correlations (which are bi-directional), they are directed arrows, like conditional probabilities. Auto-correlations have direction in a time-series only by virtue of time's arrow.
Pins and Needles
When machines get sick, they exhibit certain observable symptoms. These are clues as to the cause. Humans, for instance, get sore throats, perhaps skin colouration, headaches, pain and so on. The same symptoms characterize most illnesses, because there are only so many things which can hurt, or change visibly. Computers run slowly, perhaps even stop working, jumble data. There is a only finite number of symptoms which we observe, but the number of possible causes is far greater. In a sense, finding out the cause of machine illness from a few symptoms is like the problem of determining why a flipped coin shows heads or tails. It is a many to one mapping, which one is trying to reverse.
Of course, we would like to correct illness at source, if possible. Merely addressing the symptoms ignores the causal chain of events which led to the problem, and the fact that it is often unidirectional. Turning a tossed coin over does not change the conditions of the environment which selected one of its faces in the first place. The level of detail in such a response would be incommensurate with the level of detail in the environment which caused the result. That cannot be a cure. Similarly, patching symptoms does not cure the illness which causes them.
In complex machines, the cause of sickness has to be a strong signal. There is a lot of complexity, or entropy in modern computers, in biological systems which compete for resources. A weak signal would just be a whisper in the wind. In order to be noticed amongst the other things going on, the problem has to be sufficiently strong. That often means that by the time the signal has grown to noticable levels, it is already well established, and hard to counteract.
The significance of such a signal would be its strength. Humans get sick when bacteria or viruses replicate themselves to such a degree that they present a signal in our bodies which is so strong as to be toxic. They start drawing resources from other tasks which are The point is not whether they are foreign or not. Cancers are not foreign, but they are also strong signals which are pathological. The effect of a strong dose of almost any substance or signal (even water!) is to be toxic to a system, because it drives that system in a direction which is not its usual one.
The Search for Extra-Network InteLligencE?
In recent years, it has become popular to build anomaly and intrusion detection systems which listen for rabbits on bicycles, amidst the storm of traffic on networks. What is the likelihood of finding anything interesting?
We would like to be on the lookout for signals which could be dangerous, or helpful to us. There are many signals out there, waiting to be understood. Searching for messages in complex signals is like trying to find a needle in a haystack. There are many examples of this problem: all kinds of diagnostics, fault detection, including medicine may be viewed as such a search. Looking for genes in DNA by examining the coding and looking for patterns is another example. Even more difficult is the problem of figuring out the causal relationships between gene action and manifestations of phenotype (species and characteristics) and cell function. In the Search For Extra Terrestrial Intelligence (SETI), scientists look for what might be a meaningful signal in the bath of fuzzy dots on your TV screen. Cryptoanalysis has many of the same difficulties: how to tell a bitstream encrypted message from noise?
In each case, the problem is to identify meaning in a mass of data by looking for causal threads. If we were lucky, every important signal would be a strong, low entropy obelisk constrasting with a sandy desert. Unfortunately, nothing is so simple. Where you find one obelisk, others appear. Often, for the sake of efficiency, one compresses signals into as small a space as possible. This is certainly true of network traffic. In desert full of obelisks, none of them seem to distinguish themselves anymore. This, of course, is one thorn in the side of intrusion detection systems. How do we distinguish a good signal from a bad signal? How do we attach meaning to patterns of traffic? Can we, for example, see the difference between a denial of service attack and a legitimate transfer of data? Stealth attacks are deliberately low-entropy signals, designed to be hidden.
In system administration we are often trying to walk the fine line between necessary complexity and the ability to control, but as we have seen in the previous issues, complexity cannot really be controlled, it can only be regulated by competetive means. Sometimes ecologists introduce a species of animal or plant into an ecology, perhaps a predator which will control a parasite or infestation (like the snails or hedgehogs of Hawaii). They introduce one species because that is a simple signal, something which seems to be controllable. Sometimes this happens by accident (as with the grey squirrel in England). In order to make a difference, such a species needs a selectional advantage, which is a very low entropy signal. The problem with such a signal is that it will tend to dominate. Dominant signals are often toxic. On the other hand, if one were to just throw a bunch of random animals into a system, their effect would be unpredictable, but perhaps more balanced. This is the dilemma, discussed in Part III.
Another example is drugs. Drugs (medicaments) are low entropy signals designed to target specific "problems", where problem is defined to be something which is possibly dangerous or undesirable to us. Drugs are failing today because they make themselves very obvious. If you keep hitting something in the same place, it will either wear out, or move out of the way. An good analogy would be that, if the Germans had invaded Poland and kept on invading Poland, during the second world war, then everyone would simple have moved somewhere else and left them to it. That would not have had the desired effect. Had they attacked everyone at the same time, the result would probably have been a failure, because each signal would have been too weak to be noticed. ("You, Soldier! Surround the enemy!")
When the environment, or an external influence acts with a strong signal, it leaves a marked effect and tends to order the system. This is the way that certain genes become important. This is the way that computer programs are able to learn by finding signals which can be digitized into a particular path through a data structure, or a digital value. This is how the brain learns, we presume, although no one actually knows how the brain learns. Bacteria become resistant to drugs by genetic selection in the face of a low entropy signal. A single threat is easy to resist. Too much of a good thing and it loses its significance.
Rotate shields, long-live the collective!
Machines are subject to a variety of influences. Every influence is a signal, a message to the system which changes it somehow. Some changes are good, some bad, some neutral. This bath of information is called the environment. It acts like a potential, or fitness landscape in which a machine is meant to survive and fulfill its function. Those machines which have evolved in complex environments have evolved defenses to many of the signals which are contrary to their stability. Human-made machinery, however, is put together in the way that humans see the world: by the half-closed eye method. We extract the simplest machine which solves the main part of a complex task. We build to solve the problem as we see it.
Simplification helps understanding, but to quote Einstein again: "Everything should be made as simple as possible but no simpler!" If animal evolution had simplified to the extent that human machine-building does, they would all be dead. Human machines have traditionally been built for protected environments: assuming that the user will do no harm. Today, the network has unleashed a force which we has taken the propositional world of computing by surprise: competition and diversity. Entropy arrives centre stage, and our machines are ill-equipped to to deal with it. Our diagnostic abilities have not been built into our technology in the same way that evolution pits competition against strong signals.
Once machines, driven by humans, were connected in a network, it was inevitable that there would be a variety of players with a variety of motivations, some good, some bad, some ugly. The environment of users and other machines, which our computers bathe in, by console and by network, contains many signals which help and oppose the system. We are only just learning how to shield ourselves from such signals, as DNA did with cell-walls, as organisms did with skin: we can build firewalls, and filters for the network and access controls for resources, so that unwanted signals are not passed.
These controls are not perfect however. The environment is huge, the machine is small; the resources available to a complex environment, to prod and to poke the system for weakness, are huge. Unlike, genetically determined machines, computers are reliant on humans to make changes. Adaptive systems do not really exist today.
Strong, unexpected signals, are needles in the side of the machine. There's a few ways that that machines can resist such toxic signals. The first is to have a defense of any kind. The next level is by redundancy: if one strategy for protection fails, another can take over. The other is the bane of the Borg: rotating shield modulations. We vary the defensive strategy constantly, to prevent an attacker from adapting to the defensive signal. In a competetive environment, constancy is both your friend and your enemy. It is an arms race, i.e. a race to stand still. It is called the principle of the Red Queen (a quote from Alice Through The Looking Glass):
``Well in our country,'' said Alice, still panting a little, ``you'd generally get to somewhere else -- if you ran very fast for a long time as we've been doing''.``A slow sort of country!'' said the Queen. ``Now here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run twice as fast as that!''
In computer systems, one could rotate system policy at random (cfengine can do this, for instance) to prevent users from learning system policy and adapting to it. By making the signal less obvious, one can actually win stability. This is the lesson of non-cooperative Game Theory. In the future, we shall have to learn to adapt and embrace complexity, if we are to create machines which have the ability to communicate in a collective. If we haven't learned this already from society (love thy neighbour and lock thy door), then we'll have to learn it all over again, the hard way.
The Babel Acupuncture
Our world is teeming with information: its jungles, its species, its cities and the ever changing dynamics of it all, are an information system of formidable complexity. From this complex world, humans have imagined meaning in the simplicity of low entropy symbols. It is a Tower far greater than Babel. Then, having built the Tower, we push it down again, polluting precious meaning through repetetive strain, and the meaning becomes the garbage which we fail to tidy up after ourselves, like a multimedia virus which sweeps to every quiet corner of the world. The result might be something indestinguishable from the fuzzy snow on a TV screen. The `Snow Crash' is no myth.
All the needles we have made, we turn on ourselves, in our community bartering grounds, as we compete for supremecy in whatever value-system we hold dear. Whether economist, hacker, warmonger, or merely egoist, we slowly shoot ourselves in the foot with tiny needles.
Part VI: Clusters and Parallels: ecologies
Earlier this year, the first drafts of The Human Genome were reported in the prestigious journals Nature and Science by an academic consortium, coordinated by the American National Institutes of Health amongst others. The consortium estimated that humankind's DNA instruction set has only between 30,000-40,000 genes, only 50% more than the roundworm and much lower than the 100,000 genes once estimated for the human species. This lack of genetic complexity might be disappointing to those of us hoping for a certain sophistication to banter with at cocktail parties. Nonetheless, for a species with an apparent lack of genetic complexity, we cause a considerable amount of trouble.
Whatever tendencies might be absent from our genetic make-up, no one could claim that humans lack anything in the tinkering department. Since we first arose as a species, we have been changing things to suit us, competing with our surroundings and replacing them with a casual disregard for the consequences. Some have even argued that humans go against nature, but I have always found this to be an irrational point of view, given that we ourselves are a part of nature. What humans do is as natural as the rest of it, from bridges to skyscrapers and computers: these are no less natural environmental incursions than bird nests or ant-hills or honeycomb. We are simply a very strong and unusual signal in an otherwise diverse environment.
From slimy origins, human beings have emerged as a signal which has been so successful in competing with others, that we now more or less dominate any ecosystem in which we are present. Only the sun itself still out-does us. We have changed our environment fundamentally to shield ourselves from all other competition (except for ourselves and natural disasters). We dominate our computer systems in the same way. This has broad consequences for their stability and behaviour. It is not just what we do, in competition, that makes us special, but how we feel about what we do.
Although Darwinism makes important observations about the how signals in an ecosystem compete, its traditional framework is too narrow to explain the world around humans. In a Darwinian view, organisms exist only to replicate themselves biologically---but that view is now too one-dimensional. As a species we have developed a curious trait: our children are no longer only physical copies of ourselves, but also ideas, stories, machines and contraptions; language, writing, art and mathematics. Our progeny are multifarious. Yet, in spite of a clear competitive supremacy, neither we nor our progeny have escaped illness. We are not impervious to competition from the unexpected. The rumours of our perfection have been greatly exaggerated. Sickness prevails in our bodies, in our thoughts and beliefs, in our societies and even in our creations. What is this sickness, and why is it there? Should it be there? Is it good or is it bad? And who or what makes that decision?
An Apple a day, a Window to pay...
In the preceding chapters of this series, I have argued that sickness is simply a natural function of any system interacting with its environment. It is just an alternative condition, a slight change of programming. The fact that sickness is regarded as undesirable is the result of an essentially fictitious system of values, by which we regard ourselves and our machines as "good" when they behave as we would like, and as "bad" when they do not. These values come from us; they are founded on our prejudices and feelings.
The trivial answer to why humans get sick is often that we get infected by parasites and poisons; viruses, bacteria and noxious chemical substances. These cause damage which is sometimes fatal. There also exist computer viruses which cause damage, so that is one reason to expect illness in computers, and even parasites and poisons. But this cannot be the whole truth. After all, cars also get sick and die but who ever heard about a car virus? (Okay, someone will create one sooner or later.) Cars die because of wear and tear, or because of faulty parts. Here we stumble upon another possibility: construction faults. Today, some say that growing old and dying is a design fault in biological life. (On the other hand, some might protest that it is a feature: after all, some of us become objectionable when only thirty years old, just think how insufferable we would would all be at three hundred!)
Cars and other mechanical devices get sick when individual parts of the whole fail to function as they were intended. What do we mean by "fail"? What do we mean by "intended"? Is it wrong for those parts to wear out? Clearly not, those parts are doing what things in the universe do; but the point is that cars were intended to have a specific purpose, and when they no longer are able to carry out that purpose, humans become dissatisfied. The rest of the universe doesn't care. It's our problem, not the car's: it is our emotional state about their natural state which is the problem. That is sickness.
With humans and the rest of biology it is different: we simply are. We were not designed and built for any other purpose than to copy ourselves (a sometimes enjoyable, if apparently pointless exercise), but remarkably we have formed our own opinions about the meaning of life, and thus we also can suffer from unfortunate conditions we call sickness. We justify ourselves and our creativity with private meaning: we invent out own goals, based on ideals and visions. We place our own desires very highly. And when things change, we are less than happy.
Sickness is undesirable change. Even aging is called a disease, these days. Emotions drive us to attach meaning to information about our condition, and we instinctively preserve that meaning. When it is in danger of being lost, we care; thus we like to repair deviant machinery, including ourselves.
What is fascinating is that natural immune and repair systems developed all by themselves, to enforce stability. Adaptations without immune systems died out long ago, killed by the Bad and the Ugly incarnations of entropy. Every ball will eventually roll into the lowest position of its gravitational well, if we poke it often and randomly when it gets stuck: our immune systems are stability-inducing feedback systems, driving us towards a healthy state. The immune system doesn't know anything about sickness. Its opportune arrival serves only to promote an evolutionary stable state, as well as a locally healthy one. Nothing in nature cares what it is that is stable, only that it indeed is stable.
Extended Human Computer Interaction
We rely increasingly on computers for the smooth running of our lives. Their impact on the developed world is both positive and negative. Technology bears with it certain risks, after all, as we increase our reliance on it, we make it into extensions of ourselves; but the tables are frequently turned on our machinery. The machines also rely on us, and we are very dangerous.
If you have ever doubted that humans are the most important influence on computer systems, take a look at figure 1. This graph shows the number of processes recorded on a moderately busy computer, plotted on a periodic chart over many weeks. What the figure shows is a regular periodic pattern, with slight variations from week to week, indicated by the error bars. Why should there be a strong, regular pattern? Well, examine it more closely: the pattern starts off with a peak around midday on Monday, there are then peaks around midday for each of the days of the week, trailing off towards the weekend and hitting a low-spot each day at around 6 a.m. in the morning. Recognize the pattern? It is of course, our working week. Similar graphs can be drawn for just about any measurable variable coupled directly to usage; even indirect resource consumption, such as paging patterns, show traces of this kind of periodicity. We do not hide our tracks well. Unwittingly, we exert our complexity on the machines and systems we build. This has profound consequences for their stability and for our relationship with them.
We do not give our machines an easy ride. For some reason, we expect computers to be smart and infallible, yet everyone knows that they are programmed rather simplistically to be cheap simulacra of human servitors. Even the futuristic computers of science fiction go wrong on a regular basis. Our trust in computers is utterly irrational, but certainly symptomatic of the complacency referred to in part 2 of the series. Present day computers are only about as complex as a single biological cell; parallel machines are like small cell-colonies; the whole Internet is perhaps comparable to a primitive worm. Is it surprising that a relatively simple mechanism could be so easily swayn by the key-tapping and file-fetching of a group of humans? We outnumber and out-gun the machines and can therefore exert huge parallel attacks on computer systems, both intentionally and unintentionally.
This relationship with computers is part of a long courtship which humans have had with tools and servants. The earliest known examples of tools date back some 2.6 million years, even though Cro-Magnon, the first modern Man, appeared only about 35,000 years ago. The first tools were simple rocks and pebbles, but by the time of Neanderthal Man (110,000 years ago) knives and axes and saw-like serrated blades has been developed. The steam engine transformed 17th-18th century England and brought on the industrial revolution, rather late, given that an early steam engine, the aeolipile, was built as a curiosity by Hero of Alexandria in the 1st century AD.
Humans have the dubious honour of reinventing neighbouring animals as tools, or servants. We have domesticated animals to eat and work for us since the early Mesolithic (middle stone age) period from around 8000 B.C., perhaps even earlier, since agriculture emerged in the Middle East. Evidence of hunting with dogs has been uncovered in the western United States from around 8500 B.C.. We have allied ourselves with animals, sometimes enslaving them in unfortunate ways, but often nurturing a symbiotic relationship: guaranteed reward for guaranteed work (a scheme of payment).
`Society' is, of course, just a word we use for multitudinous overlapping cooperative and competitive relationships, some of which are symbiotic and others are parasitic and competitive. But society has clearly emerged for a reason. It would not be a stable "technology" unless it conferred some clear advantage. Without such an advantage, the diversity of environmental prodding would have broken it up into anarchy long ago.
It seems that we need relationships with one another and in quite large numbers. Humans can sustain about 150 acquaintances with other humans, according to psychological studies. But what about tools and servants? Why do we want relationships with anything other than each other? To survive? To thrive? It is laziness? Or simply as recreation---the thrill of using tools?
Our relationship with tools is very interesting. We treat our tools as we would another person, expending our personalities on them in strangely irrational ways. We become personally attached to tools: trusty swords, favourite shoes, comfy chairs, cars which have given long service. We even project our empathy onto these inanimate objects. We talk to them, treat them with care, attend to their maintenance. We chastise them when they fail to perform as we would like. Cars are not exactly inanimate, but they are far from being responsive, if that matters. We now poke fun at ourselves with pet rocks, pet logs, artificial robotic dogs and the list goes on. The dichotomy between biological and mechanical is gradually being eroded from our culture, and why not? The main difference, after all (apart from details we cannot see at first glance), is the apparent behavioural characteristics.
The symbiosis we have with elements of the environment is not only based material gain; it can be also psychological, such as mutual need. Our value systems are not only material, but also emotional. We need respect and affirmation. We need idols and enemies: people we love and love to hate. It is as though we need these persistent conflicts to polarize and channel our efforts. Whether we hate Microsoft or Free Software Hippies, Unix or Windows, Republicans or Democrats, we fix on one or the other when given a choice. Often this too has an associative bearing on how we treat computers.
Much as we try to imagine that computers are something new and special in human society, our attitudes towards them are framed in the same hormonal categories that govern all our other activities. We treat them with the same casual irreverence which we would any familiar kitchen utensil. Our natural tendency is to be as complex in our usage of them as we are with everything else in our environment. Sometimes we are kind or rational, other times we are brutal and irrational. By looking to our past record of relationships, we can perhaps glimpse our future with computers.
The Mekon factor
Humans are, of course, freaks. Our brain to weight ratio is higher than any other species. Not just a little but a lot. Brain consumes 20% of all our energy, for a meager 2% of an average adult body weight. In fact, during the first year of life, when our brains are not even fully developed, they use 60% of our energy intake. The brain is a very expensive organ. What on earth is it for? No one knows for sure, of course. This is a hot-bed for research in anthropological and psychological circles. One early theory is that it was tool-making which gave brain size an advantage, but this is not a very satisfactory explanation. We might build complex tools today, but that is because we already have huge brains. Brain size did not increase incrementally in tandem with our increasing technology, and one does not develop a brain the size of a human brain simply to bang stones together. Chimpanzees excel at that too.
Another theory says it was the social aspect of humans, the guile and sexual trickery; more advanced personal grooming, intimacy and the complex communication of group associations, which spurred the need for ever greater reasoning ability. Social interplay might perhaps explain why dolphins have larger than usual brains, although no apparent tool-making abilities (opposable fins never really got them anywhere).
The advantage of cooperation, through use of language, has been suggested as an evolutionary pressure for intelligence. Of course, ants and bees also live in collectives which cooperate and even communicate simply, and they do not have huge brains. They are a testimony to how emergent complexity can be achieved by the strategy of having a simple, unintelligent program repeated by a large number of collaborating agents. There is no low-level reasoning there, but it is still possible to find patterns with meaning in the results. They are a result of approximately random behaviour, ordered by a collaborative program with an essentially common purpose. Brain size is clearly not merely a result of cooperation.
To date, all we really know is that we have a vastly superior logical and emotional apparatus to any other known species. But, in spite of our ability to reason, we are ruled primarily by our emotions and instincts, which compete strongly with our reasoning for supremacy in our complex minds.
What makes computers interesting, is that they are customizable, personalizable tools. We use them for a variety of purposes, as extensions of ourselves, for competitive purposes which split us into factions, and for cooperative purposes which bind us together. They are social conduits, which bring humans together in a virtual meeting place. Even before the network, computers were being used for conducting the business of society. Unlike bridges, beaver dams and spiders' webs, computers are not just generic tools which benefit the species equally, they are are tools which place us in competition with ourselves. They create a new dimension to the ecosystem. They are asking us to behave like social beings.
Our attitudes to computers are thus not really straightforward: they are pets, they are ornaments, they are tools, they are friends and enemies. Like a fine steed, we admire their sleek lines and the feeling of power. The less predictable our tools and machines are, the more we feel they are alive and, the more we pet them and assign them characters and idiosyncrasies normally reserved for peers.
It is all very personal, but important to remember that it is all very much about us and what we want and expect. So what is it we want? System administrators would often rather spend hours making a script of their own, than learning a program written by someone else, because they would feel more attached to it. It is a child. A personal creation. We care about our creations.
Our relationship with computers is a crucial one, not only for our survival, but more for theirs. Computers, like all machines, work perfectly until someone uses them. Humans create a fierce jungle of rational, irrational, competitive and collaborative chaos into which the innocent machines are thrust. We grow them in metaphorical test-tubes, but then we throw their domesticated souls out into the wild to fend for themselves. Few of them survive.
The theme of this series is why machines get sick. Why spend so much time talking about humans? Certainly, we are also machines, altogether used to the notion that we get sick, but we are mainly interested in the machines we have built as tools for ourselves. The reason to belabour the human fraction is that we are not merely the creators of the machines, we are also their sicknesses and their sorrows. Thanks to extra-ordinary cognitive abilities we have been able to build machines of our own, but the same abilities complicate our use of them. We only build simple machines, ill-equipped to survive without help. We think in simplistic terms, favouring order over chaos in our thinking, but in doing so eschewing chaos from design, whilst inflicting it on our creations.
Social graces
Society is one of evolution's more interesting innovations: the cooperation of individuals to produce a meta-individual. In recent times, the development of society has been mirrored by our design of "systems" -- not just simple algorithms, but complex, interacting multi-cellular algorithms. Society is interesting, most especially amongst humans, because it leads to a new level of cooperation and competition: not merely for hardware resources now, but also for ideas or software. Software competition occurs in every kind of `society' or collaboration, from minute viruses which fight over what program a group of cells should execute, to highly developed humans which fight over political allegiances, coloured rags, beliefs systems and any other bone of contention one can imagine.
Whatever got nature evolving more complex structures (building up, rather than knocking down) has surely something to do with an innate tendency for simplicity and order. I have argued, in the previous chapters, that chaos from order is statistically more likely than the opposite, given a flat playing field, but it makes sense that order-from-chaos must occur and indeed be prevalent in the programmed fabric of any organism or cooperative entity. Without such an orderly incentive, no multi-cellular organism, or society of organisms, would ever have gotten it together and emerged. Somehow, programmed into the laws of physics and bio-chemistry is the capacity for order to emerge from complex behaviour. The adaptational playing field is not flat after all, and where it is not, stuff congregates in the valleys and whether things congregate they cooperate.
Organisms are, in turn, apparently driven to order their environments into structures, in the same way that they were once themselves ordered into structure. Not only this, but they clearly have also an innate ability to attach meaning to these strong ordered structures or signals. Humans build monoliths. Moths fly towards a flame; even plants turn towards a light source. It does not matter how this predilection for order arose evolutionarily, or indeed how it emerges now from our nervous systems; the fact that it is there is significant of itself. It is suggestive of a deeply instinctive urge to place a value on control.
Even given that an ordering of environment occurs, the ordered structure still has to test its mettle against prodding from its environment. It is one thing to build a nest, but will it survive the first rain? Will a computer system survive its users? Environment makes everything compete. It pokes and peeks into every nook and cranny, with the help of every method, every animal, plant and phenomenon it has in its arsenal, searching out possibilities at random until something which works succeeds at something. It neither knows nor cares what, holds no allegiance to any moral principles, nor fathoms a benefit from the results. It simply does what it can, as often as it can. In the light of this bleak programming, some things prosper and others do not.
This huge parallelism makes environment an excellent finder of bugs in machinery. If a machine can resist the poking and the prodding, it will survive. If not... Nature and its vast environment crashes any system which fails this basic test of stability. We are a part of that nature: quite a strong signal, in fact, and we test the durability of all others, just as they test our durability. Humans usually win. But the machines we build for ourselves are no exceptions to the testing, they are just rather more vulnerable than we are, since we seldom build with such intense competition in mind. So how did biological organisms get to good at survival, in the face if this intense, parallelized environmental attack? The answer is by developing the idea that mutual cooperation can lead to more selfish reward than pure, selfish interest alone can: society.
Altruism: the long arm of greed
Conventional wisdom in biology is that the process of evolution creates essentially selfish machinery. Individuals look after their own interests first. The same applies to computers and their users when forced into collectives. Each part of the whole is usually designed to consider only its own self-interest, even though this will inevitably lead to competition between individuals. But what is in an individual's best interests?
Cooperation of small parts into communities is a strategy (a meta-law) which enables some processes in nature to be more efficient than others, by ordering their effort into cooperative clusters. We have seen how this works in computing systems with distributed systems and parallel clusters.
Why is cooperation (society) a good strategy for surviving environmental pressure? The lesson of entropy is that, any change is far more likely to destroy than to create. So why bother? This question is answered by evolutionary Game Theory. Game theory asks: what is the `payoff' for choosing a particular strategy? What is to be gained by adopting it? One places all of the possible strategies for and against into a matrix, a kind of boxing ring where they are tested against one another in pairs. The most successful strategy, or combination of strategies is the one which gives greatest pay-off. So what is the pay-off from social collaboration?
Clustering into collaborative social groups of cells or other `units' like herds of animals, multi-cellular plants, or distributed networks offers both good news and bad news for the whole:
- Good news: There is safety in size and numbers (redundancy).
- Bad news: Larger targets are easier to hit (larger contact surface).
The first of these is the reason why slow and stupid sauropods were able to survive against faster predatory dinosaurs: having grown over a certain size, they were simply unassailable. The latter, however, is the reason why cells stick together and put on skin: by minimizing their contact surface, they minimize the risk of attack. The first is the reason why redundancy is smart strategy, and distributed systems are useful. This latter is the reason why firewalls, which minimize the number of points of contact are popular, and why monolithic systems are easier to protect. If groups can only become large enough, or redundant enough to counter any threat, they eventually survive by sheer virtue of numbers, but with a rate of `acceptable loss'.
By cooperation then, any selfish individual can improve its chances of surviving the environment. There are additional benefits and levies:
- Many hands make light work.
- Internal structure can be added: specialization and delegation of parts.
- Altruism: the good of the many outweighs the good of the one.
However the impromptu technology of society emerged, it does not blunted the innate selfishness which is the basis of its individual parts' survival. The majority of societies' users consumes shared resources with a fervent alacrity which belies a complete obliviousness to the needs and desires of their peers. We have to be constantly reminded about being considerate to our neighbours. Altruism, or caring for peers, is only a second order effect. It is a long term investment, rather than an immediate reward. It is easily forgotten.
In human collectives, we pay taxes to enforce collaboration and delegation, but no one truly does this willingly. Taxation seeks to balance organized altruism, for society, with self-serving indulgence. In a distributed, delegated society, everyone expects a common infra-structure, but no one really wants to pay for it. It is the same with networks. In the thriving economic boom of the U.K., this phenomenon amongst Britain's bulging middle class, is often referred to as the Private Wealth, Public Squalor syndrome. The resources invested in common facilities are always poor, because individuals prefer to hoard for themselves, or their siblings cause, rather than for just anyone. In computer systems, our privileges are gradually eroded for the greater good, using priority a taxation (called, ironically, the "nice value" in Unix), and so on.
In biology it is assumed that altruism only occurs within genetically related families: it is a strategy which allows certain genes to survive. I will help A but not B, because I have a personal investment in A. If that is true, we might guess that humans (who have multifarious progeny) would try to invest only in their own creations. Self-sacrifice is the merely long arm of greed: the sacrifice of a part to benefit a greater whole, only because that will actually be a net gain for the individual also. Altruism is the trade-off between short term effort for long-term gain.
In the technologies we build, we do not create machinery with selfish interest on purpose, but something very interesting happens once we put systems together, in an arena of limited resources (processing capacity, memory, network bandwidth etc). The selfish interest of programmers, concentrating on a single task at a time, is transferred to that machinery. On a single-user, single-task machine it does not matter whether a program eats up memory like it's going out of fashion, because that only affects itself, but put several programs and users together and they have to compete. It then becomes a matter of strategy: how to get what one needs when one needs it: does it pay to be considerate or selfish. If it were simply a matter of rigid algorithm, this problem can be solved. It is called scheduling, memory allocation, queuing theory and so on. We know a lot about these things. Alas, it is not that simple, because humans also make choices, which are driven instinctively by a casual disregard for peers, and only far weaker notions of group welfare. The result is `crime' against the collective interest. Often system administrators have to be psychologists as well as police in coaxing users to behave, but the result is clear. To control a collaborative, competitive society one needs rules and regulations to bolster that weak altruistic instinct.
Policy: did you say the lieuw?
Mechanisms work because they have algorithms expressed in terms of causal relationships, which succeed in solving some simple rule. At the level of physics, we call such constraints `laws of nature'. In simple machines, we call this kind of thing the `specification' or `programming', but when we get up to the level of ourselves, we use the word `policy', `politics' and even `The Law'.
Laws are made precise by referring to a system of values. In economics, it is money, physics it is energy. Where humans are concerned, we try to boil down our extremely complex emotional responses down into very simple scales like `morality'. Whatever the value system is, laws are based on policy aimed at regulating those values between actors.
Individuals are not too hard to characterize in terms of values, but put together a society of collaborating, competing individuals and it becomes much more complicated. We have many value systems: money, morality, status, privilege, intelligence, coolness, and so on; and these have different perceived values to different groups. For instance, crackers often do their cracking in order to acquire status in the sub-group of computer users who admire that activity. To others, the pursuit is annoying or even pathetic, like kids throwing stones at windows to see if they can get away with it, for peer status.
The reason to collaborate depends on what we stand to gain from it. Most systems are only stable to behaviour which lies within certain bounds. Rules and regulations are introduced into society so that individuals do not have to bother themselves with evaluating every action to society as a whole. Rules are never perfect, and they fail as the prevailing conditions of environment change. Nevertheless, this is how society deals with a complex problem.
Whether policy refers to structure or usage, it can be broken by a rogue element at any time. A society (network) endures sickness, when individuals or sub-groups fail to work according to policy. It is an expression of desirable normalcy. Viruses are easily created in any system. One factory worker decides to come in late for work each day. Others have to wait for him, so they start coming in later. It moves up the chain, until everyone comes later. In every system there is the capacity for a virus, or a sickness.
Sickness is competitive. If the sickness spreads, it will dissolve the order of a system, whether the society is one of humans, a group of cells, a multi-user computer or a network of computers. Human society needs police force to maintain compliance, animal groups often have a dominant male, organisms have immune and repair systems. It is not surprising that the same is true of computer systems, or indeed any cooperative network of machinery. Every machine obeys certain rules, but the rules are far simpler than the environment they would constrain. Society works by extricating itself from the details of individual actors, and writing its policy in terms of broader lines. It makes the half-closed-eye test work for collectives, but it is always vulnerable to error because the lines are too broad to control the details. Complex environment shapes behaviour. It is not simply a matter of pushing a few buttons to make it right. Machines really need their own immune systems, or police agents, but they will never completely cure the sickness.
Why do machines get sick? We should ask -- what is it the machines are supposed to do? How do we know when they are sick? When are they not doing what they are supposed to do? Under what policy do they operate?
We are the robots
Remember Æsop's fable about the man, the boy and the donkey? The intrepid trio are on their way to market with a load to carry. Using the principle `let the tool do the work', the man initially uses the donkey to carry his load; later he is persuaded to let the donkey do all the work and carry him also. Then worried by scaremongery about the donkey's health and feelings, he gets nervous and decides to carry the donkey. (This is about where we are in the computer industry.) At this point he trips and deposits the donkey over the side of a bridge and into the river.
Since the invention of agriculture, we have been managing our environments, by breaking apart ecosystems and reinventing them in isolated cells. Bees are kept in special environments, plants are kept in fields with a single species, or in artificially managed environments. The environment is disrupted and then simulated with the aim of increasing efficiency. We take a communicative ecology and break it up into non-communicative parts, which we believe we can manage better.
Our management strategy is based on a divide and conquer paradigm. We are natural control freaks. We do not like to allow complexity, because that is hard to understand and unpredictable. Unfortunately, we see time and again that simple procedural rules, for managing necessary complexity, are easily broken and as a result we never quite trust them. That is why we still employ humans to do incredibly banal jobs. It is not that the jobs are difficult, or lead to status or privilege, only that we do not trust simple mechanisms to make the right choices. We would rather carry our donkeys than figure out how to build them properly.
There is an element of risk in everything, not least technology, which involves competition between emotional values: trepidation with anticipation, stability and wealth. We do not simply roll into our coffins and achieve the ultimate stability, we desire to achieve, reproduce and enrich ourselves, form ideas, for emotional payoff; but to do so we have to endure risk. Yet the desire to manage is, in a sense, to minimize risk. To do that, we generally exact increasing control by constraining freedom. But is that the right way to manage complexity? Should we not learn something from evolution?
After billions of years of trying to achieve a stable state, evolution has come up with the idea of ecologies of competing parts, working to maintain a continuous dynamical equilibrium in order to balance its value systems. It did not come up with battery hens and greenhouses, or air-conditioned office-blocks. Plant species do not politely find their own field in which to grow, they either mix peacefully or they compete for dominance. Competition leads to automatic feedback regulation. This kind of strategy is messy and uncomfortable, at least at one level, but it is clearly the most successful strategy, meeting complexity with complexity through continual monitoring and counter-measure---not looking for push button control panels to somehow get it all under control.
But we don't get it. It is culturally ingrained into us that we should eschew complexity by hiding it in black boxes, and rather watch the boxes like pets, than let them fend for themselves. That is the hierarchical approach alluded to in part 3 of the series: it is procedural programming, it is object orientation. It is an excellent strategy for understanding, but not necessarily for building.
Square pegs, fuzzy wholes
We dream of a Metropolis, a paradise of technological conveniences, driven by an invisible underworld, inhabited by machines and Morlocks we would rather not see. As long as we solve the problem by annexing complexity, by coarse graining, by over-simplifying, then trying to compensate by putting humans in charge of push-button menus, ("Solve this war, here are your choices!") will place greater and greater demands on system administrators. We are the robots in our own machine society, mopping up after the crash.
A dismal picture? Don't some of us do it for recreation, for pleasure? Certainly. There is pleasure to be found in almost anything. It is possible to be a happy servant. Our complex relationships with the machines we carry, make matters far from cut and dried. There is romance in the job, symbiosis, need. Workaholics are endorphin addicts, brainwashed into thinking they would be worse off if they stopped. Is it right to use humans in this way? To start off with, perhaps one seems to have no choice, and later it becomes about politics and fear of change, and that is where reason ends. As long as we are willing to be donkey bearers, or we are afraid of losing an identity as donkey bearers, it will continue. Hormone heaven.
Today we believe we can fix every problem by `management', using a few simple choices on a menu. We make simple, square carpets, even though the room is not square. As we fit one corner another one pops up, leaving a new problem to be solved. The delusion of simplicity is perfectly expressed by another immune system analogy. Scientists now believe our excessive management of human hygiene has led to the boom of allergy, observed since the introduction of anti-biotics. We have tipped the balance and left a system, which was developed to counter disease, hungry for something to do. The result is a new problem.
Humanity's relationship with machines is a fascinating story which I have barely scratched the surface of here. The important thing to remember is that we are not only the creators and the saviours, but the very problem itself. Now we have to start accepting responsibility for it.
Part 7: Diagnosis - the projection of LISA to come?
Earlier in the series, I have talked about how computer systems can be understood in a framework which befits any complex, dynamical system, by viewing changes as signals (i.e. processes) which compete for dominance in complex environments of many players. I've talked about how order has a price and how disorder or uncertainty inevitably grows, unless it can be held in check by an idealistic, ordering "potential" well. I've discussed how human attitudes complicate matters, by fixing expectations, demanding policy, over-simplifying evidence and thus losing important information; by complacency of attitude, and even by irrational psycho-social instinct.
One might get the impression from all of this that the situation for understanding and stabilizing computer systems is rather hopeless, that system administration is really a "soft" subject with no hope of rational analysis. My reason for embarking upon this series is that I believe that this is too pessimistic a view. Looking around at the world we live in, there is astonishing order, in spite of the odds. It is my suspicion that the main limitation in our understanding, is not the world of computers, but rather it is our vision of them that is at fault.
How then can we go beyond bemoaning our troubles and come to firm conclusions about how to improve matters? If our aim is to do science, rather than guesswork, we need to formalize our methods and investigations and erect a framework for study which is both criticizable and refinable. Saying "I think" is not good enough. We have to know, within quantifiable tolerances. Fortunately, the ideas in the previous chapters of this series hold the answers.
The most fundamental and profound of all principles in science is the principle of causality:
For every effect, there is a cause which precedes it.
(see my book, Principles of Network and System Administration, J. Wiley & Sons, for a further discussion of this.) Causality, framed as information theory, was the thrust of Part V. It might seem trivial, even obvious, but this foundation of all change is quickly forgotten, even by scientists and engineers, when the going gets tough. We are quick to abandon reason when the discipline seems too great an obstacle to overcome. Often, one resorts to shallow "statistical analyses". Statistical analysis is a powerful tool, but only if one already understands the major details of cause and effect. Without a model for interpreting statistical evidence, analysis is meaningless, and results are mere hearsay.
As I noted in Part 5, causal influence is a mapping from events which occurred in the past, to events which are occurring now. It is an N:M mapping, i.e. a many-to-many mapping. Each observable phenomenon stems, in general, from several causes, and conversely, each causal factor leads to many consequences. This is what makes matters hard to unravel. When we make observations of the present, it is impossible to say with certainty what the cause was. The best we can do is to see whether statistical evidence supports a model, or hypothesis. So the central problem becomes: how do we formulate such a model?
How much effort are we willing to expend in order to analyze a complicated mapping of cause to effect? We can study systems empirically and obtain clues, but empirical studies have many shortcomings. What is needed is a simplified model. The purpose of science is to provide suitably idealized descriptions which can be analyzed and verified to within the limits of their assumptions, not complete descriptions with every detail pinned down. The latter would be impossible, since the level of detail in the perturbing environment is essentially infinite.
Sometimes colleagues suggest to me that one cannot apply science to problems like human management. I find this astonishing. Management is nothing more than the problem of scheduling of resources in space and time, given a somewhat fickle environment. Although science will not have the exact answers, because it is always about simplification, the idea that one would rather revert to witchcraft than surrender a problem for analysis is rather frightening. Either such colleagues have no faith in science (in which case they are just beauracrats going through some learned motions, and will never find anything new), or they are blinkered into believing that knowledge is devoid of principles which can be applied beyond an immediate context.
Clearly computer science has a lot to say about how data structures and scheduling algorithms can be applied. If they can be applied to computer programs, they can be applied to humans. The results will not be exactly the same, nor exactly predictable, but it is possible to make the study and learn something. Science is not simply what one is taught in school. It is the pleasure of finding things out.
Cause-signal-effect and projective digitization
To sum up the series so far, most of science can be understood as a causal analysis. Such an analysis needs a motivation or filter, i.e. a direction which can be used to trace the tangled skein of cause and effect. This is the role of a model. Without it, one is immediately confounded by multiplicity: many causes have many consequences. Which ones are we interested in? We have to be able to separate the signals from cause to effect from the background noise.
If you have been following the series, you will now realize that we know something about this problem. It is just information theory: the theory of signals. All causal phenomena can be discussed in terms of the theory of communication, because the arrow of causal development can always be mapped onto the basic idea of a signal from past to present, or cause to effect. Some signals are strong and obvious, while others are down there amidst the noise.
Causal analysis of a system's behaviour is the skill of diagnostics: it is a systematic and logical imitation of the evolutionary probing, which complex environments exert on systems. While the complexity of environment will get you sick, a doctor has to sytsematically prod and ask: tell me when it hurts. Tracing backwards from effect to cause is only possible if the mapping is one-to-one, and the information about changes is preserved. One-to-one mappings only occur in strictly isolated systems, with stringent, reversible protocols. Such things are usually only possible for infinitesimal changes, because larger changes inevitably convolute with the environment.
Perhaps you are still of the belief that the relationship between cause and effect is a simple one, that we can just decide how things will be, introduce "management" and bingo! If so, it is already clear that you are not a perfect manager, but I ask: are you a perfect typist? Consider your interaction with the keyboard as an input device. The human computer interaction is fraught with much error. The interface itself is digital. When we hit the space bar, we do so with information about exactly where we hit it, how hard, how fast and so on. That might be affected by muscle spasms, distractions, or (in the case of my laptop) random electromagnetic spikes. The computer digitizes this into the coarse classification space or no space. It is a many to one map. Information is lost, and cannot be recovered.
Now suppose we try to hit the `m' key: now there is a finite chance that we might actually hit the space bar, or the `n' key. Again, the reason for this is lost to the computer, but the result is not: it is neatly classified and recorded, giving a precise yet wrong outcome. The effect is said to be projected into the space of outcomes, which is digital. Determining the cause of a bad key hit is so difficult that most would call it a waste of time to try, but it happens quite regularly, because between the brain and the CPU, there is a bunch if environmental contamination: what Shannon would have called a noisy channel.
An almost identical case of projective causality is found in the hierarchical form of evolution. Phylogenetic trees are branchings of species, which record the causal influence of an environment, projected onto digital genes. Although the tree provides a simple relationship between previous and current, it is a projective description, like a string of typed characters, full of errors. It has forgotten all of the environmental information which led to the changes.
Genetic determinism has become the fond crutch of intellectual lightweights in our time, just as childhood nurture and Freudism was in the 1970's. But the lessons of information theory are clear: we cannot expect simple digital rules to explain everything we see in a complex ecology. To suggest that we can understand life by knowing the genetic code is an awesome conceit. It is like saying that one can understand the whole of humanity by writing down the name and address of everyone on the planet, or understand Unix just by knowing the names in the C library. We make the same mistakes in trying to understand computers.
Digitization leads to a projective representation, like the shadow of an object on a wall, the impression left on the keyboard, or on system resources. Part of the information is dropped, and only an impression of the truth is left, as a clue to what really happened.
Causal trees with imperfect information
Computer scientists have acyclic, directed graphs growing in their gardens. That is the graph-theoretical name for a tree. Tree structures abound in science of all kinds, because they are direct representations of causality. In an ideal microscopic description of a system, we would know every detail of every change and be able to trace each one from cause to effect, in a huge complicated tree. In order to draw such a tree, we would have to have perfect information about the changes in the system.
Because data are projected onto a finite, digital map of resources, some of the causal branches which should be there, are missing, lumped together. This means that there is hidden information in the projective paths. If temperature of the machine room could affect the results of transactions, then that information would also have to be measured and recorded; if stray cosmic rays could affect input the results of transactions (as they do on my laptop's electrostatic mouse) then they would also have to be catalogued. Since these things are are not recorded in the workings of the machine, a probabilistic element enters into the projective result. Perfect information is stifled by projection. Some administrators try to achieve it with auditing, but even the molasses of information in full system accounting are never complete, because nothing on the system can record what motivates users to do what they do.
When addressing complexity, one does not normally pretend that exact results are possible; rather one tries to model probable outcomes of the system. Such an analysis is said to have "hidden variables", which represent what is not known about the system. The best one can then do is to look for likely or possible outcomes, using a causal tree analysis. Such analyses are common in scientific disciplines.
One kind of analysis is "risk analysis". Risk analyses are common in a variety of disciplines and go by many names (see Rob Apthorpe's paper at LISA 2001 for an application of the method to system administration). Such analyses usually attempt to quantify the different causal pathways, in terms of some idealized reward called "payoff". Risk can be minimized, profits can be maximized, "uptime" can be maximized, and so forth. How the payoff is defined, depends on what one is interested in achieving. It is essentially a matter of policy.
Framed as a principle for minimizing risk or maximizing payoff, the problem is one of extremizing a parameterized function. This is something which is well-known in the sciences: the principle of minimum risk, principle of least action, Fermat's principle, the minimax principle. All of these are variational methods looking to optimize some criterion. It is a simple search-criterion, for probing the parameter space of possibilties for a desirable property.
The properties one might hope to maximize or minimize, represent desirable or undesirable pathways from cause to effect. Risk, productivity, user satisfaction, return on investment, etc., are all abstract qualities which are baked into the causal pathways with probabilities which arise from the hidden variables. In contrast to many other areas of analysis, such as pure economics, artificial intelligence decision making, human issues like customer satisfaction can play a role in system administration. Ideally, it would be possible to eliminate such subjectivities, but users have an irrational insistence on their own subjective wishes. Nothing new there: we are basically concerned with ourselves, not the abstract vagaries of "the system".
States and models of change
Our aim is to model how computer systems change, by traversing the pathways of a projective causal tree i.e. we are looking for their dynamical properties, projected onto the set of variables and resources which pertain to the interaction with users.
Changes can occur in a machine at several levels; the smallest, most primitive changes (executed instructions, read/write operations etc) are often called microscopic and happen all the time, over very short intervals. Long term changes (amount of free memory, level of activity) are called macroscopic, because they represent the cumulative effect of many microscopic transactions. Their changes are average changes, and these happen more gradually, since there is some reinforcement, and some cancellation of the microscopic changes over time.
What variables characterize the system? They functions time, continuous (smooth) averages or discrete (digital) measurements? Software metrics, such as numbers of processes, numbers of conversations, rate of packets per second, amount of free memory all characterize the resource usage of the system. These reflect changes taking place, but clearly they do not record why, so there must be hidden variables.
One can choose to examine these over intervals of time during which they change only slightly (micro or milliseconds), or over longer periods which more closely refelect the activity of external influences such as user behaviour (minutes to weeks). In order to build a model, and find answers, we then want to compare values at different times. Sometimes it makes more sense to compare changes to the system with a corresponding value measured a few moments before, and other times it will make more sense to compare to a value from a similar time one or more days or weeks ago. As we shall see below, the working week plays an important role in modelling.
A useful, if somewhat overused notion is that of state. The microstate of a system is a set of values which characterizes the system at some moment. For instance, the simplest dynamical systems studied in physics are particles which fly around. Particles are characterized by variables such as their mass, their charge, their position and their velocity. Once we put together more complex, composite systems, we can talk about emergent properties also as describing macrostate, for instance: temperature, pressure, roughness, viscosity etc.
Computer systems are a bit like this: they have primitive things going on, such as atomic operations: read, write, add, locate. At a higher level, we also combine these actions into programs, processes and other structures, which have emergent properties like "busy", "idle", "thrashing" and so on. At the microscopic level, the state of a system can be thought of as the values of a long line of bits, and bit operations. At a higher level, one can talk about numbers of processes, user sessions, protocol states, which are coded into the bits at a higher level.
The essence of complexity, in a system, is that there is no unique way of describing it. Any convenient projection will do, but there is a trade-off. The more detailed one gets, the more information one sees: but information is noise and meaning is difficult to find. Alternatively, one can step back and perform the half-closed eye test: there is less information, but the structure is seen more clearly.
What pays, in general, is an approach in terms of the most convenient measurable parameters, over the time-scale which is germane to the problem. For system administrators, the variables and time-scales generally occupy the level of the operating system's interaction with users (processes, files, over minutes or weeks). What we are looking for, then, is a description which captures changes of state variables at some arbitrary level.
Markov chain
The essence of describing such changes in state, is the Markov chain, or N-th order Markov model, and its more realistic extension the "hidden Markov model".
Put succintly, a Markov model is a model in which the state of the system after the next time step, depends only on the state of the system now. It is literally a sequence of links in a chain. For example, a traffic light has this property: when the light is red, you know the next state will be red plus amber. When it is green, you know the next state will be amber. When it is amber, you know the next state will be red, and so on. One does not have to remember the entire history of what happened to the traffic light in order to understand what it is going to do next. Markov models are the simplest kinds of model, but surprisingly they describe many situations fairly well. One finds Markov models in computer science, but they are usually trivial way of representing data-structures.
Traffic lights and other Markov processes are sometimes said to be in a steady-state, because their behaviour is predictable for all time. It doesn't vary. Either it is constant, or it goes 'round and 'round in a limit cycle. Alas, not many problems are really quite so simple. N-th order Markov models are models where the next transition to a new state is governed by the last N states of the system. Such models are sometimes useful for parsing simple grammars, but are not very useful for understanding anything as complex as a computer system. A Markov model can be represented simply as a transition function, which is a list of now-states and next-states.
Real world problems are too difficult to solve with this kind of approach. Why? Because the level at which Markov models could be applied, is usually so low that the amount of detail would be overwhelming, and therefore simply noise. Instead one uses purposely hides some of the data, using the half-closed-eye method, and by making the fundamental separation into system plus environment.
Billiards is a game which is often used to illustrate problems in dynamics. It can not easily be represented as a Markov model, because the positions of the other balls in relationship to the environment of the table influence the outcome of the next move. In other words, the billiards "system" has a memory of what went on before and the shape of the table play a role in determining what can or will transpire next. Moreover, there is an external entity in the game: the player. The player brings additional information to bear, which is not on display on the table. Chess is another example, which is digital, like a computer. The state of a game of chess is the position of all of the pieces on the board at a given time. The next move is determined not only by the positions of all of the pieces on the board, but also by the choice of the player. The next move has not one but several possibilities, and the extra information which decides which possible it chosen is hidden from view. The transition diagram for chess is not one-to-one; there are many possible moves at each stage. The game eventually coverges to a check-mate when the game runs into a part of its state-space which is a dead end (check-mate), or a limit cycle (stalemate).
When a system which has fairly regular behaviour and is affected by hidden variables, it is not completely predictable. A useful approach to understanding it, is to look at its average or expected behaviour. The average behaviour is defined by the mean value of the state of the system over an ensemble of equivalent situations. Each equivalent observation of the system brings new values but, over time, these yield approximately the same result, up to smaller corrections. One says that the system exhibits microscopic fluctuations about its macroscopic average value. The separation
signal = average + fluctuationis deeply connected to the fundamental split:
world = system + environment
This is not so much a fundamental property of nature, as it is a management viewpoint. This is the way the human cognitive apparatus analyzes.
Models which describe state transitions with imperfect information are called Hidden Markov Models. There are two ways to handle these models. One is to actually model the external information, the other is to create a stochastic model, i.e. one which only predicts the probability that a transition between states will be made. These models will form the substance of models of computers as dynamical systems (see papers by Apthorpe and Haugerud at LISA 2001), since computers have external players called users. Hidden Markov models are characterized by probabilistic transition functions, with hidden variables H, e.g.
(s1|s2) = P12(H).
denoting a transition from a microstate s1 to a microstate s2, with probability P12(H), which depends on the hidden variables. The approach has been used to build quite convincing simulations and mathematical models of the behviour of computers, in projective representations (numbers of processes, numbers of users, etc). Given such a model, with predictive power, one knows enough about the system in order to characterize its long term behaviour in terms what is predictable and what is unpredictable. This leads to a great simplification and time saving when looking for anomalous behaviour.
Boundary conditions
Every manageable dynamical system makes contact with its environment at some time or place, either at the outset of its evolution, or during the act of measurement, at an edge, or at some boundary or interface. The environment leaves its projected imprint on the system: incomplete information about its state. The effect of the environment is usually strong, because the environment is bigger and more pervasive than most systems.
Computers touch base with users via the keyboard and via the network. These channels link computers to a reservoir of thoughts and activity which have a direct impact on what computers do. It would be bizarre indeed if it were not possible to see these effects reflected in the state of the system. Indeed, the working week is easily identified in the patterns of resource usage. It shows a fundamental periodicity in computer behaviour, which has its orgin in the approximately cyclic behaviour of "the average user".
One way to take account of the approximate periodicity is to formulate computer activity as a process on a circular topology (see figure 1). By winding the time parameter around a cylinder of circumference 1 week, and then squashing the resulting spiral into a circle, one ends up with many recorded values for the time-series variables at each point. By averaging the many values at each time of the week, one then sees average behaviour in relation to the working week. This is a more useful decription than an average over all times, since it contains real information about the changes going on in the environment.
By using stochastic methods or Monte Carlo simulation techniques, on a pseudo-periodic background, it is possible to put together a simple model which reproduces the main features of computer behaviour (see the work at http://www.iu.hio.no/SystemAdmin/scisa.html). This allows one to say with quantifiable (calculable) certainty when a computer is behaving in one way or another. Any anomalies which are then observed, must be due to effects which were not considered by the model, and can be singled out as worthy of attention.
We can say two things, at the macroscopic level, about users' effect on computers:
- it is pseudo-periodic
- it is stochastic
At the simplest level of approximation, one could say that the behaviour of users was a sinsoidal, diurnal rhythm. This is not a very good approximation, but it is better than assuming that user behaviour is constant, as many intrusion detection systems do. With further refinement, one can reproduce the graphs of user behaviour displayed (see Haugerud and Straumsnes' paper at LISA2001, based on our earlier studies), in order to discover how the actual pattern arises, whether it is concidence or predictable. These patterns are the most basic "laws of nature" in system administration.
I refer to this kind of model as a type I model of a computing system. A type I model is a description of the state of a computer, over time, subject to the external behaviour of users. Such a model might have many interesting features: steady-state behaviour, dead-ends (crashes, deadlocks etc) and even chaos. I have spent some years working on the separation of system and environment in approximately steady systems (in physics as well as computers), and have a detailed stochastic model in the limit large numbers of data, which identifies the important scaling properties of the system. To the trained eye, the model is very simple, but it fits the data surprisingly well.
The importance of such a model is in understanding how the structure of cause relates to the shape of effect in real, observed behaviour. While we have barely scratched the surface, in our work at Oslo, the results promise to explain many features of observed behaviour, and can be fed back into actual methodologies and tools such as cfengine. Only when armed with such knowledge, does it makes sense to speak of anomaly detection.
Policy constraints: type II models
Type I models are likely to be important as a general guide to understanding how cause and effect are related in computers, but the success of that approach is dependant on how well one can represent the behaviour of users, who represent the largest perturbation. It is not just about projecting the world onto a model, it is also about how many nuances the model should cover. Type I models treat users as a relatively formless gas of influence in which no overriding, strong signals dominate. This is a beginning, but it will not be sufficient to deal with real systems, in which a single user can make his or her influence felt by all the rest.
So how shall we know the shape of users' behaviour? What happens when users do not obey simple rules, i.e. when they are not a formless gas, but an obelisk: a needle in the Cray-stack? Is it still possible to gauge their effect on the system? The answer is yes, though the difficulty of doing so steps up an order of magnitude. The reason is that crowds of users behave in simpler average patterns than individuals, just as a view from a distance looks simpler than a view in close-up. Crowds have a natural inertia in number: the averages are augmented only by small fluctuations. However, in smaller group sizes, fluctuations can dominate over the average part, leaving a view of disorder.
The success of science is largely based on the idea that the laws of nature are constant, and that one therefore stands a fighting chance of unravelling them. If the rules are changing too fast, one cannot find meaning in the variation, and the good goes from bad to ugly. As I said at my LISA 2000 talk on Theoretical System Administration, there are no "Newton's laws" of system administration. There is no single set of rules which governs right from wrong, likely from unlikely. Why not? Because each site has its own environment and its own policy for dealing with it. Strong individuals will shine against this background.
Policy can be used to evaluate user behaviour numerically, by defining a scale of value. The value is "payoff" once again, only now one must also say: payoff from whose perspective. The scale is not necessarily unique. It is only required to be consistent in all comparisons. The idea of scales of values determining social behaviour is a fascinating problem which has plagued the social sciences for many years. What is new and interesting about computers is that we actually have a chance of quantifying the behaviour stringently, because the machine can see everything that is going on, within an automatically limited arena. Also, formalized value systems can be evaluated impartially.
Our quest, then, is to evaluate the likely mixture of behaviours in a mass of users according to some criterion. The scale of measurement will be related to system policy in the sense that users will tend to aggregate around behaviours which are provoked by what they are allowed or supposed to do. Some users are law-abiding, or altruistic; others are contrary and selfish. Mixed up in here, is the somewhat fluid notion of "security"; it is rather hard to pin down, but it is clearly related to the extent to which the system and its users work within the boundaries of policy, and the idea that an unfortunate mixture of user behaviour might drive the system into an undesirable state.
A model which evaluates a profile of user behaviour in relation to policy is what I call a type-II model of a computer system. Such a model is not completely independent of type-I models. Rather the two feed off one another.
Policy and state: paths through a lattice
At the most primitive level, the resources of a computer can be thought of as a string of bits, subject to external change: disks and memory are represented by the bits, and the external change comes from I/O with users and the network, mediated by the CPU. The structure that we build on top of this bit-string, including the file-system, the operating system, the structure of data and so on, is multi-dimensional, and discrete, i.e. it forms a lattice. As we look at changes in the system, we can classify those changes on this lattice. The contention is that, when one decides policy, the effect is to select a preferred region of this lattice. In other words, policy is a projective action, which effectively selects one or more acceptable regions of the state space.
As far as a computer is concerned, the effect of a system policy is to do the following
- System: Specify machine configuration in terms of allowed behaviour, access controls etc.
- Environment: Encourage users to obey limitations and work patterns.
The initial configuration of the system, places it within a region of the lattice which is chosen by policy. This is controllable and verifiable. Asking users to obey rules is politely asking them not to try to drive the system away from this policy region. This is not controllable, but it is verifiable. Because of the environment, we cannot expect a policy specified to be completely upheld, because we cannot control the minds of users. What we can say, however, is that a stable solution to the problem of policy versus users will lead to a situation where the system remains in the acceptable regions of the lattice for most of the time (on average). A counterforce (police force, or immune system) can correct the minor transgressions which must inevitably occur.
But who says the policy will be stable, that transgressions will only be minor? It is, of course, possible to write system policies for a given mass of users which will provoke them into such rebellion that the policy will immediately fail. I claim that this is a good criterion for an unrealistic policy, (governments sometimes make such mistakes) and that such a catastrophic failure is a pathology of the initial assumptions. The aim of system adinistration is never to build such unstable systems, so sufficient stabilty is just a basic requirement, a starting point.
This model of the user-machine interaction, constrained by policy, can be written in a more formal way, in order to map it onto well-known methods of stochastic dynamics. Suppose we examine any variable of the system, as a function of time. Suppose also that we collect the data over many periods (weeks) and examine the averages, calculated for all corresponding intervals. This provides us with an average picture of what the system is doing, in addition to an actual picture of what the system is doing. Now we define:
Actual value = average value + fluctuation
This split is significant for two reasons. The first is that the average value categorizes the approximate behaviour of the system, at any given moment, while the fluctations tells us essentially about the variation of the environment. The second is that it separates microscopic from macroscopic, i.e. fast changes, or what happens over short times (fluctuations), from slow changes, or what happens over long times (changing average). We have thus formalized the idea that the environment is a complex changing signal which pokes and prods with much higher resolution than the stable part of the system.
In the lattice of changes, policy can only be associated with the stable part of the configuration. Acceptable levels of deviation from "perfect" can be used to define a distance from acceptable policy, or an average policy, but not an exactly enforcable one. The problem thus becomes, how can one keep the system as close as possible to an ideal policy-abiding state?
Can we curve the lattice, like a gravity well, so that the system rolls back into its point of lowest "energy", or most "policy correct" configuration (see Part V)? This is the idea behind computer immunology. By building an immune system, or a mobilizable counterforce which regulates policy, one effectively builds such a gravity well. Unlike a gravity well, where all particles respond equally to the force, an immune system has a harder time of this job, because the the lattice is multi-dimensional and the changes respond differently in each direction. This means that signatures and distinctions have to be made. Work of this kind has been done at the University of New Mexico, using a method of classifying sequences of system calls, inspired by the human immune system (see http://www.cs.unm.edu/~immsec/).
Let the games begin
In the future one can imagine feedback to users, which indicates the state of the system. If users see a machine which is not "feeling well", this would be a signal to avoid that particular machine. This alone might be sufficient relief to allow the machine to correct itself (heal itself). This kind of bilateral feedback has been experimented with in artificial intelligence (e.f. the MIT Kismet robot http://www.ai.mit.edu/projects/kismet). I think it could be essential to the development of truly robust systems which interact with humans.
What happens when environment meets machines? The unpredictable meets the specified. If the machine is capable of adapting, there ensues a game of competition for the integrity of its design policy. If the machine cannot adapt, the specification ends up being ruined.
In a game theoretical model of system administration, it makes sense to divide users into those who obey policy and those who do not. Users who obey policy are irrelevant to the evaluation of policy because if they obey policy, they can be absorbed into the background activity, i.e. the way in which the value of the "payoff" changes normally in time. On the other hand, if users do not obey policy, they might choose any number of strategies to try to confound it. A model of system administration is interested in evaluating how likely it is that such a strategy would succeed against policy.
Thus, at the simplest level, we think of the actors as motivated individuals who are in competition to maximize their gain, or minimize their risk. They might work cooperatively, in an altruistic way, or non-cooperatively in a purely selfish way. There might be any number of players in a game, but the simplest case (also the first approximation) is to think of system behaviour as a two-person game, in which the users of the system compete with the system itself for possession of valuables.
A game is characterized by a matrix (see figure 2) in which the rows and columns are labelled by the strategies and counter-strategies of the players, and the body of the matrix contains the payoff to one of the players of interest. By using minimum/maximum techniques, one can seek the most effective mixture of strategies (represented by the histogram distributions), which leads to optimal results. In traditional games, the valuables of the game are easily identifiable game pieces or token rewards. In economics, the reward is money; in natural sciences the reward is energy. In the last part of the series, I argued that rewards in a social setting are not only tangible assets, but can also be the vagaries of emotional reward: peer respect, personal satisfaction. aesthetics, and any number of others from our complicated emotional psyche. The relative importance of these pieces of the puzzle is also, in a sense, a matter of policy. Little is known in our field about the value-scales for the variability of human traits, but it would be surprising if such research had never been done by psychologists in other contexts. With this viewpoint, there is a considerable simplification of the problem.
A game may be set up of hostile users, versus system policy agent (counterforce) and used to evaluate the optimal mixture of counterforce strategies, given that users do their worst. The game also doubles as a formal framework for finding out what the users' worst actually is. The solution of the game is one or more distributions and counter-distributions of strategies for each of the players, which the players can adopt in order to maximize their interest.
At the simplest level, one can assume that users do not cooperate with the system, but clearly one can extend the sophistication of the game in many ways to explore more refined possibilities. It is not certain how much would be gained by this, but it is an avenue for further research.
Conclusion
In this series, I have tried to emphasize the central importance of concentration (centralization) versus distribution: the management of entropy. Low entropy can be poison, high entropy dilapidation, but these are the extreme polarities of the scale. The issue is not a simple question of right or wrong; rather it is one of seeking appropriate balance, in the face of prevailing conditions. This theme recurs in many guises: Cray or workstation, central server or distributed database, uniqueness or redundancy, first-come-first-served (FCFS), or time-sharing, automatic regulation or human intervention? These problems are all, at some level, about entropy management. The message, which applies in every case, is that the environment demands a balance between these strategies. Moreover, we have the means to address these problems in quantitative terms. It is not necessary to guess, or imagine.
I hope that I have convinced you, in this series, that system administration is neither a once-and-for-all solvable problem, nor a problem in which humans have to watch endlessly over their sheep; rather a process of continual regulation, a constant war against sickness, in which human ingenuity will occasionally be called upon to exceed the boundaries of simple programming. At LISA this year, we will begin to see the results of our probing into this challenging field.
Epilogue: A Christmas Carol
This is how one pictures the angel of history,Where we perceive a chain of events,
He sees one single catastophe which keeps piling
Wreckage upon wreckage and hurls it in front of his feet.
The angel would like to stay...and
make whole what has been smashed.
But a storm is blowing from Paradise;
This storm irresistably propels him into the
future to which his back is turned.
This storm is what we call progress.
Walter Benjamin 1940
It was the best of crimes, it was the worst of crimes. It was a crime of neglect and a crime of trespass. That night the old dinosaur changed his mind about many things. Even as the system folks flirted with the larger network community, old Scrooge would say: "Community meeting? Humbug!", tapping away on his spreadsheet. "Keep your head down. We have a job to do. Don't bother them, they won't bother us. Attention to work is the answer, not following every fad."
Every year, I think Christmas seemed to start earlier. It was only but the 2nd of November and the snow was already falling, piling into mounds. Of course, he was there in the office, as usual, going over the earnings of software sales. A client was visiting, trying to persuade Ebone to come to a Usenix conference, but Scrooge was ensnared by his spreadsheet, as usual.
She stood in front of the office window, looking out at the darkening weather. "You cannot truly appreciate the amount of noxious pollutants our machinery expires, until you've visited a country where the snow falls heavily," she said, turning to Scrooge for approval. "To see a snowy-white Winter Wonderland, relentlessly transformed into disgusting black, roadside cement, just by car emissions, is one depressing sight which most of the world is spared."
"Nonsense, woman," Scrooge muttered. "It is every man's right to expend his resources as he sees fit. Cleaning up is simply a job which keeps someone in gainful employment."
"Gainful? Well, perhaps. But is it worthy employment? We could maybe avoid that particular challenge/response," she goaded, "if vehicles didn't ignore the world around them? How does one strike the balance between use and abuse?"
Scrooge sneered. "One simply bids the environment and its users to behave. End of the matter!" And that was Scrooge's philosophy, his answer to every question. Nose down and make thy fortune! Never mind the world at large, it is nothing more than a cumbersome distraction. "Are you going to turn at every little pin-prick?" he would say.
Later, after she left, he resumed his sulking. The remainder of us were hoping to visit LISA, a conference on system administration, where we could revel in that environment which Scrooge dreaded so much, but he wasn't going to make it easy for anyone.
"I suppose you'll want all next week free!" he said.
"If convenient, sir."
"Well, it's not convenient. I fancy that if you spent as much time on our systems, as in your indulgence for staring into the space around us, we might achieve greater things."
But that night would come back to haunt him. Even as the client left, Scrooge was ignoring her warnings, ignoring everything around him. He believed he could just push the buttons and have his way. This time, the world was not going to obey him.
Later that night, after the other employees had escaped to their homes and families, Scrooge awoke before his terminal, alone in the office to the beeping of his mailbox. There was a message waiting for him. The icon on the screen had the form of a door-knocker. For a moment it seemed to blur and change into ... no humbug! He clicked on the knocker. A message appeared. It had the provocative subject "Pins and needles: watch your back!". He opened it irritably, imagining it to be crank advertising. Perhaps it was the late hour, and perhaps it was his sleepy imagination, but as the old man opened the message, it was not a window that appeared but something else entirely.
He stared at the screen. For a moment it had the appearence of the wife who had left him, years ago for his stubbornness. Then the resemblance faded, and he was distracted by the clothing. It was rich and refined, but wrapped -- no almost mummified in chains. Heavy golden chains. Then, in surprise, he looked again. This time, it changed. In the dim light, there appeared a swelling in the air and a whine of straining harddisks. The screen melted away and something else took its place.
"What the Dickens!" he exclaimed.
"Indeed!" said a woman, standing before him in a blur of digital noise. A ghost? Surely, Cleopatra's ghost!
"I don't believe it!"
"Well, Scrooge," it said. "I am remotely here, just as surely as the zombie that Xwin passed. And I have come to warn you!"
"Warn me? Warn me of what? What is going on? I shall call security!"
"Security?" Her eyebrow lifted, ever so slightly. "What security? Well -- you are going to find out soon enough, I fear." Then she focused. "You see my chains, Ebone? I constructed these chains, with my own hands! And now I carry them willingly! These are the chains of my past life. All my mistakes. It is my fate to wear them for ever more. Now my spirit wanders the net, with no other home. The only place where dreams and legends can be sustained. I am spread to the four corners, by my own foolishness."
"The chains..." Scrooge babbled.
"Yes, Markov chains. A record of my whole sorry past. I was blind to it then, you see. Even as they attacked me, the traitorous Roman barbarians. They had already seduced me, of course. My whole empire, infiltrated and by an attack on trust. Poisoned from the inside! You will make the same mistake, Ebone. I exist to warn those like you."
"Like me? What do you mean?" But even as he babbled, Cleopatra set about driving her little needles into him. Pin pricks of challenge; the seeds of uncertainty. She was building up for a different kind of attack: the infiltration of his attitude!
"Listen to me," she said. "I have come to introduce you to some friends of mine. Heed their warnings, Ebone! Don't end up like me. It's for your own security! Even as we speak, the attack is being mounted. Now I must go, and give the others their say. Be good, Ebone. Look around you! There are whole worlds out there. A whole network out there.... You share a common space. It doesn't pay to ignore it! Believe in the both the goodness and the danger of environment, and you can survive. It is not too late."
And with that she was gone, and the room seemed still and quiet, with only the beating of his heart, thumping away. At first he thought he was alone again, and began to gather his wits, even doubting what he had seen. What had she meant? An attack was being mounted? He was of a mind to dismiss the whole incident, surely a trick of the night -- but the resemblance to his lost wife was astonishing. Cleopatra, of Egypt? Humbug!
Then, as he turned his head, his heart skipped a beat at a sudden braying, in his left ear. A terrible apparition moved into the light, sitting astride a giant steed which clopped into view, and snorted with equine distain.
Upon it was a mere skeleton of a thing. A bare-bones interface. Not fleshed out with anything as user-friendly as a skin. It stared at him coldly -- no welcome banner her. Just a cold prompt. "I am the horseman of entropy past," it croaked flatly.
"Another ghost!"
"Not a ghost, sir, but a projection! You might call me a model."
"A model you say? Not exactly The Lady Croft," Scrooge jibed. "And what is your message? Are you going to lecture me too?"
"Lecture you, sir? You misunderstand. A model is not mere theory. It is the embodiment of actuality! As a model, I am going to show you and then summarize the essence!"
Without further ado, the room began to dissolve around them. Suddenly they were standing in a small village. It had the appearence of Europe, he surmised, from the stone cottages. The horseman began to narrate like a bad movie, like the groaning of a great wheel. It seemed as relentless, as unstoppable as time itself.
"The story begins in a small village in the south of England," said the ghost. "An author, Mister Brunner, is writing a book called Shockwave Rider. It is a satirical vision of a future society with mobile phones, laptop computers, laser-printers and a world spanning network!"
"Mobile phones? So you visted this...writer also? And showed him the future?"
The narration continued relentlessly, ignoring him. "In order to get jobs done users release `worms' onto the network. Worms travel from computer to computer around the world, reading and writing information, both legally and illegally. The network is a busy place -- a cooperate war-field. This is the beginning. Later, a photocopying engineer will use the word virus! A canny fellow. You must remember this, Scrooge." He placed a bony hand to the side of Scrooge's head. "Remember!"
"Humbug!" moaned Scrooge.
"A boiled confection in this time and place, I believe. I never cared much for those. Follow!"
The scene changed now. Even further back. Back to a time before civilization. It was a barbarous time. Humans killing humans, animals killing animals.
"See how they quarrel and fight?"
"Glad to see we stopped all that!" Scrooge parried.
"Ah, did we? Did we?" The horseman flashed his scythe, and boney teeth showed for a second. "My motto is this, sir: may the past come back to haunt you! It is never very far away. The Angel of History never quite has time you see. There is never enough time to fix things."
"But none of it is certain," he complained. "The past is the past. History does not necessarily repeat itself! We learn from our mistakes."
The horseman, stuffed an impromptu cigar into its hollow mouth. "Perhaps, perhaps not." Its hollow eye sockets seemed to narrow almost imperceptably. "But then you gotta ask yourself a question...you feelin' lucky -- punk?"
Then it departed, taking Scrooge back to the present, sitting in a pool of sweat. He sat in the office again. The snowy flakes were still falling outside. His hard breathing condensed on the screen in front of him. Somehow he could not deny its reality. the perspiration was real enough.
As the clock struck 18:00 EST, there was a chiming, a whirring of disks and a grinding of metal. The machines around him began to whir more slowly, as if sluggish by the weight of a great burden. As he watched, it was not only the snow flakes that were falling in front of the real window: the numbers began to fall from their columns on his display window. He shrieked at the sight of wealth slipping away. Is this the attack? And a serpent entered through a backdoor.
"Is there no end to this?" Scrooge howled. The second of the apparitions laughed, and Scrooge winced at the sight of this beast. As it approached, machines stopped moving altogether, as if caught in a tar pit. The beast stank with a rotting stench of a thing full of bugs, and not quite wholesome.
"I am sickness," it announced.
"Don't tell me," muttered Scrooge weakly, "you're here to teach me drawing, smelling, and feinting in coils..."
"Sir," it hissed, "I am the worm of system present....For you, this is not the best of times.".
"Show me, damnit! Show me whatever it is you would, and be gone!"
It nodded, as only a worm can nod. "Even as we speak...," it said, "it is happening. Look!"
The creature rolled and stared pointedly at the machines in the room around him. They has stopped altogether now and each one was turning green and falling apart, as though a plague had infested them. There it was: a tiny needle like infestation, piercing the stack of each machine. A small signal, on the scale of things, but as dangerous as a pestilence! The machines were being digested.
"This isn't happening," Scrooge groaned, seeing his wealth evaporate into a cloud of greenhouse gases.
"Well, of course, it's all just symbolism," smirked the apparition. "But that's the modern world for you. This will spread to the four corners, if it is not stopped. But look at this."
The room faded and they were looking at Scrooge's greatest business rival's premises. One of their machines was dying, but the others were still alive. "They're surviving! This is the worst news yet!"
The worm prodded a man intently focused upon his terminal. "You see him? He's not ignoring anything. Security folks at work. This man spends his time thinking about the impact of the environment on his systems. It's not a one-off thing, E-bone -- it's a continual process, and he is prepared for this. He is going to survive."
"But we don't have the resources for that! We can't afford the time!"
"Pity though, because time can afford you. Why do your machines get sick? Because I am here? Or because you have neglected them, and made them vulernable? Because we provide an environment which is sub-optimal? Because there are conflicting, competing interests? Because human nature itself gives us attutudes and behavioural patterns which impinge directly on the machines we use. Watch this..." It pulled out a gun and they were suddenly in some kind of cowboy saloon. Scrooge was there, dressed as a cowboy. "I am going to shoot you, said the worm. Protect yourself!"
Scrooge's manifestation leaped behind a column holding up the ceiling.
"You think so, eh?" The ghost winked and shot a column nearby. The bullet ricocheted off the column and hit him.
"Ouch! That's cheating!"
"Just using the environment to my advantage. If I hadn't, someone else would have."
"You shouldn't even be carrying a gun!"
"Ah, well, in this great country and so on, and so forth.. Now I shall leave you. You have a lot to think about." It began to leave.
"Wait! Am I to believe that what is done is done? And that there is no purpose in crying over overflowed buffers? Well that is what I knew all along, apparition! Progress will just bring on new catastrophes."
But the worm was burrowing into the net, laughing as it went, and the illusion was fading.
Back in his office again, E-bone Scrooge (to his ghosts) surveyed the scene. I'm ruined! he thought. The machines were still silent, and now if his employees did not go to that LISA conference, they might never work again. Truly the worst of crimes. He had to admit that it was clever though. A computer borne sickness -- what an idea! But how to learn from the mistake?
He had little time to wallow in this pity. Soon enough, the third of the visitors was on its way. It appeared first at the end of a tunnel, approaching at the speed of illumination: not quite as fast as light, but comparable to the speed of enlightenment, a seemingly endless, tortuous rate of transfer. On the end of the tunnel was stamped ACME Information Superhighway (no warranty). The third of the spirits was a metallic beast, but not quite like the machines Scrooge was used to.
"Don't tell me -- you are the ghost of system future!"
The robot apparition did not speak. Instead it seemed to glow slightly, rotated a grasper as if beckoning and moved off, down the highway, towards the future, with Scrooge tagging along behind. This ghost of the future was a curious thing, artificial looking, but its posture -- its whole disposition was oddly human.
They emerged into a shambles. Not quite the future Scrooge had imagined, when he had invested in high tech stocks. An old man sat in a dingy office, totting up numbers on a pocket calculator. The Angel of Computer History scarcely acknowledged their presence, if he could even see them at all.
"Ah, so you're back," it mumbled eventually, as if talking to an imaginary friend. "And you've brought another. Do you know me? Perhaps not." He shook his head. "I was once assigned to keep computing systems whole, you know, to repair them" he mumbled. "But it is hopeless. It all went wrong, you see. When the worms came."
Scrooge barely mouthed a question when it was answered. "Why am I doing this by hand? The computers are up there on the hill. No one has computers themselves anymore. They're all locked up, out of harm's way. Too much trouble. Now it all costs too much. The computers are just for the elite." The man tapped the side of his head. "No sooner built than destroyed. All smashed."
Scrooge looked to his guide for explanation, but the old man simply continued as if he knew the drill.
"The breakdown of order on the network rendered it useless. The level of noise was finally so high that no meaningful signal could be safely transmitted. It turned out to be just work for nothing. All wasted. That's what happens when those who have pay no attention to those who haven't -- or perhaps wouldn't..." He chuckled. "So we're back to paper again." The old man, or Angel took a breath and articulated more powerfully. "By building distributed systems, they increased the parallelism in computer systems---but thereby also increased the contact surface with the external world -- an easier target. As they ignored the signals from the network environment, as they ignored the time given laws of community, the attacks increased. So now, you see, we are back to the beginning. Any system can develop a virus, you know. Viruses emerge from the very systems themselves! Any protocol can be attacked. Any influence, however small, can be amplified by the right conditions into a potential problem. The chains of cause and effect are both devious and intricate. But the worst ones won. The warfare reached its peak. Sometimes political, sometimes just animals flexing their muscles. It was the return of the dinosaurs. Dog eat dog. Did I hear you say that history does not repeat itself?" As he faded somewhat from view, he was still laughing. A slow, rueful laugh, not a triumphant one. Scrooge shuddered. This rambling madman was not a future he wanted to revisit. No computers? All because of the worms?
He found himself in a school, perhaps. No, it was a class group on a visit. There was a guide leading them around a factory of some kind. The childen brought out their slates to make notes. One of the children raised a hand. "Miss, my slate's not feeling so great." It was duller than usual, and its login face showed visible distress. The temperature scale on the left of the screen showed that it was running a temperature, fighting some illness. It had a dour expression.
"You'd better leave it to rest for a few minutes," said the teacher. "you can borrow another, if you're kind to it. It won't be used to you, so be nice!"
The child took a new slate and wandered off, knowing that his own would right itself shortly. They were looking at the computers of a different future, Scrooge presumed, though they didn't look much like computers. They were more organic -- not in the biological sense, but in the sense of being like an organism. Even though he could not see what programs they were running, the shine and outward demeanour of the machines seemed to be visible. The materials seemed to change and project this character. As the children used them, they responded to one another. They were more like robots than computers, but not mobile robots, and they interacted, not merely at the level of commands, but in a more socially savvy way. It seemed to be intuitively obvious that the machines were feeling good, bad or simply stressed. Users avoided the ones which seemed ill, allowing them to recover by themselves. Ingenious!
They came upon a machine which did not look sick, but it did not respond. "What happened to this one?" someone asked.
The guide relayed, "We build machines which have feelings, so that they can react to protect themselves from all the complex things happening to them. They need to know good from bad, right from wrong to do that. But this machine was built with too many feelings," said the guide. "It eventually developed its own sense of right and wrong and ended up in a quandry. It decided it didn't like doing what we built it for. Now no one dares turn it off, because of the computer rights activists. Nor can we do anything to change its mind. Basically it's a junkie, locked in its own world. We call it the E-dopamine syndrome. When you let the machine adapt, change the playing field from being flat, you'd better do it right. We went a little too far. We made a living thing, and all we wanted was a machine."
"You are telling me that computers get sick here? How?!" Scrooge demanded.
"When didn't computers get sick? Why does anything get sick? Stuff gets mixed up. Shit happens," quipped the guide, then returned his attentions to the children. "There are many sicknesses in systems. Technophobia is a sickness of society. Warfare is a sickeness of society. Even the free market economy has led to sicknesses, though at least it produced antibodies too. Our feeling machines tend to spread the load, i.e. turn large scale conflict or warfare into small emotional bickerings. It spreads the chaos -- I mean the entropy. It allows the systems to let off steam."
There was a plaque by the machine he was talking about now, inscribed with the three laws of interactive computers.
- A computer may not cause a user harm, or through inaction allow a user to be harmed.
- A computer must obey instructions given to it, except where this would conflict with the first law.
- A computer should protect its own integrity, as long as this does not conflict with the first two laws.
This is nothing but magic, thought Scrooge. This will never happen.
The echo of the Angel of History reached his ears: "Clarke's law: any sufficiently advanced technology is indistinguishable from magic." Yes, yes, he thought, but that doesn't make it possible! The Angel, as if reading his mind, parried: "When a distinguished scientist says it's possible, he is probably right. When a distinguished scientist says something is impossible, be is probably wrong." Clarke's other law.
"Humbug!"
"You are just telling me that I should be aware of my competitors. I already knew that!" They seemed to fade out of this future as they talked. As the children receded into the distance, the Angel rejoined them. Picking the pins off a chip, one by one, like the petals of a daisy. "Big kernel, small kernel, big kernel, small kernel...He believes me, he believes me not..."
"Well," said the Angel, rematerializing more tangibly, "discussions on competition focus too much on winning. Winning implies a certain finality, and end to conflict that would have us pack up our systems and leave after every altercation. This is naive. The conflict goes on. It never ends. We must be concerned with holding the forces of evil in abeyance. More than that would be over ambitious. Our strategies need to maintain stalemate or minimize the damage. These altercations should not be the focus -- we are concerned with the larger goals of producing work, the acquisition of assets. There is no time to repair the little stuff. I realize that now. It's acceptable loss."
"It's a catastrophe. All my systems!"
"Catastrophe in an ecosystem often clears the way for change. Forest fires, clear old wood. Hurricanes throw a random die into the balance of power. Ice-ages, dinosaur killers... Our worm friend has merely cleared the way for your understanding." The robot of system future whirred touched Scrooge on the shoulder. The Angel looked at his timepiece: a small wind sail, attached to his sleeve. "You should be returning. It is time."
Scrooge nodded. He finally understood. He had been wrong to assume that his push button mentality was the answer. One cannot simply decide to resist the onslaught of environment. Even the Angel had realized that. Even with a large umbrella, you'll get wet in the rain. Yes, he understood. It was about sharing with neighbours, and watching out for them! I shall call it the principle of communities! he thought. When one shares a common space with ones's neighbours, interaction is inevitable. Best to make sure that interaction is a pleasant one. He would recite it to himself on the way back to the present. Now, how to get to that conference? What was it called again?
And that is the story of how E-bone Scrooge learned the true meaning of Christmas.