Friday, January 20, 2006

Lisp, Satan, and the Americans with Disabilities Act

Or how a big blue button demonstrates that data is code and code is data.

I was walking to my office at work the other day when I overheard two students discussing the big blue "ADA assistance" button at the bottom of the stairwell I was passing at that moment. The button is important because the building I work in is an old one - decrepit and historically important at the same time - so accessibility is an unresolved issue. To make a long story short, the building cannot be torn down because it is old and decrepit, but it is decrepit and without improvements (such as elevators for those who cannot easily climb stairs) because it is not considered "worth" the effort to fix and/or modify. Yet, important services such as the issuance of university ID cards and financial aid are located in this old building where any department is at least a half-flight of stairs away, forcing nearly every student to trudge through its antiquated labyrinth.

Thus the need for the big blue button. When someone who cannot ascend or descend stairs alone arrives, they push the "ADA" button and help is on the way. Let's just skip the more obvious problems with this process and get to the one of note for this discussion: in order to press the button, one must be an "ADA". Here is where the discussion started, since one of the young ladies mentioned was attempting to determine whether she needed to press that shiny blue button - what was an ADA and whether this was merely some sort of doorbell or yet another quirk of the stepped-up national security. You see, she didn't really get what an ADA was because there isn't really such a notion as "being" an ADA, unless one is considering an anthropomorphized view of a legislative act. There is something more here: to arrive at her quandary one must (at some level) define someone's needs, if not their identity, through the legislation forged to assist them. Ponder that one. Her issue, in particular, was that she was unable to resolve the situation: here was a button for certain services that she required, but to push it one must be an ADA. She was more than likely familiar with the ADA (at least in a general sense), but was obviously confused as to whether this notice referred to THAT ADA, or some other ADA more descriptive of her condition. It seems that the sign could have simply read, "If you are in need of assistance," since I doubt that the person who arrives to help the button-pusher checks to see whether the ADA applies to the individual before proceeding. And here is a clear example of someone who required assistance, if not for the reasons outlined in the ADA. Hmmm. Somewhere in there we nearly tangled up our nouns and our verbs, our data and its execution. Fortunately, we simply transposed our nouns, providing a separate CDR for our CAR (in Lisp-speak) but following the same model.

Somewhere along the way in the past few days, I found myself describing a novel I read years ago, Satan: His Psychotherapy and Cure by the Unfortunate Dr. Kassler, J.S.P.S.. Jeremy Leven must have encountered a biography of the computing pioneer, John Von Neumann, since his character Leo Szlyck bears some slight resemblance. Perhaps it is coincidence, but when Leo sees railway signs transform into the circuit diagrams used to construct a computer - and ultimately "reconstruct" Satan - I was reminded of the stories of Von Neumann's meditations. Read the book, it will bend your mind a bit. Anyway, here the (to totally destroy a reading of McLuhan) medium is the message - or maybe just the transport. It is through the careful manipulation of structures (largely, influencing Szlych) that Satan is able to re-emerge, and through these same structures he is able to manipulate Dr. Kassler (J.S.P.S., or just some poor soul). Thought becomes substance, and substance becomes thought - but isn't that the same as saying code is data, data is code? Moreover, what is Satan at this point (in the novel)? Is he alive, is he thought, is he code? While Leven leans the reader in a certain direction (in that Satan isn't bounded by the confines of the machine), there is a heavy reliance upon slippery (loosely typed) nouns. Satan is in fact manifested (in one form) through the physical circuits, but also through various events (or functions, at least through implication).

So what do these things have in common? Lisp. Well, not Lisp necessarily, or even directly, but there is a notion behind s-expressions (the core concept of Lisp) that drives the hideous aspects of the ADA button and Leo Szlyck's creation alike. That notion is that code is data. That notion is that data is code. One of the tricks to understanding Lisp (if not life) is leveraging the slippery nature of things/objects/atoms/however-you-wish-to-discern-the-common-mote. Lisp is one of many programming languages that takes advantage of the fact that functions can become data and vice-versa. Yet our everyday, natural languages allow this sort of usage all the time. Some languages are more forgiving than others, and perhaps (depending upon one's acceptance of Sapir-Whorf) our mental constructs as well, but it seems that Lisp is more natural-language like in (at least) this respect.

So what of blue buttons and Satan(s) (after all, there is still a Microsoft AND automated check-out at Wal-Mart)? Can they be explained as a failure to understand the transitive implications of the s-expression? Probably not. In both cases (the girl pondering the ADA button and Kassler battling Satan), the main issue is an inability to recognize something outside of its familiar (internal and self-constructed) cage. Nonetheless, I think that the sexp (s-expression) is an interesting way to consider these little quirks. And while the sexp doesn't necessarily mean data is code and vice-versa, it does allow such a broad treatment of both events and things.

Friday, January 06, 2006

Internet quizzes

I just took another of those infamous political polls. I guess that the purpose of these time-killers is to allow the average Joe to figure out where they stand politically, but I really wonder whether there is there a reason why people are not able to figure this out without the aid of an internet form?

One issue that stikes me is that these surveys never have the really interesting questions. I would prefer something far more "edgy". For example:

a) Scotch or bourbon?
b) If you only had one computer, would it be a laptop or a desktop?
c) You are stranded on a desert island with only one video to watch: Michael Moore or Rush Limbaugh?
d) You are abducted by aliens. Do you ask for answers regarding who killed J.F.K. or the infamous probe?

Speaking of alien probes, I just took the "geek test" at innergeek. Talk about slanted questions. Needless to say, I scored in the "Super geek" range (despite never having bitten the head off a chicken) with a (rounded) 49%.

Really, I wonder about our need to conform to some group, some pre-conceived notion of who we "are" in the chest-pounding, visceral sense of self-assuredness. Yet, it seems that there is no assurance; that we should hope that our personas are as dynamic as the we hope to be, adapting to the present need yet always ourselves. However, I suspect that most of the participants in your average internet survey are people just playing their hand, seeing if they are perceived in the same terms applied by the self. That is, most people really don't care what the form says, they are simply applying a sort of Turing test to the 'net in an attempt to see if the "machine" is as smart as he or she is, without any serious intent.

You wonder whether this need to conform has always been evidenced in mechanisms such as surveys. Would Sven the Viking been more self assured had he taken the Metrosexual quiz? Perhaps Casanova should have taken a quiz on sexual addiction.

So are these quizzes merely entertainment, or is there a greater social value? Are we, as a society, cautiously broaching those difficult questions about ourselves, our ethics, norms, and morés? Or are they really just a bunch of pop culture artifacts posing as lightweight sociology and psychology? After all, there are no control groups, no discussion of method, and only the simplest of statistics: a ranking on a range, as if you were attempting to ring the bell with a sledgehammer at the carnival. Maybe there is some quiz I can take in order to find out these answers.

Monday, January 02, 2006

What's wrong with self-checkout

In today's hectic world, it often seems that direct human-to-human interaction is in grave danger. We speak to each other through email, over phones (cell or otherwise), etc., but it seems increasingly rare that we strike up a trivial conversation with our neighbor and hear another perspective on life's events. Yet one place where this chit-chat still occurs is the grocery check-out line. When my wife and I go shopping, it is a rare thing when the the clerk is not engaged in friendly conversation with my wife, often informing us of interesting or important tid-bits of information: there is a sale tomorrow on cookware, he or she is friends with my next-door neighbor, etc. And while I am not a great conversationalist and seldom engage in these conversations, I nonetheless enjoy them and (possibly for this reason) always seek out a chatty-looking clerk when I am shopping alone.

About a year ago, our local monopolistic house of cheap imported goods installed a number of self-checkout lines. I have used them once or twice, usually out of necessity, and truly abhor the experience. Yet, at some level it strikes me as odd that a geeky fellow such as myself would have an aversion to what is arguably a neat toy. Why do I dislike automated checkout? Obviously, the shopper is doing all of the work, but that shouldn't be a problem; after all, I am quite willing to load and unload my own cart, go through the rituals required to run my debit card, (sometimes) bag my goods and load them into the cart, transfer the bags into my vehicle, put the cart away, unload the bags from my vehicle, and put the goods in their proper locations in my home. Ringing the goods up on a register is really a trivial component to this process.

So if it isn't the work, is it the lack of conversation such as I mentioned above? After all, the cartoon-ish graphics on the LCD screen don't really connote "chatty", even if there is "conversation" at some level taking place. The interaction could be far friendlier, perhaps even eventually using a robot such as ASIMO or Repliee Q1Expo. Yet, there are two problems here: 1) we interact with other humans quite happily in far more restrictive conditions - a Russian ham-radio operator conversing with an American one using Morse code, for example, and 2) conversation with a human clerk is possible, but does not always occur. I suspect, however, that this lack of potential conversation is a factor in my aversion.

One aspect of the conversation that does occur, and that is perhaps the leading cause of my aversion, is the nature of the relationship between human and computer in these self-checkout lanes. Here we have the culmination of decades of technological research embodied in an appliance; these machines are not very intelligent and do not operate well outside of pre-determined limits. Those limits are tightly coupled to the perceived (by the designers) shopping process: take an item, scan it, put it in the bag. After so many items are placed in a bag (by weight), remove the bag and begin loading a new bag. Once you have scanned all items, pay, receive your change (if any) and receipt. Then begin the loop again. A very simple process that is about as efficient as a single chicken plowing a field. Moreover, the process works well in an automated environment, but humans are not "automatic". We don't always want to put that soda we just purchased into a bag, nor do we want to mix certain items. And these automated lines aren't very fault-tolerant: once an exception occurs, it usually winds up requiring the assistance of a human pseudo-clerk whose job consists of watching a half dozen machines to make sure that self-checkout proceeds smoothly.

All of the above are problems with the human-computer relationship, but the most grevious issue (in my mind) is that the computer is in charge. Each step of the way, some appliance with a horrible user interface dictates the shopper's next step, in, basically, an inversion of most human-computer interactions, at least as far as they are intended to work. Worse yet is that in typical human-computer interactions, the human is attempting to leverage some quality of the machine (fast processing, large amounts of data, etc.), yet in the self-checkout lane, the computer (easily the "dumber" of the two in its stripped-down appliance form) doesn't leverage the intelligence of the user at all.

In fact, human intelligence is probably one of the leading causes of "exceptions" as we attempt to optimize our shopping, ordering items on the conveyor belt, etc. We all have our personal quirks about us. Perhaps you order our cart into categories by weight, type, or even price. Perhaps you put items about which you have a question - price, quality, etc. - into the top basket of the cart. Maybe you make every effort to minimize your impact on the environment and bring your own bag(s). Maybe you like to have everything double-bagged, with an even number of items in every bag. However, the computer doesn't account for these variations. I assume that the companies that develop the checkout software see these variations as too difficult to account for. I would also suspect that a number of developers would welcome the challenge. Instead, however, the software adheres to a market-driven conformity: no bells or whistles, out the door fast, and little need for user training. Unfortunately, then, it seems that to use the self-checkout (a misnomer, since it is really a computer in charge) is to deny our own personal way of shopping and submit to an alien sense of conformity.

So I always make an effort to find a human clerk when I an checking out. Perhaps I will find out about the classes she is taking, his hometown, her engagement, his new dog, etc. Perhaps we will sit there in a cold silence heated only by the fact that we are two humans interacting. Regardless, we will both retain some semblance of our individuality through the process.

Wednesday, February 02, 2005

Language Tree

I just ran across a post on slashdot that pointed to a computer language lineage tree. Another tree is located here. Interesting stuff.

Past that, I've been busy catching up on reading. Currently, C.L.R. James's history of the 1791-1803 Haitian Revolution, _The Black Jacobins_ ; Ania Loomba's overview of colonial theory, _Colonialism/Postcolonialism_ ; Frantz Fanon's seminal work _Black Skin, White Masks_ ; Aimé Césaire's influential _Discourse on Colonialism_ ; and the last parts of Charlotte Bronte's classic novel _Jane Eyre_. Not much to say yet other than I feel that Loomba tends to overgeneralize and leave out what was happening on native shores. That is, the machinations of colonial powers in foreign lands cannot (I feel) be reduced to the evil of Europeans when much the same evil was happening within Europe. These were brutal times and those in power seem to have had little regard for humanity (though I doubt past tense is needed here). There is more of an intimation of such in Jame's work - interestingly written in 1938, whereas Loomba's work was published 60 years later, in 1998.

Lastly, working on a paper for a conference. I don't want to let too much out of the bag yet, but basically it entails entertaining a new way, a "fresh" framework, for examining software. Hopefully, I can allocate the time to get everything wrapped up, though much of it has been percolating in my brain for awhile.

Sunday, January 23, 2005

Shooting for the Middle: Amdahl and Zeno

Is there some sort of law that guarantees mediocrity; where natural selection chooses the best within guidelines rather than the best of species? Consider for a moment the law of diminishing returns. Within such a mindset, there might exist a demonstration of a diseconomy of scale, where the extra "effort" of producing and selecting only the "best and brightest" is not offset by the gain.

There is an analogy to such a diseconomy in computer science: Amdahl's Law (another resource here). Interestingly, according to Amdahl's law, the increased effort does not have a linear relationship to gain, but rather a sort of inverse geometric or even Fibonaccian one. That is, the effort to increase gain rises more quickly than the gain itself and, thus, we see diminishing returns.

An early exploration of this idea is Zeno's Paradox of Dichotomy (recently used as the basis for an experimental film by Robert Arnold). Essentially, in this paradox, one never reaches the end-point because of the infinite number of midpoints. I am presenting (possibly) a bit of an oversimplification, but one gets the point. However, if one takes, for example, Zeno's illustration of the tortoise and Achilles as a metaphor for natural selection, then one sees another way in which increased effort does not scale to increased gain. Essentially, the situation is fixed: we may "evolve" further, but we never quite catch the tortoise.

Of course, I am applying a literary structure to scientific theoretical models - a reversal of the typical modern relationship. This is a useful exercise for pondering, but not much else. As opposed to Amdahl's law, I cannot quantify or define; I cannot assert a Grand Theory relationship among Zeno, Amdahl, and Darwin. However, I can reflect upon the persistence of what we call mediocrity and wonder if, instead, mediocre is really best, if a bell/Gaussian curve is better than disruption.

Friday, January 21, 2005

Xanadu in Code - in disconnected fashion

I've been reading a bit about Ted Nelson and his project Xanadu. Nelson is a character who seems to flit in and out of public view, seemingly hard to nail down - much like his Xanadu project. Inasmuch as intertexuality supercedes the intratextual, xanalogical structure supercedes our ideas of the relationships between/among documents/texts. In a sense, Nelson is after the Urtext as formulated in the consciousness, the perfect original as planned based upon both background and future-planned; the portmanteau in the "telescoping" sense that Robert Withington used: the meanings "slide" into each other, are mutually - aye, symbiotically - dependent.


There are several ways that texts can "link" - whether truly xanalogical or not. Xanadu looks primarily at how text link within the sense of the text itself, secondarily at how they link in terms of "relation". Intertextuality delves more into the latter, with a firm hold on the former. Deeper still, within the terms of our linguistic ability to express ourselves - a pressing out of the Whorfian walls - lies the ability to link texts at the/a linguistic level. That is, a translation of sorts, changing a text not only in terms of language, but also in terms of paradigm and intent. Such is the shift we see among "code poets", just take a gander at Perl Poetry, for example. There are several concepts at play here: linguistic innovation, reflection, and artistic expression.

Of the above concepts, I assume that the only one that might bear brief introduction is reflection. Thus, you might take a brief look, a google search, etc. Here is a starting point.

Anyway, years ago (2002), I translated a poem from Wang Chih-Huan, at least as already translated by Wai-Lim Yip: Heron Tower. As an exercise, I quickly translated the poem into Java code - compilable, the poem formed the main execution routine and output itself. The code itself is nothing great (really even that good), but the purpose wasn't the result as much as it was the method. Below is the code, for those interested:

//## 11/6/2002 Robert Pratte,
//## This is a translation of Wang Chih-huan's "Ascend the Heron Tower"
//## character based translation by Wai-Lim Yip:
//## white sun follow mountain end
//## yellow river enter sea flow
//## to exhaust thousand mile sight
//## again up one more level tower

public class HeronTower
// Class methods pertaining to movement
public static String follows (String passedLine_)
return ("follows " + passedLine_);

public static String enters (String passedLine_)
return ("enters " + passedLine_);

public static void exhausts (String passedLine_)
System.out.println (passedLine_);

public static class ascend
static String movement = "ascend";

static void again (String passedLine_)
System.out.println (movement + " again the " + passedLine_);

// Main - this builds and executes the poem
public static void main (String args[])
PoemObject mountain = new PoemObject ( "mountain" );
PoemObject sea = new PoemObject ( "sea" );
PoemObject tower = new PoemObject ( "tower" );
PoemObject sun = new PoemObject ( "sun" );
PoemObject river = new PoemObject ( "river" );

int mile = 0;

// Begin poem execution
sun.white (follows (mountain.tops));

river.yellow (enters (sea.flowing));

while (mile < 1000)
exhausts ("to see for " + mile + " miles...");

ascend.again (tower.stairs);
// End poem execution
} // end try

catch (Exception e)
System.out.println ("Error: " + e + "\n");
} // end catch
} // end main
} // end class

// Class for poem objects
class PoemObject
public String tops;
public String stairs;
public String flowing;
public String baseObject;

PoemObject (String passedObject_)
// some of these words should
// "always" be modified
if (passedObject_ == "mountain") {
tops = passedObject_ + " tops";
} else if (passedObject_ == "sea") {
flowing = "flowing " + passedObject_;
} else if (passedObject_ == "tower") {
stairs = passedObject_ + " stairs";
} else {
baseObject = passedObject_;

public void white (String phrase_)
SceneColor color = new SceneColor ("white");
System.out.println (color.apply (baseObject + " " + phrase_));

public void yellow (String phrase_)
SceneColor color = new SceneColor ("yellow");
System.out.println (color.apply (baseObject + " " + phrase_));
} // end class

// Class to "color" poem objects
class SceneColor
public String instanceColor;

SceneColor (String passedColor_)
instanceColor = passedColor_;

public String apply (String passedLine_)
return (instanceColor + " " + passedLine_);
} // end class

Sunday, January 09, 2005

Conrad and Naipul

This morning I finished reading A Bend in the River, a somewhat haunting novel by V. S. Naipaul. The context in which I am reading it is more-or-less as a post-colonial response / complement to Joseph Conrad's short work Heart of Darkness. There are a few things that immediately spring to mind:

- Naipaul's work isn't really derived from - though it may be influenced by - Heart of Darkness. There is a recent work, though, that serves the purpose of contextualizing Conrad's work while simultaneously addressing the (liminally) colonial/post-colonial theme: Apocalypse Now.

- There is something in the book that - perhaps surprisingly - reminds me of F. Scott Fitzgerald's quixotic novel, The Great Gatsby. There is something in the similarity of aloof wealth approaching impending doom. Is the Jazz Age a manifestation of colonialism? An interesting question.....

- I am also reminded of Morroccan novelist Abdelhak Serhane's novel of the village whore, Messaouda. The pathos of the young African Arab/Muslim caught in a world defined by others reciprocates across these works.

Conversely, (among other works) I am also reading Scott Adam's 2002 work, Dilbert and the Way of the Weasel. In a way, it seems that, if one drills down deep enough, all of these works explore similar themes. Perhaps one can see such an assertion if one imagines these works as circles intersecting in the manner of a Venn diagram. Dilbert would, of course, also represent a far different way of approaching such issues.