Friday, December 24, 2010

Some Notes on the Material Circumstances of an Inspired Idea

Editor's note: this a strange thing to write down, it's true, but I always think back to George Polya's comments in his clever little book on meta-problem solving, "How to Solve It", on the art and the surprising mysteriousness of coming up with really, really good ideas, i.e. inspiration. I've only had a very small number of such ideas, and their mystery is intriguing enough that I decided the circumstances of this latest one might be interesting to record to posterity.

The idea itself deserves an entirely separate exposition, and will have to wait for another time.

* * *

Snowed in the morning. Woke up earlier than usual, ate, prepared to go out. Road conditions were poor, so I dozed off for several more hours. Had extremely engaging, vivid, and colorful dreams, involving several very broad, sweeping landscapes, a train, more snow, a broad hillside view, many angry accusations, the speaking of foreign languages, the encountering of a partially visible and extremely valuable but dangerous artifact, frightening infirmity, shocking police corruptions, fossil fuels.

Spent day dabbling in various interests I had not had time for; investigated possibility for shoe-horning the Arduino into a full-on software radio, played a game of Go on PANDANET IGS (and won), read half of "Birth of the Clinic: An Archaeology of Medical Perception" by Michel Foucault. Had finished two other books earlier in the week, namely "Critical Path" by R. Buckminster Fuller, and "Thinking in Systems: A Primer" by Donella H. Meadows. Had spent most of that week, and the several weeks preceding, working very intensely on a stylized demonstration compiler exhibiting Harrison's resumption-monadic kernels as a an alternative way of compiling functional programming languages. This involved the introduction, absorption and quick application of a lot of new and highly formal concepts I had not really encountered or used before. Exhausted by these earlier efforts, and by an over-strenuous physical regimen that appears to have caused me some internal injury, this dabbling was a means of rest and recreation.

Also read several short passages from Eihei Dogen's "Extensive Record" ("A deluded person and an enlightened person at the same time use one boat [to cross the river] and each is not obstructed." -- Volume 1, lecture 52, 'Study of Sounds and Colors') and the Book of Chuang-Tzu ("When a man has been killed in battle and people come to bury him, he has no use for his medals." -- 'The Sign of Virtue Complete')

Visiting with family for the holiday, persuaded them to watch "Exit Through the Gift Shop", the peculiar documentary (?) of a supposed meeting between internationally renowned street artist Banksy and one Mr. Thierry Guetta, who, inspired by such street artists, began his own budding art career, which then went on to exemplify everything that street art had rebelled against. Drove sister home. Briefly discussed the film.

Went to Eastside Tavern for "Dirty Disco Dance Party", but no one was dancing, so I sat at the bar and had a beer. As I generally always do, I sat alone and contemplated whatever thoughts happened to enter my mind. Thought about an LED array I had assembled from a kit, and its possible applications to creating interactive devices that would allow visualization of otherwise invisible ambient data in real time. Thought of this partially from something I read in Meadows' book, regarding electric meters in the Netherlands and electricity usage. Thought about how the array I had assembled had several bulbs that were not working, and speculated as to why this might be. Also thought about the essentially finite nature of any output data the devices might produce, and thought about the contrast between this relatively small state space and the very large state space representing not only the physical device itself, but all the materials comprising it. Also thought about how this limited output state space relates to function. Was surprised to consider how strangely ephemeral the notion of the "boundary" of a system is, or even the idea that a system is an isolable thing at all. Wondered whether this notion of "isolable system" is a cultural artifact, and would be considered strange by an equally advanced culture with a very different history from mine. Thought about the various parts and functions of a system (still visualizing the LED array) as peaks and troughs in a series of waves of different frequencies, sometimes overlapping, sometimes not. This reminded me of something from Fuller's book regarding a paradigm revolution in the Twentieth century view, i.e. "a world normally in motion" as opposed to "normally at rest". Thought of Fourier transforms. Suddenly recollected something I had read in the ARRL Radio Engineering Manual about the Nyquist Sampling Criterion, that I had read that afternoon while trying to learn how to construct a rudimentary antenna for Arduino. Saw a very unexpected relationship between this and other thoughts about "systems" and what they are generally. Was pleasantly surprised, but did not make much of it at the moment; wrote a quick note to self in my notepad and continued drinking beer. Left when the beer was finished.

As I drove home, the idea seemed to gain further and further significance, snowballing into something that seemed at once very broad and very clear, with very concrete analogies to what seem to be well-understood and respected theories. Became more and more surprised and excited the more I thought of this. Resolved to make a note of all aspects of the concept immediately occurring to me. Wrote these down in my research notebook. Idea turned out to be a broad generalization of a very particular computer security problem that I had tried to formulate a definition of for some months; although I had formulated a workable definition, something about this previous, more specific idea seemed strangely too specific, as if missing some other important principle. Judged this new principle to be what was missing.

Also decided to write this account, because although this has happened to me before, it has not happened many times, and I would be curious to later observe and reflect upon the circumstances surrounding the appearance of a really, really good idea occurs to me.

Thursday, July 29, 2010

If Technology Is Cheap, Why Is Prosperity So Expensive?

Cockroaches and pigeons seem to do quite well for themselves. Any visit to an urban center of appreciable size should be sufficient to confirm this observation. Common belief seems to hold that these, and other species considered urban vermin, prosper due to inherent durability and resourcefulness, or to some other difficult-to-qualify fitness for life -- hence the frequently repeated quip that after nuclear war, the roaches will inherit the Earth.

While I do not wish to speak ill of the cockroach or the common rock dove (Columba livia) or their tremendous success, it is worth pointing out that one-fourth of all food produced for human consumption is wasted [3], and so, inherent fitness notwithstanding, our pests suffer no shortage of nourishment. Taking into account that increased food supplies generally correlate to population growth, the abundance of pests in and around areas of concentrated human habitation is more likely due to our own wastefulness than to any of the species' individual hardiness. Phrased another way, our prosperity is so tremendous that we in the developed world somehow afford to feed not only ourselves but a large population of animals in which we have no agricultural or economic interest. While this may be prosperity, it is prosperity of a very strange and negligent kind. Arguably, this strangeness and wastefulness it not particular to the production and consumption of food, but to many other facets of our economy as well.

It is a favorite charge of American conservatism that 'poverty' in America is no longer objective destitution, but merely an economic position of relatively less affluence. [7] This claim does have a factual basis; Americans, in general, do not suffer from "extreme poverty", meaning the inability to meet the basic needs of food, water, shelter, sanitation, and healthcare necessary to sustain life. Such arguments correctly address the factual matter of whether or not Americans suffer severe, life-threatening privation (they do not), but do nothing to answer the question of whether our tremendous material surplus is well-spent. It is well and good that our poor do not starve, but should we really settle for an American Dream or a Human Aspiration that looks no further than a full stomach?

The same pundits who belittle American poverty are also quick to note that ninety-seven percent of households classified as 'poor' own a television. [ibid] Television ownership among Americans generally hovers around this figure. The average American spends four hours a day watching television (a figure offered both by A. C. Nielsen and satellite provider Dish Network), which readily translates into 1460 hours (about two round-the-clock months) of television viewing in a given year. Given that a typical Energy Star certified television set consumes about 208 watts of power [4], and that ninety-seven percent of the roughly 115 million households in America own at least one set, it is readily calculated that approximately 40 terajoules (4 * 10^13 J) of energy are expended each year just to receive and view television broadcasts.

In perspective, the atomic bomb detonated over Hiroshima released approximately 60 terajoules[6]. What this means is that the United States annually spends two thirds the energy-yield of the first nuclear weapon on such intellectual pursuits as the choice of a new "American Idol".

We humans have reached a point in history where at least some of us can afford to watch over 1400 hours of television apiece each year. (Anecdotally, but more currently relevant, time spent online is now on the same order of magnitude.) We are the beneficiaries of a superabundance so profound that we live out our lives largely free from thirst, hunger, most disease, or even the threat of bodily harm through physical violence (unless you happen to live in certain parts of certain urban centers). Please do not underestimate the significance of this point. If you live in the developed world, you live a life of luxury that would be unimaginable if you were not already experiencing it. What are we doing with all the time we are not spending in fear of drought, famine, and pestilence?

Early technologists prophesied that the work-week in the industrialized world would gradually dwindle, or perhaps even vanish altogether. Norbert Wiener prognosticated that automation would usher in an epoch of unemployment so severe that the Great Depression of the 1930s would appear as a "pleasant joke". The distinguished R. Buckminster Fuller foresaw the day when a "research fellowship" would be granted to each and every citizen, to do with as he or she saw fit. It is now 2010, and to the best of my knowledge, neither of these things, nor anything like them, has happened. The U.S. Bureau of Labor Statistics reports that employed persons still work a roughly 8-hour day [9], and the United States Congress is presently engaged in an ugly, ideology-poisoned debate over whether Federal unemployment insurance benefits should be extended -- which would seem to indicate that anything so generous as a "research fellowship" is out of the legislative question. Meanwhile, "retail salespersons" and "cashiers" accounted for 1 out of every 17 employed positions in 2009 [10], with "office clerks, general" and "combined food preparation" following closely behind -- which is to say that, technological advance and intellectual liberty notwithstanding, the presently constituted economy sees fit to employ the largest portion of our citizens selling things and doing paperwork. A large fraction of us are employed in roles custodial to institutions whose relation to material or intellectual production is secondary at best. We would be right to question the operation of such an economy; it may be that the remaining sectors produce enough to sustain the material status quo, but does such an arrangement represent an efficient use of human potentials and the real wealth they represent?

We as a nation, perhaps even as a whole species, are now free to do as we please with a fairly large portion of our time, and to do so with the informational and material support of high technology. A popular slogan of the Linux community is: "put enough eyes on it, and no bug is invisible." This slogan was picked up by Robert David Steele's Open Source Intelligence (OSINT) initiative [8], which bases itself upon the philosophy that bottom-up organization of ordinary citizens in the task of information gathering and analysis is vastly more effective than reliance upon a small corps of expert analysts. (As an aside, I had the good fortune to meet and speak with Mr. Steele at this year's HOPE in New York City, and I can honestly say that this meeting impressed upon me considerable personal respect for him.) If broad public participation can benefit such diverse endeavors as operating system implementation and national security information gathering, it can surely be of service other problem domains as well. The building blocks of high technology are now cheaply, commercially available to anyone. It amazes me that I can walk into a Radioshack store and purchase an assortment of prefabricated transistors, along with the tools to wire them into a useful circuit, for just a few dollars. It amazes me that production quality compilers are freely available for all major programming languages -- even complex, cutting-edge languages like Haskell -- and are easy to use. One often hears of how "information technology" has revolutionized our economy and our culture, but the most important fact is the one least remarked upon: the essential building blocks of this revolution are readily available and perfectly usable by anyone who takes the proper initiative.

Economist W. Brian Arthur recently remarked that all technologies are assembled from other technologies. [1] While this may at first glance appear an innocuous observation, it has tremendous consequences for a society in which the products of high technology are widely, cheaply available in modular, readily usable forms. By virtue of sheer combinatorial magnitude, the number of useful technologies waiting to be discovered among the almost endless arrangements of commercially available parts and pieces is astounding. Although, as Americans, we have been largely conditioned to believe in "making a living" by any means available, Fuller's constituents of wealth are worth recollecting: wealth is the product of time, energy, and knowledge. Thanks to industrial technology, energy is plentiful. Thanks to prosperity, time is abundant. Thanks to the global communications network, knowledge is now ubiquitous. But how much of the available knowledge is actually being harnessed and put to work? Are ordinary Americans -- honest and capable people all -- using anything close to 40 terajoules of energy to understand and solve tomorrow's problems? Can our so-called "knowledge" economy be said to be using its time and energy in accordance with the best available knowledge when so many of its employees must condescend to be mere functionaries of non-producing institutions?

It is the top-down mode of developing and deploying technology that is responsible for the exclusion of ordinary citizens from the evolution and application of humanity's greatest powers, and failures of the top-down approach to technological use and development have become painfully evident. The current hundred-day fiasco in the Gulf of Mexico is, once again, highly instructive. When an oil well under development began to freely spew oil into the Gulf after the Deepwater Horizon's catastrophic explosion, all U.S. Federal agencies stood by, largely helpless by their own admission [2] to stop the leak. Despite many theatrical reproaches, the task of cleaning up the spill and stopping the leak were left primarily to British Petroleum, the very entity whose gross negligence was the original cause of the disaster. This heavy reliance upon BP's resources and technical knowledge opened the way for BP's indiscriminate application of untested and highly toxic [5], oil dispersants, in an apparent attempt by BP to conceal the full extent and severity of the spill by reducing the amount of detectable oil on the water's surface. The lesson in this episode is painfully clear: even the experts sometimes fail. More importantly, when the experts do fail, they have a material interest in hiding that fact from the people they purport to serve, often with very damaging consequences.

If people are empowered to create solutions to the problems that they see, they will. When I say "people" here, I do not mean particular experts or persons situated in any particular professional context; I mean anyone. Moreover, those people who do take it upon themselves to solve a problem will generally factor their own personal and communal welfare into the solution as basic constraints on the problem space. Given enough information, individuals generally know what is in their own best interest and act accordingly. Large institutions, whether private or government, purport to act according to common interests, but also act in their own interests, with primacy tacitly given to the latter over the former. This is an important distinction, especially in the context of high technology, its powers and its dangers. Although it continues to be fashionable in some quarters to cast technology as a malevolent force that "controls" or "dominates" our modern lives (I think particularly of Neil Postman's somewhat old, and rather error-ridden, but still widely read "Technopoly"), it is only our alienation from technology that allows for domination or control to take place. We live in a very extraordinaty time in history, when ordinary citizens are able to understand and apply technology according to their own needs and purposes -- provided they take it upon themselves to do so. The neo-agrarianism of the "sustainability" movement is arguably a reclamation of the very earliest technologies, and the discovery that they are within the grasp and purview of any and all ordinary citizens. However, the lesson of sustainability is not that we are better off returning to an agrarian society (a thesis that I personally disagree with), but that we are better off when we take full ownership of humankind's technological heritage, as individuals whose wills and purposes will shape its development and use.

Prosperity need not be expensive or difficult -- but it is not inevitable either. We should not delude ourselves into believing that affluence is simply the product of some vaguely defined virtues inherent to ourselves, nor should we should suppose that if the big system should all come crashing down, we will somehow persist in spite of catastrophe. The material ease and luxury we enjoy now is indeed the result of increasingly uncomfortable and tenuous dependence, but it is also a success that we can take full responsibility for -- if only we are willing to entrust our most powerful tools to ourselves and to all our fellow citizens alike.




[1] W. Brian Arthur. "The Nature of Technology: What It Is and How It Evolves", The Free Press, 2009.

[2] public comments made by Coast Guard Commandant Adm. Thad Allen, speaking at a White House briefing on May 25, 2010.

[3] "Estimating and Addressing America's Food Loses", Economic Research Service, USDA 1997.

[4] ENERGY STAR Program Requirements for TVs, Version 3.0.

[5] "EPA Response to BP Spill in the Gulf of Mexico", accessed here.

[6] John Malik, The yields of the Hiroshima and Nagasaki nuclear explosions, Los Alamos National Laboratory report LA-8819, September 1985. Available here

[7] "Understanding Poverty in America", Robert Rector and Kirk Johnson, Heritage Foundation, 2004, available here

[8] "Human Intelligence: All Humans, All Minds, All the Time", Robert David Steele. Available in full here.

[9] American Time Use Survey -- 2009 Results, U.S. Bureau of Labor Statistics

[10] "Occupational Employment Statistics Highlights", U.S. Bureau of Labor Statistics, June 2010

Friday, June 4, 2010

Barbarians on the Shore

Old Archbishop Dom Gregory Diamare, the abbot [of Monte Cassino], talking one day to [Count] Gavronski about the barbarism into which Europe was in danger of sinking through war, said that during the darkest Middle Ages the monks of Monte Cassino had saved Western civilization by copying the ancient and precious Greek and Latin manuscripts by hand. "What should we do today to save European culture?" concluded the venerable abbot. "Have the same manuscripts copied on typewriters by your monks," replied Gavronski. [2]




On April 20, the Deepwater Horizon oil rig, leased by British Petroleum to drill for oil off U.S. coastline adjoining the Gulf of Mexico, suffered a catastrophic explosion which killed 11, injured 17, and caused the rig to sink to the bottom of the ocean. As of this writing, the ruptured oil well head has spewed crude oil into the Gulf of Mexico continuously for 46 days. Numerous attempts to stop the flow of oil have failed.

A great deal else about this incident has already been said, and continues to be said elsewhere. It would seem idle to recount the technical facts of petroleum extraction and spill response, or to add to the litany of well-deserved blame and opprobrium. The episode of the Deepwater Horizon oil spill is plainly horrifying for the nightmarish destruction it wreaks, and will to continue to wreak, on a large part of the world we live in. It is, however, equally horrifying for a much subtler reason that we all, as architects and beneficiaries of late technological civilization as it exists today, would do well to contemplate.

It deserves to be said that extracting oil from deep beneath the ocean floor is an engineering feat so complex and difficult that its success could justly be called miraculous. This is to say nothing of the scientific knowledge that made it possible for humans to convert a chemical compound, stored millions of years ago deep within the Earth's crust, into vastly powerful source of energy, ready to almost any imaginable use to which its possessors might put it. The activities of the Deepwater Horizon before the catastrophe represent a display of amazing technological power. The utter failure of attempts to seal the Deepwater Horizon's ruptured well represent the amazing impotence of that same technological power in the face of its own consequences.

How are the limitations of our own technological powers currently understood and dealt with by those who most directly wield them? A public comment on the catastrophe by former Environmental Protection Agency (EPA) administrator and former CEO of Shell Oil, William Reilly, is telling:

The extraordinary success of this industry in developing technology to go deeper and deeper into the sea to put down a well, essential well, and then go out in all directions to get the product up is breathtaking.

And the condition, as nearly as I can tell from looking at the photographs and the movies from what's happening in the Gulf, is that the response technology is about as primitive as it was in the Exxon Valdez case [over 20 years ago]. That is the skimmers that are dysfunctional in the open ocean, the booms that break, as you say, with the slightest wave action, dispersants that are not ready for prime time, that may or may not be toxic, something that has to be determined in the event, which seems to me ought to have been anticipated, with impacts on fish that really need to be very carefully acknowledged and may or may not have been.
[3]

If a comment such as this one, on an episode such as that currently facing the United States, is at all revealing, then it points to an alarming short-sightedness and gross indifference to risk on the part of those who manage and direct of some of the human species' greatest technological powers. In a more immediate setting, such destructive myopia and callousness would be termed 'barbarism.'

Communitarian philosopher Alisdair MacIntyre memorably wrote less than 30 years ago that "the Barbarians are not waiting beyond the frontiers; they have already been governing us for quite some time."[1] MacIntyre was concerned with what he saw as the rapid decay of morality and civility in the West, but in light of comments such as those by Mr. Reilly above, such a sentiment certainly applies to the frightening negligence with which the high technology of the human species has been lately deployed. The threat of such negligence is twofold: either the human species will effect technological suicide, or our civilization will abruptly and violently recoil (or be forced to recoil) from the powerful tools we have developed to serve human needs and wants. We have no reason to believe that either outcome is inevitable, but neither do we have any good reason to believe that either is impossible.

The threat of technological self-destruction is not a new appearance, and much comment has already been made on it, especially through the latter half of the 20th century. Much more insidious is threat that our way of life may collapse due to a justified but unmanageable aversion to the tools and mechanisms that sustain it. Barbarism begets barbarism. Every technology devised serves some genuine human want, and so no such device is fundamentally evil or corrupt. Be that as it may, many of our powers are now routinely used by persons and organizations whose motives are at best short-sighted. With this misconduct comes the real danger of delegitimizing the base of theoretical and practical knowledge sustaining the technologies that now feed, clothe, and shelter more of humanity than at any other time in history. Accumulated knowledge is surprisingly fragile, and if our civilization comes to associate our current powers only with greed and destruction -- a view which is still in the minority, but growing both in range and intensity -- there is a real threat that it may be neglected and thereby lost.

It is only through the labors of a preciously small number of scholars and monastics that the works of Classical civilization survived into the Renaissance. Such ancient ideas may at first appear flawed or baseless when viewed in retrospect, through centuries of intellectual and scientific progress. It should nonetheless be remembered that at the time, the ancient works of the Greeks and Romans represented the limits of human learning, and went on to lay the foundation for the very erudition that now finds them quaint. As oil spews unabated into the ocean adjoining one of the most affluent and powerful nations on Earth, it seems conjectural but not idle to fear the coming of a technological and economic dark age. In spite of the abuses to which it has been put, we have labored long and hard for the scientific and engineering knowledge the human species has accumulated, and should not easily let it go, and more work remains if this knowledge is to be transmitted to future generations.

There is good reason to believe that the barbarians are upon us, and this peril issues an urgent question to the scientists, engineers, technologists, scholars, and ordinary citizens of this time and place: What part of our technological knowledge can we save, and how?




[1] MacIntyre, Alisdair. After Virtue. University of Notre Dame Press, 1984.

[2] Malaparte, Curzio, Cesare Foligno (trans.). Kaputt. New York Review of Books, 2005.

[3] Originally broadcast June 3, 2010, on MSNBC's "The Rachel Maddow Show". Video also available here.

Thursday, February 18, 2010

The Not-Understanding Perceptron, and the Grim Shadow of the "Average Man"

... and if you're too intelligent
they'll cut you down to size;
they'll praise you till you're happy,
then they'll fill you full of lies ...


"Cradle to the Grave", album of the same name, Subhumans (1983)




A friend of mine came up to me unexpectedly today, with some obvious concern and agitation. "Can I ask you about something? Could you explain something to me?" he said. I said okay, and he took a piece of paper out of his pocket and began folding it awkwardly back and forth, trying to hide most of the contents while showing me just one small part. Finally, he handed it to me and asked very soberly, "What does this mean?" I looked the paper. It was a score from an IQ test. The score was not good.

It was at that point that I thought about what it must feel like to receive a piece of paper that tells you that you are officially stupid.

I've known this friend for a while. He had a difficult past. He's attending a local community college. He wants to go on to some position where he can counsel troubled kids -- not kids who are troubled about the usual things that trouble kids, but kids who are troubled in a way that's bigger and deeper and harder to articulate, who have been to jail, or will likely end up there soon. He's an honest person. He's a curious person. He works hard. And I could tell that he understood what the paper said, at least in literal terms. I could tell he was hoping, perhaps, that there was some subtle detail of the report that would nullify or at least mitigate the coldly obvious meaning. It was not a question about scales or confidence intervals, even though I explained these ideas at some length so as not to seem flippant or condescending.

There was no way I could just hand the paper back and say, "It means you have a low IQ."

What happened is, I sat back in my chair and said this:

"Look, I don't know much about this sort of thing or about IQ tests or what they're really good for or exactly what they mean. They've been around for a while, and a lot of people have criticized them for a lot of reasons, and they still give them out anyway, but none of that is really the point. The point is that it's all bullshit. The point is that a test score just tells you how well you scored on a test, and nothing more than that. For some reason, we've come to live in a fucked up world where people give us test after test after test to evaluate what use we, as human beings, have to them, as figures of power and authority. It's a bad measure. What's really good and interesting about human beings is how adaptable we are. If we can't do things one way, we can find another. We're never incapable; the only thing we ever lack is persistence or inventiveness. This score doesn't matter. It doesn't tell you what you can or can't do. It doesn't tell you whether or not you'll succeed in life. It doesn't tell you who you are. Those are all things that you determine for yourself. So the meaning is nothing; it's just a test, don't worry about it. Life isn't a test; it's a challenge. It's hard, but there's always another way. There's always a way to live."

Then I handed the paper back, and left.

I sincerely wonder why we insist on so many abstract metrics of people. They may serve an organizational purpose, but they serve no individual purpose, and in some cases even represent and individual harm. Perhaps it's a bit worn and trite to criticize tests and tell people that they can do whatever they want. I acknowledge that not everyone has the same abilities. I acknowledge that some people will try things and succeed, while other people will try things and fail. I acknowledge that we are all stuck playing with the lot we're dealt. What I take exception to is the proposition, implicit in every quantitative metric of a person, that there are only a certain number of clearly circumscribed roles a person may play in life, and all of those can be characterized by a certain number of simple, measurable quantities.

I don't think anyone would dispute the simple proposition that capability is only really proven when the thing is done. Can you write? Write something. Can you fight? Fight someone. Can you think? Come up with an idea. That is all fine and good, but what is often not recognized is that narrow metrics such as standardized questionnaires and puzzles measure only a person's competence in one particular strategy of doing, not that person's overall capacity for thinking, learning, or doing. There is an enormous breadth and variety to the genres of writing, styles of fighting, and certainly to ideas. In the end, the one goal that all of us hold as ultimate is simply to live. As far as I can see, the measure of that is something that we all figure out for ourselves.

I wouldn't be the first person to criticize the IQ test; as far back as Vygotsky and Luria, people were well aware of the influence of a industrialized education on the direction of concept use and formation. The modern practice of measuring by standardized test even resembles, to some substantial degree, the operation of very primitive feature-weighting recognizers (e.g. Rosenblatt's perceptron), which Minksy and Papert famously showed could not even distinguish the presence of such basic relationships as continuity. There is a remarkable synthesis in the way human cognition sees form as function and function as form; one sees it everywhere, in our tools, in our art, in our basic ways of thinking. Batteries of questions aimed at abstracting some particular feature of an individual, however, separate the form of the person from the function being sought. The issue is not one of which kinds of intelligence we should measure, or which quantities are really important in determining health, fitness, or success. The issue is that the measurement of finite quantities is a procedure fundamentally insufficient to the task of determining what we should do with ourselves, or how.

If that sounds like a trope or a triviality, stop and really imagine for yourself how exactly would it feel to receive an scientific report documenting how stupid you are.

One of the really interesting things about being human is that we make purposes and meanings for ourselves. This is not an inspirational appeal that takes us away from the compelling argument that simple biological impulses underly our lives and activities. This is assertion of the brilliant complexity with which those impulses manifest when placed in a brilliantly complex world. What's amazing is that we all end up acting as differently as we do even though we all start with same small handful of biological goals and directives. A clever strategy can turn a weakness into a strength. Sometimes, the meek really do inherit the Earth, and nobody sees it coming.

Sometimes, however, is not the same as always. Sometimes the test speaks the truth. Sometimes might is right. Possibility, however, is an essential organizing principle of how we think about ourselves and the directions of our lives. To borrow notions from the cognitive scientists, our identity is fundamentally tied to a self-ideal, that is, to a persistent thought not just of who we but who we want to be. Without the ability to imagine possible selves and possible futures, the whole sense of self collapses. If tomorrow's outcomes are all completely and fully known today, there is no human sense in bothering to live them all out. (This assertion is pregnant with all kinds of epistemological interpretations.) Of course we need to know, in plain, unsparing terms, how the world is. Of course we need to know, frankly and directly, what our weakness are. But each of us, if we are to go on living at all, also has to be able to imagine better.

I have an above-average IQ. I know this because in fourth grade I went to a quiet, out-of-the-way room in my school and took a strange-looking test, after which they sent me to a so-called "gifted program" once a week. There, we got to do things like tinker with fractal-generating computer programs and assemble-your-own-robot kits. I liked the things we learned, and I liked the absence of the overbearing regimentation that pervades ordinary public schooling, but to tell the truth, I never liked any of the other children there. They all knew that they had taken a test, and that adults approved. They knew that they had been declared officially intelligent. As such, they were all filled with insufferable smugness and self-satisfaction. Knowing that they could do things to please adults, they competed viciously among one another for praise and attention. Based on my later contact with intelligent, talented, and highly educated persons in my adult life, these are features that, I am almost certain, many if not most such children retain for the rest of their lives. Knowing that you have been blessed with "the gift", it is difficult to resist fascination with your own wonderful ability. Having this fascination, it becomes difficult to arouse much interest in what your work means for the other humans you share the world with, what shortcomings or limitations you might have despite your talents, or what people without "the gift" might think or have to say. Having a belief in your own excellent function, you lose the form of yourself as human being, with all the frailties and blights that entails.

Blame or praise only really help when they suggest new directions. There is no "good function" or "bad function", only "good for this" or "bad for that". The only real function is to live out our lives, and that is something we do in whatever way we choose. So what if you have a low IQ? Human chess players are helpless to beat powerful chess playing algorithm, but people still play chess. The joy of a game is just in the playing; in just the same way, the joy of living is not in solving any single problem, or meeting any one goal. So what if you have a high IQ? Your shit still stinks, and somebody still has to clean it up. The world is unimaginably huge and complicated, but everyone has a place in it. Contrary to some opinions, there is no placement test to tell you where.

Saturday, February 6, 2010

Implications of Universality for Computer Security

"In the United States (U.S.), we have items available for all our needs. Many of these items are cheap and easy to replace when damaged. Our easy-come, easy-go, easy-to-replace culture makes it unnecessary for us to improvise. This inexperience in 'making do' can be an enemy in a survival situation. Learn to improvise. Take a tool designed for a specific purpose and see how many other uses you can make of it." (U.S. Army Field Manual FM 3-05.70, "Survival", May 2002)

One of the most noteworthy features of computer security is its overwhelmingly defensive stance. While there are certain programming practices that mitigate threats (e.g. sanitize your inputs, check your array bounds), it is practically impossible to preclude all possible attempts to corrupt or co-opt a system. Granted, there are always a few stubborn hold-outs willing to step forward and claim that the system that they have constructed is constructed in that elusive "right way" that everyone so far has failed at. It's possible that one of these people may be right, but evidence seems to weigh against such claims.

All the way back in 1993, a landmark report from the Naval Research Laboratory [3] found that almost half of 50 serious security breaches involved code that correctly implemented its specification. Of course, that was well over 15 years ago, and so one might protest that perhaps some better model of security has come forward since that time. Even so, one has to take notice when large teams of talented programmers correctly implement a meticulously specified system, and the system nonetheless succumbs to attack. Cases such as this lead illustrious security researcher William Wulf to call for a revolutionized approach to security that abandons the old paradigms of "perimeter defense" [7] as late as last year. Wulf proposes a model of security inspired by the success of the Internet, wherein a small foundation with minimal but very general functionality allows for systems to adapt to localized and quickly evolving conditions as needed and desired. This seems a very pragmatic and promising approach, and the success of the Internet is nothing to sneeze at. Even so, one cannot help but wonder what exactly it is about the traditional way of doing things that leads it to fail.

Let's consider a very intuitive idea from the traditional theory of security. Noninterference is a rather early and very successful idea due originally to J. A. Goguen and J. Meseguer [2] that can be informally phrased as follows: if two users (or processes) share a system, then the action of one should have no effect on the other. In some sense, this is like what we would expect in many kinds of situations where security is important: if you're on a time-sharing system, you don't want your files, or what you do to them, to be visible to other people; if you're buying something online, you don't want the credit card number you send to the vendor to somehow end up on the computer of some third party not part of the transaction. Of course, such assurances are very hard to make on large systems that a lot of people use; it would be pure whimsy to suggest that one could ever make such an assurance about the Internet (especially considering that large-scale data mining by merchants and advertisers already counts, arguably, as producing unwanted side-effects), and it would even seem like a bit of stretch to make absolute promises about a large, practical system that a lot of different people had to use to readily exchange information. However, suppose that someone were to successfully construct a shared system conforming to Goguen-Meseguer noninterference; if we were really that confident in its conception and construction, we could be assured that no one would be meddling in anyone else's data, nor would the kernel be unwittingly divulging any secrets to attackers bent on trying to compromise it.

Here's the catch: even a perfectly conceived and constructed system has to interact with the rest of the world in order to be used by anyone. This of course introduces the vector of social engineering, whereby the human element becomes part of the system. Even so, we don't have to rely on operator fallibility to show how problems immediately and essentially arise once the theoretical construct is out of its own solitary universe. One such very simple and very clever example is due to Daryl McCullough [4], and works essentially as follows:





Imagine we don't want any information flowing from the red parts of the system to the blue parts, although blue-to-red is okay. (This is indicated by the directions of the arrows.) Considered separately, the blue and red parts of the system both satisfy noninterference, since the red portion consists only of a single process, while the blue portion is defined in such a way that its two processes never interact. Does the entire system obey noninterference, once its parts are put together? It turns out that it does not.

The reason for this comes from a subtle but important detail of machines, namely, their finiteness. Suppose that processes A and B fill up their respective input buffers -- which they certainly can do in any kind of realistic machine. Should they start throwing away messages, or should they wait? We don't want to lose any messages, so we insist that the processes wait once their respective buffers fill up. However, in order to know to wait, the buffer or some mechanism attached to it must be able to send signals back to its process, telling either to go ahead or wait. That is, we want our processes to perform blocking reads and writes on the buffers, wherein their execution is suspended until the necessary read or write becomes possible. Now suppose, that our red process has a one-bit input from S that is uses to decide which of buffers A or B to read from, i.e. red multiplexes A and B according to the input it receives from S. The red process waits until acknowledgment arrives in buffer C before reading the next input from S. Suppose processes A and B immediately fill their respective buffers; once our red process reads from one of them, the buffer will have space for a new message, and will signal back to its respective process that it can go ahead with its execution. This is all good and fine and perfectly reasonable. What's the problem? The problem is this: suppose also that A writes some innocuous notice to the output on the left, say '0', each time it sends to buffer A, and that B writes '1' to the same source each time it sends to buffer B. Why is this problem? Because, given this setup, the stream of bits being written to the (blue) output on the left now exactly matches the stream of inputs being read from the (red) input on the right, which is precisely what we did not want to happen.

One immediate conclusion that one can draw from this result is that some security properties simply are not composable, that is, even if two different systems exhibit the property, there is no guarantee that putting them together will result in a system that exhibits the same property. However, I think that there is another informative way of looking at what's happening in McCullough's example: connecting the blue to the red system gives the blue system an opportunity to emulate red.

Emulation is an idea that goes all the way back to Alan Turing's universal computer. In essence, one machine emulates another whenever it performs computations equivalent in rule and structure to another. This is what gives Turing's machine its universality; it has the capability to emulate any of a very large class of other machines, and hence to perform any computation of which any machine in that class is capable. Chip developers use emulators to test against design errors. Nostalgic gamers use emulators to play titles from long-defunct platforms on modern personal computers. Interpreted programming languages (e.g. Java) use an emulated abstract computer to achieve some measure of portability. However, the basic principle that one machine (or tool) can serve in the stead of any of large class of others seems to me much broader and deeper than any of the niche purposes to which it has so far been put, especially as regards security.

Most prisons in the United States place rigid constraints on what sorts of items prisoners are allowed to keep in their cells. The reason for this is that a small piece of metal or a hard, sturdy object can easily be improvised into an excavating tool or a weapon, given the proper motivation -- of which prison inmates typically have an abundance. Ingenuity in making and using tools is one of the distinguishing and noteworthy characteristics of humanity, and the dramatic success of the tool-weilding primate is a testament to the power of a usable tool, however crude. This is not a new or surprising observation. However, it is truly astonishing to observe the huge disparity between the smallness of the means necessary to cause a disruption and the explosive magnitude of the disruption itself. Who would have ever imagined that using a bludgeon instead of fists and teeth would have catapulted humans to the position of dominant predator, or that millennia later those same humans would be improvising artifacts for personal hygiene into deadly melee weapons?

What we have here is a very broad principle. How does it apply?

A number of attempts were made during the 1960s and 1970s to construct a universal Turing machine with the smallest number of possible states; Marvin Minsky constructed one with only 7 states and 4 symbols in 1962 [5]. Successive attempts collected and published by Yuri Rogozhin in 1998 produced at least one smaller machine. In 1985, Stephen Wolfram claimed that his famous Rule 110 one-dimensional cellular automaton was able to emulate a Turing machine with only two states and five symbols, sketching a proof in his widely read and controversial 2002 opus [6]. Though such constructions always give some whiff of obsession with arcana, they also give very concrete evidence of a genuinely startling conclusion: it takes very, very little in order to make almost anything possible.

This should be a very potent lesson for the discipline computer security. Systems can be very tightly walled off from the rest of the world, but it takes only a very narrow gap for an attacker to worm his way in. A first reflex is to try to wall off the system even tighter but this, ultimately, turns out to be a failing solution: one can only constrain the system's use so much before it becomes completely unusable, whereas the attacker needs only the slightest concession in order to devise an exploit. This seems to confirm Wulf's argument that a pitched battle over the integrity of a rigid boundary is doomed to defeat. However, it also gives a potentially very useful language in which to phrase the problems of security. Consider the following informal conjecture:

If a system S allows its users functionality F, then S is vulnerable to an exploit E if and only if F is computationally expressive enough to emulate E.

This is plainly visible in McCullough's construction above; the blocking signal from a full buffer gives the blue portion of the system exactly enough information to act as if it were reading off of the secret input buffer. Erik Buchanan, Ryan Roemer, and Stefan Savage presented a method of constructing exploits without the use of code injection (which I also cited here several months ago) at Black Hat 2008 [1], which seems to confirm this very same intuition. The authors showed that subverting normal control flow was sufficient to coerce "trusted" code into arbitrary computations, thus producing "bad" code without the need to introduce any new code.

Explaining security breaches in terms of "emulating your inferiors" also provides a graded metric of susceptibility. (This may be useful if it turns out that Mr. Wolfram is indeed right and the world is rife with computational universality.) If one system is capable of emulating another, then the time complexity of the emulated computations will always differ from those of the native, non-emulated computations by a constant factor. However, a given system may be better suited to emulating some systems than others, and the program required to set up the emulation may be substantially more or less complicated. A rock might serve as both a hammer or a crude knife, but it makes a much better hammer than knife; an actual knife, by contrast, can be improvised to a wide variety of very practical purposes. The same is undeniably true of computational systems; although the Rule 110 automaton can emulate a Universal Turing Machine, and that universal Turing Machine can emulate the operation of the latest multi-core processor running your favorite operating system, the time performance of your system would decrease by a very large (but nonetheless constant) factor, and require quite a bit of memory besides. In the same vein, dynamic database access through a webpage makes it relatively easy to steal privileged information from the database because (if the website is badly designed) the user has the chance to pass arbitrary SQL queries to the server, but would be much more difficult (by itself) to leverage into an attempt to seize control of the operating system kernel.

Malware, then is just software coerced into emulating an unwanted computation; attack vectors are essentially just abstract buses over which the victim machine receives instructions from its attacker; exploits are essentially programs running on a maliciously purposed abstract machine. This is, of course, all highly speculative, but it seems to give an expressive language in which to formulate many of the problems of security, and to tie together many well-developed branches of computer science.




[1] Buchanan, Erik, Ryan Roemer, and Stefan Savage. "Return-Oriented Programming: Exploits Without Code Injection". Presented at Black Hat 2008, slides available here

[2] Goguen, J. A. and J. Meseguer. "Security Policies and Security Models". IEEE Symposium on Security and Privacy, 1982.

[3] Landwehr, Carl E., Alan R. Bull, John P. McDermott and William S. Choi. "A Taxonomy of Computer Program Security Flaws, with Examples". ACM Computing Surveys, 26:3, September 1994.

[4] McCullough, Daryl. "Noninterference and the Composability of Security Properties". IEEE Symposium on Security and Privacy, 1988.

[5] Minsky, Marvin. "Size and Structure of Universal Turing Machines". Recursive Function Theory, Proceedings of the Symposium in Pure Mathematics, 5, American Mathematical Society 1962.

[6] Wolfram, Stephen. "A New Kind of Science". Wolfram Media, 2002.

[7] Wulf, William A. and Anita K. Jones. "Reflections on Cybersecurity". Science, vol. 326, 13 November 2009.

Sunday, January 31, 2010

"The Best Kind of Student Goes and Practices It Assiduously"

Lao Tzu said that when the best kind of student hears about the Way, he goes and practices is assiduously; when the worst kind of student hears about the Way, he laughs in contempt. This is a good statement about learning in general, and what it means to effectively apply one's self to a study -- any study, and every study.

In order to really learn something, you have to really truly make it a part of your self. This is a fine sentiment, except that 'self' itself is such a vague and illusive concept, and so talk of adding parts and pieces to such a thing quickly descends into confusion. Is something a part of yourself because you wish for it? Because you think about it? Because you attribute it to yourself? Because someone else attributes it to you? How much is enough, and how little is not? Can you know it when you see it? The boundaries of the self are so hazy that the metaphor of taking things from the outside and putting them inside simply does not work. Learning isn't an acquisition.

This is what makes Lao Tzu's attributed utterance profound: the best kind of student is the best for the simple reason that he goes and practices, in all the senses of that word. Learning means putting into practice, and what you choose to put into practice becomes a seamless part of the activity that is your life. Learning is doing.

There is a subtlety here, though. When you value you something, you keep it in mind; you don't set aside or casually forget about people you love, ideals you treasure, nor your own certainly your own goals and survival. When any of these things come up, you remember them, and you act in a way that accords with them. Learning is no different.

Hence the importance of the latter part of the saying; the worst kind of student hears about the Way and laughs in contempt. I say this having done things in just this way, many times in the past, and having utterly failed in such cases. This is the acquisitive approach to learning, the one that suppose that the facts are set in place and it is only a matter of taking them and putting them inside of one's brain. When you come out and say it this way, such an attitude sounds utterly false; everybody knows that you have to practice something to get good at it. But if you don't know what it is that you're actually doing, then your actions aren't practice. They're wasted effort. It's easy to go out and engage in a flurry of activity and to call it "practice", but what makes for real practice is a sensitivity to the interplay between what you do and what the rest of the world does in reply. If your practice is just the stubborn application of your self-conceived ideas to the situation your happen to be in, you're not learning. You're insisting. Practice acts, but carefully studies the consequence. Learning begins with questioning, and questioning is empty if no attention is paid to the answers.

When something is stated, it seems obvious. When something is done, it seems hard.

In a short comment appearing somewhere in the middle of "The Society of Mind", Marvin Minsky gives an interesting counter to the question of whether machines have souls. "I ask back", he says, "whether souls can learn. It does not seem a fair exchange -- if souls can live for endless time and yet not use that time to learn -- to trade all change for changelessness. And that's exactly what we get with inborn souls that cannot grow: a destiny the same as death, an ending in a permanence incapable of any change and, hence, devoid of intellect." Mr. Minsky's insight is quietly brilliant: learning is growth, and growth is inseparable from life.

Time passes. Situations differ. Nothing produces harmony by itself, and nothing acts by itself.

Assiduous practice is assiduous living. Our lives are nothing other than the lessons learned from a long dialogue between ourselves and our circumstances.

Sunday, December 6, 2009

All Computation Is Effectful

I had the fortunate opportunity to attend ACM's Symposium on Principles of Programming Languages (POPL) '09 earlier this year, including keynote addresses and open panel discussions by some of the field's most prominent and celebrated researchers. One issue that came up over and over again was the difficult problem of how to handle so-called "effects".

The functional programming community typically uses terms such as "effectful computation" or "side effects" to describe a broad class of things a computer program may do at runtime whose consequences may not be readily apparent from inspection of the program text itself. These may include memory references (e.g. as in the notoriously strange pointer semantics of C), I/O, interrupts, exceptions, and message passing. In certain quarters, there is a long history of concern over how to encapsulate these inevitabilities of useful programming within a language that somehow tames their unpredictability. This is no doubt a worthy motive; programs all of whose effects were perfectly and completely evident in their source code would make programming in general much easier and might even open the door to that elusive and often contentious goal of "formal program verification". A very substantial research effort has gone into solving the problem and the ideas put forward, which are far too numerous to survey here, show a dazzling sophistication. Even so, the fact that the problem of how to sensibly express computational effects is still an active concern of leading researchers is evidence that no work so far has decisively settled the issue.

To understand the difficulty, one must understand the curious notion of "functional purity". Functional programming languages are languages based on the Lambda Calculus, one of the three canonical (and interchangeable) paradigms of universal computation. The Lambda Calculus, originally due to Alonzo Church, expresses computations as the application three basic reduction rules to syntactic objects usually referred to as "lambda terms". Because the Lambda Calculus is a complete model of universal computation, any program that can be executed on a computer can, in theory, be expressed as a term in the calculus, with the "halt state" of the program equivalent in some sense to the fully-reduced form of the lambda term. The basic building block of a lambda term is a "lambda", which is nothing other than a function in the formal mathematical sense of the word "function". That is, a lambda specifies a rule according to which an input value is matched to a specific, well-defined output value. It would be ideal if programs behaved like lambdas, producing a well-defined output for each well-formed input, according to a specific and well-defined rule. Moreover, since lambda terms are composable into larger lambda terms, such programs could be modularly combined, according to traditional software engineering practice, to produce large and useful new programs from smaller, more basic ones, all while preserving the happy property that no program could have more than one output for any given input. This, in essence, is the goal of pure functional programming.

The significance of functional purity is that it leaves no room for unexpected effects. In theory, program execution should proceed according to nothing other than the well-defined reduction rules of the lambda calculus, whence each reduction has exactly one effect, namely, that specified by the appropriate reduction rule. This does not mean that a pure-functional program may not have bugs, only that source of bugs will be restricted to logical errors on the part of the programmer, rather than unexpected interactions between parts of the program. By contrast, a program in a more familiar and more organic language (such as C) may appear superficially correct but cause effects at runtime whose consequences ripple widely through the program with obscure and unintended consequences. However, the more attentive or skeptical reader may object: since any really useful programming language has a well-defined semantics that specifies what any given statement will do, separating a logical error in a pure functional language from a effect-caused bug in an impure language is a distinction without a difference. Any unexpected behavior of a program is a bug, regardless of its origin.

That's not to say that pure functions are not a useful organizing principle. Pure functions capture a basic intuition of how programs are "supposed to" work, producing no more than one possible output for any given input, and doing so according to a clearly specified rule whose deeper implementation mechanics are usually of no interest to the programmer. Moreover, the simple reductions of the lambda calculus make it relatively easy to foresee what a functional program will do, which is a notable contrast to the semantics of non-functional languages which, even though well-defined, may be forbiddingly complicated. It is very telling that even the illustrious Edsger Dijkstra, an unflinching champion of careful and semantically exact program composition, admitted that semantic analysis for even straightforward properties of trivial imperative programs seemed excessively complex[1]. (However, it's also noteworthy that Dijkstra did the analysis anyway.) The idea of a pure functional language certainly has virtues. It is, however, another matter whether these virtues are attainable in practice.

The best-developed and most successful pure functional language yet implemented is Haskell. Haskell enjoys a selection of stable compilers for every major platform, including the Glasgow Haskell Compiler (GHC), which is a commercial-grade compiler boasting numerous useful extensions and the capability to produce native machine code. Programs written in every major implementation of Haskell, however, suffer in most cases from serious performance deficits compared to similar programs in a non-imperative language. Even the official Haskell Wiki notes that "GHC doesn't have any credible competition in the performance department", and suggests that programs written in Haskell may keep pace with counterparts in other languages, but only with very aggressive tweeking and optimization. Haskell depends upon a very complex run-time system that is highly susceptible to memory leaks and greatly complicates formal verification of compiled Haskell code. One might argue, however, that for at least some applications this would be an acceptable price to pay for the straightforward semantics of a lambda calculus. Haskell's purity, however, is in name only.

Arguably, Haskell does not achieve purity at all, but only manages to localize all of its "impurities" to one place. This place is an essential Haskell construct known as the IO monad, where virtually all essential program behaviors take place. In essence, a Haskell program can only make system calls, catch or raise exceptions, or handle interrupts inside the IO monad. This allows the familiar Haskell type "IO a" to act as a wall separating the idyllic garden of pure functional delights made possible by the runtime system from the gritty details of how real programs execute on real machines. One of the chief architects of GHC, Simon Peyton-Jones, famously described the IO monad a giant "sin-bin, used whenever we want to do something that breaks the purely functional paradigm." [2] Peyton-Jones makes a reasonable argument in the same article that simply making the pure-impure distinction is useful in itself, but also acknowledges that contemporary attempts to more completely account for effects prove either too complicated or too inefficient to be practical. Haskell represents the end-product of a tremendous and concerted research effort by a large number of talented people and GHC is surely an impressive technical accomplishment. However, the sheer magnitude of the effort required to achieve even this modest gain toward the language enthusiasts' goal of functional purity makes its shortcomings that much more conspicuous.

There is, I think, a lesson in all this, and that lesson is that there is no promise in trying to capture all the effects. Computers are machines, and machines work via carefully a orchestrated cascade of predetermined physical causes and their expected effects. All computation is effectful computation. I realize that this may be an extremely controversial thing to say, but I feel that it stands on a well-founded principle. The difficulties and idiosyncracies of so-called "effects" all arise from the fact that computers have to be physically constructed, and thus must accommodate the protocols of the circuits that constitute them, must retain their data in some kind of physical memory, and must have some means to communicate with machines and components that are spatially separate. Trying to resist this fact by abstracting away such details is bound to end in abstractions of rapidly increasing complexity and rapidly decreasing practicality.

The motivations for abstraction via programming language are multifaceted and practically compelling. At the same time, not all abstractions are good abstractions. Church's calculus has proven a powerful and useful model of computation, and is theoretically interesting in its own right. However, it is telling that it was Alan Turing's eponymous and much more mechanical "machine" that became the conceptual basis of the first digital computers. The difficulty of a problem often depends upon its phrasing. We can't write programs that consist of causes with no effects. I admit that it's a very broad, very contentious, and very far-reaching claim, but the utter complexity and unusability of attempts so far to account for so-called "computational effects" suggests that perhaps we are trying to answer the wrong questions.




[1] Dijkstra, Edsger. "Notes on Structured Programming." T.H.-Report 70-WSK-03. 1970.

[2] Peyton-Jones, Simon. "Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell." Microsoft Research, Cambridge. 2001.

Tuesday, December 1, 2009

Something Better: The Essence of Naturalism

I've reflected recently on how the arguments of naturalistic philosophy can be so sound and eloquent and yet be fiercely resisted by so many people. I've also been dismayed the dry, perversely nihilistic view that some naturalists seem to take. Science, however, is a personal and very human endeavor, a fact that is neglected by both the more nihilistic naturalists and their vocal opponents. It is the lack of consideration for this strongly personal feature that leads some naturalists to treat scientific theory as untouchable empyrean truth, and that deters traditionalists from embracing what they see as a world-view that is anesthetic and impersonal.

I had planned out a much longer essay, but for now it seems more constructive to concisely state basic, working principles. A great deal of ink has been spilled on this subject already. What's missing are ideas that can be readily acted upon:





  1. Observe carefully. Truth is everywhere.


  2. Ask questions. Knowledge begins with a question.


  3. Acknowledge the unknown. Understand that assumptions have consequences, and these consequences point beyond.


  4. Be the truth. Apply your full understanding, and act according to everything you know.







Finding and knowing the truth is everyone's business.

To be human means to live in the midst of a conflict between hope and possibility. It's been wisely said that to exist is to suffer. It may be that our uniquely human existence entails uniquely human sufferings such as these. We have the distinct ability to dream up new worries for ourselves, and then to worry ourselves sick over them. We also have the distinct ability to deconstruct our own views and perceptions and thus rationalize away any and all appearances, to the point that the world of our experience is left desolate and bare. Sometimes we see things that aren't there. Sometimes we don't see things that plainly are there. This basic principle leads to a significant conclusion: seeing is not the same as understanding, and not seeing isn't the same as seeing clearly. This principle is widely applicable to all constructed philosophies.

Science has made wide inroads to areas considered the sole domain of mysticism or metaphysics, but even the eloquence of brilliant and heroic thinkers has been insufficient to dispel the unease with which many people regard the proposition that all the phenomena of our experience proceed from basic natural laws. Empirical or logical arguments fail to convince not because they are unsound or their conclusions untrue, but because they fail to adequately replace the practical function of gradually evolved systems of personal belief.

People do not need different theories. People need better ways of theorizing. Science is the acquisition of knowledge, and the acquisition of knowledge should not be constrained to a narrow set of subjects, or particular class of professionals. There is no sense in convincing people to abandon traditional views of God, free will, or humanity's place in the Universe if it only means substituting scientific theories for pre-scientific dogmas. Both represent incomplete views of the world, the distinction being that science puts its fictions to the test. This distinction is crucial but easily overlooked. A theory is nothing but a story whose deeper meaning manifests as a discovery about the world. People embrace traditional views because these views allow them to make discoveries about themselves. They resist naturalistic explanations only when they appear sterile and unable to explain anything new or useful within the scope of their own lives.

What's needed in the reform of all our views is a sincere valuation of the truth, a deep appreciation of what it is and how it is gotten. A close examination reveals that, at the personal level, this is no different from learning and growing as a human being.

It is through fictions that we learn, and knowledge is just the skillful manipulation of fictions. Wisdom is the ability to go beyond fictions.

Friday, November 27, 2009

Thoughts on Control and Proportion

In the common usage, a system is generally said to be "under control" whenever there is some way to act on the system to produce a predictable outcome. This is a perfectly sensible definition, but it makes clear that control is really a matter of degree. Does "outcome" refer to the ultimate behavior of the system, or only certain of its moving parts? Does "predictable" mean that outcomes are foreseeable one second into the future, or one year into the future, or indefinitely into the future?

There are other interesting questions one can ask that may be particular to a system or a class of systems: When control-actions put together serially or in parallel (or in that awkward hybrid of the two sometimes known as "concurrency") are their cumulative results foreseeable, so that large, structured actions can be composed of smaller ones? Do control-actions have an outcome that is constant with time, or does their behavior change, albeit in a predictable way? Do what degree is control of the system susceptible to irregularities of the environment or noise in the input?

Degree, though, seems to be an essential aspect of the notion of control. The things we are typically concerned with controlling are macroscopic and complicated. In those rare instances where we unequivocally succeed in controlling a physical phenomenon (a working machine is one instance of such a success) behavior of the thing may be quite steady and predictable, but still show susceptibility to abrupt, unexpected failures or malfunctions. Friction, cross-talk, ambient vibrations, waste-heat, leaky gates, freak-accidents, and all their like loom threateningly in the background of any working order. Though such entropic can never be eliminated, a successful machine (at least in all current conventional senses) has a design that somehow subsumes these forces.

The world is a vast and inconceivably complicated place. That anything is predictable or understandable at all is something of a miracle. That humans can produce even dim understanding or very modest instances of control is more miraculous still. In this sense, any given thing in the world, from a pebble to a space shuttle to a low-pressure trough to a working farm to an ocean, analyzed in full, contains a volume of information that is completely beyond the comprehension of even the most brilliant human mind. In essence, the information density of even the tiniest, simplest objects renders them wholly immovable to the human mind.

The idea of control thus hearkens back to Archimedes using a lever to move the whole world. Control is a particular arrangement that gives an agent (i.e. something with a minded purpose) leverage enough to move to the world from one understandable condition to another. This suggests a (very) slightly more formal idea of control as a specific kind of proportion: a thing is "controllable" when there is some arrangement by which a relatively low bandwidth input yields a comparably (very) high bandwidth output, i.e. a state of the system that is foreseen.

This is not necessarily a new way of looking at things, by any stretch. (After all, we can even give old Archimedes some credit, not to mention such big names as Boltzmann or Weiner, who first began asking the modern versions of such questions.) Control is essentially a means of mapping some relatively coarse vision of a complex phenomenon onto its extremely fine-grained reality, and doing so in a way that is suitably robust and structure-preserving. The transistor is the classic example of this, whereby something as complex as a semiconductor can be made to act like a trivial logic function. This view is suggestive of certain interesting avenues of investigation. One has to wonder, for instance, if establishing a regime of control, i.e. designing a machine or proving its properties, is something like playing Michael Barnsley's "Chaos Game": the design ask and answer, over and over again, how do the small things resemble the big things in this picture?

Tuesday, November 24, 2009

Amped Up Over Tasers: When Technical Details Don't Mix

Adoption of the electrical neuromuscular incapacitation device commonly known as the "Taser" is a contentious issue in law enforcement policy. As with many contemporary issues, the adoption and deployment of the Taser appears to incite a spirited public debate that is, in actuality, not so much a debate as a vicious clash of two different sets of vague and incommensurable intuitions. As should not be surprising, this quagmire of ill-formed but irreconcilable feelings is even more severely exacerbated whenever the works of science and late technology are involved.

In recent local news, an action group calling itself "People for a Taser-Free Columbia" hosted a public discussion on the police department's issuance of Tasers to beat officers. At that event, opponents raised frequent objection to the Taser: it subjects its victims to an electrical potential of 50,000 volts. This quantity, opponents contend, is manifestly unsafe, whence the Taser's status as a non-lethal weapon is questionable. The Columbia Daily Tribune reports that a certain city councilman dismissed this objection by noting that "it's not the voltage that matters, it's the amperage." Exchanges such as these have become typical in American civic discourse: one side glibly cites what appears to be a fact, and the other side, without considering any particular features of the problem, dismisses that fact as irrelevant. Because such exchanges have become typical it is easy to mistake them for serious policy debate, when in fact they are little more than hysterics and posturing on either side. This recent exchange by Taser opponents and the city councilman is a striking illustration of how much worse matters become when technical information is involved, and is often unwittingly used to perpetuate an unproductive argument.

A closer examination reveals how little the participants in this debate are actually saying. (Sadly, it's worth even less than the few sentences we've given it here.) Let's first address the councilman's inane rebuttal.

Electrical current is commonly measured in amperes. On this definition, the councilman seems to assert that the voltage figure quoted by opponents is irrelevant on the basis that it is the quantity of electrical current that actually determines the magnitude of injury. The councilman's objection superficially appears erudite: he correctly distinguishes between current, which measures the rate at which electrical charge flows through a medium, versus voltage, which is a measure of potential energy. Opponents, however, are clearly objecting to the Taser on the basis that its sheer energy output seems to be frighteningly high. Does the councilman's remark actually address the spirit of this concern? According to Ohm's Law, a basic physical principle familiar to anyone who has ever taken a college physics course,

electrical current = electrical potential / electrical resistance

which means in particular that current, and thus 'amperage', is proportional to voltage. Thus a small voltage will produce a small current when applied to a given conductor (e.g. a human subject), and a very large voltage will produce a very large current when applied to the same conductor. The number of amperes experienced by a person shot with a Taser dart thus depends upon the number of volts of electrical potential generated by the device. What the councilman seems to be saying is: "It doesn't matter how many volts the suspect is subjected to, as long as he doesn't suffer too many amps." In light of simple physical laws, such an argument makes no sense. Moreover, it does nothing to address generic fears that Thomas A. Swift's Electric Rifle shoots out a quantity of electricity that is simply too large.

It is possible the councilman actually meant something else by his objection, but I cannot think of any other sensible (or favorable) way to construe the remark. It is also worth noting that the councilman's remark is similar to an aphorism oft quoted in the electrician's trade. In the context of creating an electrical current, an electrician or engineer certainly is concerned with the problem of creating a current using as little voltage as possible, but this is quite a different concern than determining how much current can be applied to a human being without causing injury or death. Let this be a lesson about the danger of repeating aphorisms without clearly understanding their meaning and application. Be careful not to use pre-packaged phrases to cover up a lack of understanding.

The councilman's technical flub was only made worse when the Deputy Chief of Police asserted, according to the same Tribune article, that the Taser induces a current that is "much less than a standard wall socket's output." Considering that, in the United States, electricity is transmitted to homes at 120 volts, it is impossible that a correctly functioning wall outlet could induce a current greater than the peak current produced by a successful Taser deployment. According to Taser International Inc., the device's manufacturer, the TASER X26 delivers a maximum effective voltage of 1200 V across the body of the subject. All things being equal, Ohm's Law entails that the peak current delivered by a relatively low-voltage taser is at least ten times what a wall outlet could deliver.

This flub, however, leads into one of the subtle difficulties of citing figures: there are many to choose from, and it often matters which you choose. One should note that I said the X26 delivers a peak voltage of 1200 V; the one-second baseline average reported by the manufacturer is only 0.76 volts. There is probably a substantial and pertinent debate to be had on whether the peak or the average current output is more meaningful to the issue of the Taser's ability to do mortal harm, or how long a peak must be in order to be physiologically relevant. However, none of these issues were raised by any participants that I am aware of, nor is there any evidence that the Deputy Chief took these matters into account. One could blame the genre of news reporting: there is only so much space, and reporters favor simple questions with short answers. Moreover, the Deputy Chief is a peace officer, not an electrical engineer; he may have little or no knowledge of the Taser's technical details, beyond those necessary to its operation, and is mostly likely citing the nearest available figure.

Nonetheless, newspapers need to be able report news concisely, and police officers need to be able to do their jobs without worrying about a lot of scientific ephemera. What could have been done differently? The reporter could have troubled his or her self to formulate a somewhat more specific question -- and to follow up on fact-checking the answer. The Deputy Chief, for his part, could have given a more generic expression of his confidence in the device's safety. This would sufficiently express his position without giving the misleading and all too often conjured appearance that "this is all very scientific and things are completely under control." Don't cite specifics unless you are certain of specifics.

(Specifically Deputy Chief claimed the Taser's current output to be 0.014 amperes, without specifying this as average or a peak, or giving a source. I could not locate this figure on the manufacturer's website.)

Now, on to the question of the Taser opponents. The attentive reader may have noted that the peak voltage I cited above for the TASER X26 (1200 V) is substantially below the sensational 50,000 V figure. This is because, while the electrical circuitry of the Taser does in fact produce an internal potential of 50,000 V, this voltage is not the voltage applied to the body of a person shocked by a Taser. According to a Taser International fact sheet the Taser's effectiveness is partially due to its ability to administer a shock even in the case that the terminal probes do not make skin contact with a subject, e.g. in the instance that the probes are embedded in exterior clothing and do not reach the skin. The Taser accomplishes this by steadily increasing its internal voltage, up to 50,000 V, until the potential difference is sufficient to produce an electrical arc from the probes to the body of the subject. Much of the current produced by the 50,000 V potential difference, however, is lost in the process of "jumping" across the gap between the probes and the body of the subject. As soon as the potential difference built up within the device is released (by shocking the unfortunate person on the other end), the voltage rapidly drops. The extra voltage within the Taser is thus built up only far enough to overcome any electrical resistance on the probe end and thus to produce a current sufficient to subdue the human subject. (The basic idea at work here is also very succinctly described by Ohm's law.) What this means it that no person subjected to a shock from a correctly functioning Taser experiences anything close to 50,000 volts.

(That is not to say, however, that their experience is a pleasant one.)

Though I respect opponents' interest in protecting the public safety, they would know that the figure they so often quote is actually not pertinent if they had troubled themselves to learn about the issue they're debating. Throwing out a figure as an emotional artifact ("Look how big it is!") fails both rational discourse and impassioned elqoeunce. When facts in general, and numbers in particular, are used this way, it is usually results either from someone's lazy skimming of the available information for the first apparently supporting technical fact, or from the widespread repeating of such a carelessly disjointed fact. The end product is a clumsy admixture of fevered pleading and rote recital. The fact that Taser opponents often cite a technical fact of no relevance to their legitimate concerns diminishes their apparent gravity and opens the door to glib dismissals like the councilman's 'amperage' remark.

It would be nice if policy decisions were made the same way that a scientific question is studied or an engineering problem is solved: a collection of experts would assemble, collect and analyze as much data as possible, render a decision or propose a course of action, and publish the findings for public scrutiny. Even if such a system of governance were possible, however, I think it would be at best naive to expect it at this stage in history. Moreover, human societies have to take into account human passions; these can't be swept under the rug if any kind of peace or social harmony is to be maintained. A mode of governance more scientific than those in existence today would still have to account first for the hopes and fears of the governed, else it would be nothing but a brutal, mechanical autocracy. Putting aside dreams of later and elsewhere, what could be done differently right here and right now?

The episode at People for a Taser-Free Columbia's forum is problematic because both parties are clearly talking past one another, and using misconstrued technical details to do so. The effective output of the Taser and its short- and long-term physiological effects are essential points to understand and take into account. However, neither party seems to be seriously considering these issues, so much as cherry-picking bits and pieces to suit their existing biases. Both parties, however, have valid concerns that do not necessarily lie within the bounds of engineering details or known laws of electricity. Police serve a useful and necessary function any society, but citizens do have a legitimate interest in checking police powers and in dictating what is and what is not acceptable police action. This is a natural source of tension. The idea of a new kind of weapon is viscerally scary to any normal human being, and it is natural that some citizens would be concerned that the police, to whom they have granted a substantial measure of power, use these new weapons carefully and responsibly. On the other hand, early evidence suggests the Taser is a highly effective, non-lethal means for officers to subdue aggressive persons, with the promise to greatly reduce the incidence of serious injury to either police or citizens during arrest scenarios. These are two points of view that surely can be brought to some satisfactory reconciliation; Taser opponents surely would not want to see a greater number of suspects or police officers harmed during arrests, nor would Taser proponents want to see the police issued a weapon that posed unacceptable dangers to public.

To emphasize this last point, consider that in the most controversial Taser episodes in recent history (some of which are also local) are controversial not because an electrical neuromuscular incapacitator was deployed, but because it was deployed under highly questionable circumstances. In one sensationally publicized episode last year, Columbia police used a Taser on a man threatening to jump from the I-70 overpass at Providence Road, causing him to fall 15 feet to the highway median below. A Taser was used in spite of the fact that the man in question threatened nothing more than suicide, in spite of the fact that he was only passively uncooperative in his refusal to move himself to safety, and in spite of the fact that the officer's action quite foreseeably caused the man to fall from this perch, thus causing the very injuries police had sought to prevent the man from visiting on himself. In another episode on August 28 of last year, police in Moberly, Missouri used a Taser against one Stanley Harlan during a routine traffic stop; Mr. Harlan died shortly thereafter. The event has come under scrutiny because Mr. Harlan was Tased at once while lying on the ground. The city of Moberly has since agreed to pay the Harlan family $2.4 million.

Episodes such as these underscore the legitimacy opponents' concerns that the new weapon may be irresponsibly or recklessly deployed. At the same time, it is clear that the harm in these episodes was not essential to the Taser itself, but resulted from improper police conduct, which, it can be convincingly argued, could be remediated by better training and more stringent department policies on Taser use. By contrast, these salient points are lost behind shrill assertions about tens of thousands of volts, or the supercilious amperes that somehow matter more.

In closing, I would like to point out that I have assumed that Taser International Inc.'s technical data is all complete and correct, and that I have no reason to believe otherwise. However, this is a crucial assumption. The skeptical citizen should remember that every manufacturer has a large material interest in the perceived safety of their product and so is not necessarily an impartial judge of potential dangers said product may pose to the public.

The lesson in all of this is that we would do well to find a better way to express and legitimize the seemingly vague and unquantifiable hopes and fears from which our views originate. It's more communicative to say, "I'm afraid the police," than, "According to my calculations, the Gizmotron 3000 shoots out too many volts!" We need to be willing to acknowledge that we're human beings, with human hopes and human fears that need to be openly acknowledged and should be respected without qualification. At the same time, we also need to consider hard facts and well analyzed data in making decisions, being careful not to misuse them to give trappings of legitimacy to arguments that more emotional than rational. It's ultimately hopes and fears that bring us together as human beings; we should use the facts to harmonize rather than to obfuscate our deeper motives.

Monday, November 16, 2009

Is Truth-Value A Strange Attractor?

"What is Truth?"



Formal logic is interesting because it captures both the essential qualities and the essential deficiencies of how human beings think. We have a natural tendency to draw sharp lines and draw (frequently binary) distinctions, while nature tends force us to revise the boundaries we use to draw human-navigable maps of the world. Logic is pragmatic: it makes sense, and yields results. However, like all practical expedients, logic is quite fallible, and often entails subtle complexities even in the pursuit of relatively simple goals. Some authors [3] have characterized logic as a way of thinking about thinking. This is a very interesting view. It means that if we soberly and seriously attend to what goes on in our logical constructions, we may learn something about how we think and what our thinking can and can't and tell us. This, however, means we must understand logic as a human construct with both human relevance and human imperfections.

There has been some excellent writing by some superb minds on the subject of formal logic, its relevance and its connection to informal logic, and I leave it to better experts than to elucidate this matter [5]. Instead, because I try to write as much as possible to the level of the lay-person, I would like to give a few simple and informally constructed examples to give the reader a flavor of basic logic, as a lead-in to a somewhat surprising, and unexpectedly colorful analogy between the abstractions of logic and the deceptively simple behavior of a certain class of phenomena that are both intuitively sensible and concretely physical.

Binary distinctions are everywhere in human thought: yes and no, up and down, light and dark, before and after, inside and outside, present and absent. They're a basic staple of how we see the world. It turns out, they're also a very efficient way to encode and store a lot of information. Consider the familiar game "Twenty Questions", where one player thinks of something and the other players try to determine what it is the first player is thinking of by asking him or her a series of no more than twenty yes-no questions. A few years back, some enterprising folks manufactured and marketed a electronic version of this game, packaged in a unit small enough to fit in the palm of one's hand. The game, and its clones, seemed to be astonishingly skilled at guessing what human players were thinking of -- provided, of course, they did not change the thought-of object midway through the game, or choose something extremely specific or idiosyncratic. The secret to the little gadget's success, however was no different than the strategy commonly used by human players: ask very broad questions at the start (e.g. "Is it an animal?"), and gradually narrow the scope until the set of possibilities is small enough to allow successful guessing (e.g. "Is it a cat?").

It appears that a large class of familiar things (and even many unfamiliar things) can be identified by a series of yes-no questions. This is, for instance, why Twenty Questions is not too hard to win, and not even too hard, with the help of modern technology, to implement as an electronic circuit. This observation is also at the heart of classical logic. In such traditional systems of logic, every proposition is either true or false (No exceptions!) and propositions can be connected using a few simple operators to express the truth or falsity of more complex expressions. In this context, 'operator' is perhaps an over-glorified word. The operations I am referring to correspond (tellingly) to very common words that are staples of ordinary reasoning about everyday things: 'and', 'or', and 'not'. Letting '1' stand for 'true' and '0' stand for 'false', we can succinctly express 'and', 'or', and 'not' in the following tables:





AND01
000
101









OR01
001
111









NOT
01
10



These correspond to basic intuition: if p and q are statements about something, p AND q is true only if the truth of p coincides with the truth of q. For instance, suppose p stands for 'eats grass' and q stands for 'says moo'. If we apply p AND q to a cow, then p AND q = 1 certainly, since we've seen cows eating grass, whence p = 1, and since everybody knows the cow says "moo", whence q = 1 as well. On the other hand, if we apply p AND q to a sheep, we have p AND q = 0, since sheep eat grass but generally have other things to say.

We don't, however, have to restrict ourselves to just conjunctions, disjunctions, and negations of simple true-false statements; we can use 'and', 'or', and 'not' to connect formulas to other formulas. Recursively, if P is any (arbitrarily complex!) formula, and Q is any other formula, we can connect them using any of our operators to get a new formula whose value depends on the respective values of P and Q in a way that respects our simple truth-tables above. The basic construction of logical formulae thus uses only very simple building-blocks; the formulae themselves, however, can become huge and immensely complicated.

An example is instructive. Suppose I come to you and say "I'm a secret super-spy!" Your first inclination might be, "Well, if it looks like a spy and it acts like a spy, it's a spy." That is, you might represent your belief that I'm a spy by the formula:

let
p =
"looks like a spy"
q = "acts like a spy"
in
p AND q


However, after a while, you might think to youself, "Gee, I've never met a real spy before, so don't really know how a spy looks or acts", so you decide to refine your idea of the situation a little further. Spies keep a lot of secrets, so you decide that if I don't act secretively enough, I'm probably not a spy, or I'm not a very good spy, or I must really trust you to keep my secrets. You also decide that spies are pretty busy working for someone, and so I need to be off doing spy things as frequently as possible, and not ordinary stuff, and so your idea grows:

let
p =
"looks like a spy"
q = "acts like a spy"
r = "is secretive"
s = "really trusts you"
t = "is busy"
in
(p AND q AND (r OR s) AND t)


After some further reflection, though, you realize that it's also possible that I'm deep undercover, and so even though I might be part of some super-secret operation, I might be going to great lengths to appear as if I'm leading an ordinary life so I don't blow my cover That means that either I'm deep undercover or I'm not telling the truth about being a spy, and so things get even more complicated:

let
p =
"looks like a spy"
q = "acts like a spy"
r = "is secretive"
s = "really trusts you"
t = "is busy"
u = "is deep under cover!"
v = "is telling a tall tale ..."

in
(p AND q AND (r OR s) AND t AND (u OR (NOT v)))


If I regale you with tales of super-spy exploits, you'll have even more information that you'll have to take into account: if I say I was part of a secret plot to blow up Professor Nightmare's death-ray on Flaming Death Island, then that means that either I was part of a super-awesome adventure and it didn't make the news and death-rays exist, or I'm telling you a tall tale, in which case maybe I'm not trustworthy and I'm making the whole thing up:

let
p =
"looks like a spy"
q = "acts like a spy"
r = "is secretive"
s = "really trusts you"
t = "is busy"
u = "is deep under cover!"
v = "is telling a tall tale ..."
x = "super awesome adventure!"
w = "none of the exciting news is ever fit to print"

in
(p AND q AND (r OR s) AND t AND (u OR (NOT v)) AND (x OR (w AND (NOT v))))


As you can see, things may get arbitrarily complicated, and as your idea of me as the super-spy depends upon more and more variables, you find your belief pulled ever more chaotically back and forth between amazement and incredulity. However, I don't have to cook up an incredible story in order to exhibit an instance of a phenomenon with simple parts and simple rules that nonetheless behaves in strange and wildly unpredictable ways.

Sitting on the Fence



"Chaos theory" broadly refers to a large area of research in mathematical physics that originated in the 1960s and flowered in the 1970s and 1980s as science turned its attention to physical systems that exhibit large changes in response to small variations. Like logic, chaos and non-linear dynamics are an active area of study with their own deep and fascinating literature, and so I leave it to those more accomplished to exposit their virtues and mysteries. (The interested reader might consult [4] for an informal but very readable overview of the field, and [6] for a more formal but equally readable presentation of the basic mathematics.) Instead, I would like to borrow one very simple device from the field, in the hopes that perhaps it leads us to a interesting analogy.

A physical system is typically said to be bistable if always tends toward one of two stable states as time passes. Such systems are interesting to non-linear dynamicists because, although they exhibit stability after enough time has elapsed, it is often very difficult to predict which state the system will ultimately end in. A classic example is a ball perched on a very thin divider, as in:





Common experience should be enough to convince the reader that the ball will always fall to one side of the divider, or the other. If the divider is relatively wide -- almost but not quite wide enough to allow the ball to be balanced -- the experimenter should be able to make fairly reliable predictions about which side the ball will fall to when placed. If the ball is sufficiently off-center to cause it to roll to the right or to the left, the imbalance will be visible at the outset. However, if the divider is narrow enough relative to the diameter of the ball, it will be very difficult to predict to which side the ball will fall, no matter how much is taken in placing. (The reader is encouraged to go play with some blocks, and so become really thoroughly convinced.) In this case, the very same physical forces are acting on the ball (e.g. gravity, the normal force exerted by the divider), but slight variations in how the ball is placed will be much harder to detect. As if that didn't make predictions hard enough, the many tiny irregularities in the ambient air currents or in the surface of the ball and the divider have a much larger proportional effect on the motion of the ball than they did when it rested upon a relatively wide divider. By making the divider very narrow relative to the diameter of the ball, a huge number of almost invisibly small variables become relevant to the final outcome, and much smaller inaccuracies in the initial placement of the ball may have a much larger impact on its motion and hence its final state, i.e. whether it comes to rest to the right or the left of the divider.

One interesting thing about this example is that predictions are easy when the relevant variables are few and the forces at work are large and easy to observe, but hard when many variables must be accounted-for and the forces at work obscure. Phrased this way, it doesn't seem excessively imaginative to note the wide-versus-narrow comparison made in the ball example is somewhat like the difference between judging the truth of "x is a cow", which requires relatively little information about relatively few features, and judging the truth of "x is a secret super-spy", which seems to require a great deal of information about very hard to discern features.

Getting the Ball Rolling



Suppose I wanted to construct oracle that answers simple yes-no questions. (Think "Magic 8-Ball", not "Delphi") The ball-and-divider gizmo described above is one very good candidate. All we need to do is let "left" stand for "yes" and "right" stand for "no"; if the ball rolls off the divider to the left, that means the oracle says "yes" to our question, whereas if the ball rolls to the right, that means "no". If we want the oracle's advice (in "yes-no" format, of course), we just utter the appropriate incantation, ask our question, then perch the ball atop the divider and see which side it rolls to. In keeping with the venerable old tradition of superstitious parlor games, we could keep the divider very thin, which would give the ball's motion an appropriately oracular irregularity. (Nobody likes an oracle that always say the same thing.) On the other hand, we could make the divider wide enough that the ball's motion would be easy to predict. (As long as we "clear our minds" sufficiently before playing, getting what we expect might make our oracle more suited to the company of the popular Ouja Board and the Magic 8-Ball, human psychology being what it is.) If our construction was precise and careful enough that we could control which way the ball rolled according to its initial placement, we would have something less like a Magic 8-Ball and more like a transistor.

The transistor is the textbook case of a bistable system. Very loosely speaking, a transistor acts as a material whose overall conductivity is "balanced atop" a semiconductor in a way that can be pushed either to conduct or resist an electrical current. This allows the transistor to be used as a two-state switch. (A light switch is a two-state switch, in that it is generally only "up" or "down".) The importance of semiconducting technology to the development of modern technology cannot be overstated; the invention of the transistor set in motion the explosive advance of the digital computer, which, at its most basic, is nothing more than a very complicated assemblage of two-state switches. Thus, our simple ball-and-divider oracle actually shares and interesting (And not coincidental!) kinship with a basic building block of the computer as we know it.

In its present, very simple state, the ball-and-divider oracle can be used as a machine that computes the answers to exceedingly simple yes-no questions. If we "ask" the oracle to check a statement we know to be false, we place the ball slightly to the right, so that it rolls of the divider onto the "no" side; if our statement is true, we place the ball slightly to the left. At this level, of course, the exercise seems silly: the little gizmo only does what you expect it to do. At the same time, in a world that's full of seemingly random occurrences and surprising things, it is actually extremely noteworthy when something behaves the way we expect it to behave. We can thus use our little oracle as a an external model of our internal judgements.

Nobody's going to be too impressed at a ball that rolls off a wall, but suppose we gave our construction a little more refinement and complexity. Suppose we have at our disposal a team of master craftsmen, and we ask them to modify our oracle as follows:



Essentially, our oracle now has a small replica of itself built onto its left and right sides. Instead of controlling our device by placing the ball, let's also ask our craftsmen to give us some way to modify at will the slope on top of the various dividers, so that we know which side the ball will roll to when it encounters a divider. (Perhaps each divider has a sloped piece that can be snapped on and off the top, so that the direction of motion can be reversed by turning the piece around.) Obviously, the measurements must be (excruciatingly) precise, and the device very carefully constructed, but if all goes according to plan, we can now ask our oracle more complicated questions. But how?

In the original construction, we assigned a truth-value (that is, 'true' or 'false') to each side of the divider. I chose 'left' for 'true' and 'right' for false, but we could have easily chosen the other way. In essence, the original construction corresponds to the simplest logical formula of all, namely, the formula with one variable and no connectives, e.g. just p. However, our new oracle now has two smaller copies of the original constructed into it. We can use this! Suppose I arrange the device so that the ball rolls to the left of the center-most (that is, highest) divider. After it rolls to left, it will fall a short distance and (if the device is correctly constructed) encounter another divider. If this second divider can also be arranged to direct the motion of the ball, we can make it stand for a second statement whose truth depends upon the first. For instance, suppose that we have a statement '(x eats grass) and (x says moo)'. We let the first divider stand for 'x eats grass' and let the two other dividers stand for 'x says moo' (we do need to use them both). If we adopt the same semantics for our two secondary dividers as we did for the first, i.e. if the left side of each stands for 'true' and the right side 'false', our device now computes not just p but p AND q:



It is no mistake that the labels along the bottom of the device correspond to the truth table given for 'and' in the above. We can similarly arrange devices that behave as OR and as NOT:






Now things will really start to take off, provided of course that we have the continued support of our craftsmen. Suppose that our team is able to construct machines with as many dividers as we please -- even up to very huge numbers --- and suppose that these machines have the same stable, predictable, reproducible behavior as the simple ball-and-divider construction we began with. The tremendous importance and difficulty of this stability to the function of the overall machine should not be underestimated and cannot be overstated. Small influences cannot be overlooked, and we must ensure that every possible force is very precisely accounted for in the design and construction of the machine. If we don't, there is no way that our thoughts can follow the bouncing ball -- its motion will be chaotic and random! (This challenge is not unlike tremendous effort that has been required -- and continues to be required -- to design and construct reliable solid-state electronics.) If, however, we can overcome the difficulties of physical construction, our little oracle will have grown into a programmable machine that, given a set of truth-judgments, can evaluate the truth of arbitrarily complex logical formulae. How might this be done?

Suppose we've overcome the construction challenges, and we can add as many dividers as we please. Suppose also that we have a logical formula with N many propositions (e.g. "x eats grass", "x says moo") and a collection of N many truth-judgments about our respective propositions (e.g. "it's true that x eats grass", "it's false that x says moo"). Starting with just one divider in the center of the board, we add 2^k additional dividers for each kth additional proposition. That is, we add 2 additional dividers for the first additional variable, 4 for the second, 8 for the third, and so on. We add the dividers in tiers of the same height, and associate to each divider a collection of dividers with the same height. Thus, for example, if p, q and r are propositions in our formula, we arrange our dividers as:



Note that our first tier, which consists of only a single divider, splits the plane of the device in half. The second tier, consisting of two additional dividers, taken together with the first, splits the plane in quarters. The third tier, consisting of four additional dividers, and taken together with the first and second tiers, splits the plane into eighths. Thus, for each proposition, we take a set of dividers all of which stand lower on the board than the last tier, and place them on the board so that split each segment of free space in half.

Now we want our machine to express some relation between the variables. That is, we want to program our machine with a chosen logical formula. This is done by labeling the slots in the board that lie between each pair of dividers. For instance, we obtained 'p and q' as well as 'p or q', both of which have two propositional variables, by changing the labels along the bottom of the board. If the ball falls into a slot labelled '0', this indicates that our formula expresses something false; if it falls into a slot labelled '1', this indicates something true. The machine is now configured in a way that models some logical formula with N propositional variables. For example:



Our machine is now programmed and ready to go. How do we give it input, that is, how do we ask it to compute the truth of our logical formula given a set of true-false judgments about the variables? This is accomplished by tilting the dorsal surfaces of our dividers, in order to govern which way the ball should roll when it encounters a particular divider. If we stick to our true-left, false-right convention (which we might as well, to keep things simple), we slope a given divider to the left or to the right according to whether the proposition corresponding to its tier is true or false. For example, if 'p' and 'r' are true but 'q' is false:



Now we're ready to go! Once we've gathered all of our information and set up the machine, we set the ball in the middle and just let it roll; the label attached to the ball's final state corresponds to the truth or falsity of our original statement.

(It should be noted how strongly the operation of our machine resembles that of the famous and very real "Plinko" device, which was prominently featured on the popular game show "The Price Is Right". The important difference between Plinko and our machine is that Plinko seemed to purposefully admit a fairly high degree of random behavior, as evidenced by the conspicuous bounciness of the pegs. This seemed to be an important part of both its appeal and its challenge.)

If all goes well (Does it ever?) our machine can successfully automated a potentially very elaborate arrangement of logical judgments. Assuming that the work in setting up the machine is not too difficult or time consuming (which, in our example, it almost certainly would be for all but the most trivially simple formulae), we can now model our basic truth-judgments as we understand them and apply them to very complex situations that would otherwise be humanly impossible to reason through. This is effectively what makes the modern digital computer so powerful and useful: it can apply our own basic "and/or" and "not" intuitions to arrangements that are complicated vastly beyond our own human cognitive abilities. Unlike our Plinko-like machine, however, an electronic computer is much easier to program and will execute much more quickly, though, again, this difference is relative and not at all absolute. Any computer programmer or engineer of even modest experience will most certainly agree. (Despite the computer comparisons, I cannot resist a technical note that our deterministic Plnko-machine is not a Turing Machine, since it lacks a random-access memory.) These differences aside, our imaginary machine is now much more than silly toy: it is a very complicated system that behaves the way we expect it to. Again, given the dear scarcity of things in life that we can expect, this very noteworthy.

In the same way that a bridge allows us to use ordinary human ambulation to cross expanses that we could not traverse on foot, our machine is a tool that allows us to apply our ordinary reasoning to systems whose complexity is far beyond human comprehension. This is all good and fine but (again inviting the reader to go play with some blocks), the bigger bridges get, the harder they are to construct, and the same law of increasing difficulty applies to the size and complexity of the ball-and-stick logic machine.


"Truth is stranger than fiction."



If Newton stood on the shoulders of giants to see as far as he did, it would seem that none of us are in a position to refuse the invitation for a boost above eye-level by someone of greater stature. So, let's push our little logic machine its logical conclusion, using a venerable old trick: limits at infinity.

In the preceding section, we saw that we could use our little logic machine to compute logical statements in as many variables as we pleased, simply by adding enough dividers. As we add variables, a forest of dividers springs up on the plane of our device, becoming (exponentially!) more dense with each variable we add, so that this:



rapidly becomes this:



(Actually, with better artistic skills and more powerful drawing tools, this would
come out something like a collapsed Sierpinski Gasket.)

As the number of dividers increases, the outline of our device rapidly converges to a pair of continuous slopes in opposite directions, both leading down from the same elevated point. A few features, both abstract and concrete, are immediately apparent.

Firstly, the functional details of our machine are now humanly unmanageable. How are we supposed to read infinitely small labels, or manipulate infinitely small parts? The parts do not even need to be infinitely small for the machine to become impractical; they just need to be very small relative to human eyesight. However, the machine is only really interesting if it can handle formulae with lots of variables, which necessarily entails exactly this kind of tortured, inhuman precision. If we wanted badly enough to use the machine, we could construct still other machines to program and use it, etching ball-slots with lasers, or watching the progress through a microscope. Be that as it may, even these methods have limits, and the density of trajectories within the machine grows explosively with each additional variable.

Secondly, the size of the ball that actually runs the machine now matters. An infinitely small ball (that is, one that has zero diameter but somehow "still exists") could be dropped on the machine, somehow falling through the infinitely dense forest of dividers to come to rest in an infinitely small notch, thus evaluating the truth or falsity of a logical statement somehow depending upon an infinite amount of information. Of course, this always mattered, but we glossed over it in the construction. The ball obviously must be large enough to fall through the space between dividers. This means, however, that computing a logical formula with more variables requires adding more dividers and hence requires a small ball. Not only that, the size of the ball must shrink exponentially as the number of variables grows. Basically, there is a vicious dependency between components of our machine. This dependency moreover tightens (Worsens?) as the machine grows in power. The ball we drop will rapidly shrink to the size of a dust-speck as we increase the informational output, no matter whether it starts out the size of an orange or the size of a planet.

There's more. Notice that any sufficiently large ball (really, any ball with a diameter greater than zero), when dropped into our infinitely powerful logic-engine, will appear to roll all the way to the left or all the way to the right. Moreover, because our dividers must be very (i.e. infinitely) small in order to fit onto a finite board, the starting divider which sits at the center will always be very small relative to the diameter of the ball. But that means that our infinite logic-engine, when used with a finite-diameter ball, will actually behave exactly like the very chaotic ball-and-divider construction we started with!

Suppose our board has finitely many dividers, but the space between them is sufficiently small relative to the diameter of the ball. When we try to run our logic engine, the ball will eventually reach a stable state but will fail to fall all the way to the bottom of the board because the spaces below will be too narrow for it to fit. What this means is that, given a ball of a certain spatial extent R, there is a limit to the number variables that a given (finite) logic-machine M can model, and hence to the number of logical formulae it can compute. Moreover, the upper bound on the number of variables in the formulae M can compute is proportional R! Essentially, a finite-variable logic-machine is approximated by an infinite-variable logic machine using a ball with non-zero diameter. What happens in such a case is that the ball simply settles into a rut somewhere between the central divider and one of the edges of the board. Everything below this height corresponds to the "random noise" that is assumed away by the modeled formula.

What does all this mean? Infinite information looks like randomness, and classically logical systems can only model systems with finitely many variables, where the difficulty of model-construction grows exponentially as information about the system is added. Somewhat pretending to understanding, this vaguely resembles a certain theory of Chaitin's [2]. Without pretending, this simple, mechanical analogy greatly resembles familiar human reasoning, in which too many details makes things fuzzy, so that hypotheses that require too much information to evaluate are indistinct from an uninformed assertion of "random" behavior.

In an alternate construction, we might notice that infinitely small labels along the bottom of our infinitely dense board somewhat resemble a Cantor dust or a one-dimensional Julia Set [1]: a ball might roll arbitrarily close to the "true" side of the board but come out false, or arbitrarily close to the "false" side and come out true. Thus life always manages to surprise us, and categorizations always prove intractably blurry about the edges, no matter how logical we choose to be.

Logic thus gives us a bridge beyond some of the limitations of working memory and attention span, which mechanism moreover can extend. However, this extent quickly and easily collapses under its own weight when stretched too far, in exactly the way that a real bridge does. Either the ideas we consider abstractions are very much like our supposedly "concrete" perceptions of the "real world", or supposedly abstract constructions, no matter how empyrean or pure, are subject to the same noisy unpredictability of the physical world we actually inhabit.




[1] Barnsley, Michael F. Fractals Everywhere. Academic Press Inc., 1988.

[2] Chaitin, G. J. Algorithmic Information Theory. Cambridge University Press, 1987.

[3] Ernst, Zachary. Free Logic Now! Available here.

[4] Gleick, James. Chaos: The Making of a New Science. Penguin Group, 1987.

[5] Quine, W. V. Philosophy of Logic. Harvard University Press, 1950.

[6] Strogatz, Steven H. Nonlinear Dynamics and Chaos. Perseus Books Publishing, 1994.