Tuesday, December 05, 2006

In his book on the development the C++ language, The Design and Evolution of C++, Bjarne Stroustrup says that in creating C++ he was influenced by the writings of Søren Kierkegaard.  He goes into some detail about it in this recent interview:

 

A lot of thinking about software development is focused on the group, the team, the company. This is often done to the point where the individual is completely submerged in corporate "culture" with no outlet for unique talents and skills. Corporate practices can be directly hostile to individuals with exceptional skills and initiative in technical matters. I consider such management of technical people cruel and wasteful. Kierkegaard was a strong proponent for the individual against "the crowd" and has some serious discussion of the importance of aesthetics and ethical behavior. I couldn't point to a specific language feature and say, "See, there's the influence of the nineteenth-century philosopher," but he is one of the roots of my reluctance to eliminate "expert level" features, to abolish "misuses," and to limit features to support only uses that I know to be useful. I'm not particularly fond of Kierkegaard's religious philosophy, though.

 

Stroustrup is likely referring to philosophical observations such as this:

 

Truth always rests with the minority, and the minority is always stronger than the majority, because the minority is generally formed by those who really have an opinion, while the strength of a majority is illusory, formed by the gangs who have no opinion--and who, therefore, in the next instant (when it is evident that the minority is the stronger) assume its opinion . . . while Truth again reverts to a new minority.

-- Søren Kierkegaard

 

Coincidentally, Kierkegaard and Pascal are often cited as the fathers of modern existentialism, and where Kierkegaard appears to have influenced the development of C++, Pascal's name lives on in the Pascal programming language as well as the Pascal case, used as a stylistic device in most modern languages.  The Pascal language, in turn, was contemporary with the C language, which was the syntactic precursor to C++.

So just as the Catholic Church holds that guardian angels guide and watch over individuals, cities and nations, might it not also be the case that specific philosophers watch over different programming languages?  Perhaps a pragmatic philosopher like C. S. Peirce would watch over Visual Basic.  A philosopher fond of architectonics, like Kant, would watch over Eiffel.  John Dewey could watch over Java, while Hegel, naturally, would watch over Ruby.

posted by J Ashley on Tuesday, December 05, 2006 11:23:08 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]
 Tuesday, November 21, 2006

Ian Fleming's spy novels are often compared to John Le Carré's.  The comparisons often find James Bond to be wanting.  In contrast to the emotional richness of Le Carré's internally conflicted heroes, Bond is often presented by his critics as a cardboard cutout with an overly simplistic view of the world.  Bond fights for crown and country.  Alec Leamas and George Smiley, on the other hand, realize that things are much more complicated than that.  Fleming presented a 50's version of the world where we all had just left off making the world safe for democracy, and still naively saw the cold war in black and white terms.  Le Carré, on the other hand, by drawing attention to the moral ambiguity at the heart of our conflict with the Soviets, turns James Bond on his head.

Or does he?  Written in 1953, ten years before The Spy Who Came In From The Cold, Ian Fleming's first Bond novel Casino Royale includes this surprising piece of introspection from 007:

"Well, in the last few years I've killed two villians.  The first was in New York -- a Japanese cipher expert cracking our codes on the thirty-sixth floor of the RCA building in the Rockefeller centre.... It was a pretty sound job.  Nice and clean too.  Three hundred yards away.  No personal contact.  The next time in Stockholm wasn't so pretty.  I had to kill a Norwegian who was doubling against us for the Germans.... For various reasons it had to be an absolutely silent job.  I chose the bedroom of his flat and a knife.  And, well, he just didn't die very quickly.

"For those two jobs I was awarded a Double O number in the Service.  Felt pretty clever and got a reputation for being good and tough.  A Double O number in our Service means you've had to kill a chap in cold blood in the course of some job.

"Now," he looked up again at Mathis, "that's all very fine.  The hero kills two villians, but when the hero Le Chiffre starts to kill the villain Bond and the villain Bond knows he isn't a vilain at all, you see the other side of the medal.  The villains and heroes get all mixed up.

"Of course," he added, as Mathis started to expostulate, "patriotism comes along and makes it seem fairly all right, but this country-right-or-wrong business is getting a little out-of-date.  Today we are fighting Communism.  Okay.  If I'd been alive fifty years ago, the brand of Conservatism we have today would have been damn near called Communism and we should have been told to go and fight that.  History is moving pretty quickly these days and the heroes and villains keep on changing parts."

Mathis stared at him aghast.  Then he tapped his head and put a calming hand on Bond's arm.

"You mean to say that this precious Le Chiffre who did his best to turn you into a eunuch doesn't qualify as a villain?" he asked.... "And what about SMERSH?  I can tell you I don't like the idea of these chaps running around France killing anyone they feel has been a traitor to their precious political system.  You're a bloody anarchist."

He threw his arms in the air and let them fall helplessly to his sides.

Bond laughed.

"All right," he said.  "Take our friend Le Chiffre.  It's simple enough to say he was an evil man, at least it's simple enough for me because he did evil things to me.  If he was here now, I wouldn't hesitate to kill him, but out of personal revenge and not, I'm afraid, for some high moral reason or for the sake of my country."

He looked up at Mathis to see how bored he was getting with these introspective refinements of what, to Mathis, was a simple question of duty.

Mathis smiled back at him.

 

Le Carré attempts to preserve us from full surrender to the topsy-turvy world by making it asymptotic to ourselves.  it is a point of evil, or the transvaluation of all morals, that his heroes are always approaching but also always stay just to this side of.  In this way, the Cold War becomes a metaphor for life itself.

Fleming's hero actually goes beyond this point, in the very first 007 novel, and comes out the other side.  The lack of moral ambiguity for which Bond is so frequently criticized is not due to the fact that he doesn't see it. Rather he sees it and surpasses it.

In order to keep Bond out of this topsy-turvy world, where good is evil and evil good, Fleming is obliged to provide his hero with a series of sufficiently evil villains.  First there was SMERSH, the Soviet counterintelligence and murder agency whose job it was to keep the people of the Eastern Block in line through intimidation and fear.  After a time, this was in turn replaced by SPECTRE, a world-wide terrorist organization bent on world domination (perhaps an example of art anticipating life).

Le Carré similarly requires the latticework of the Cold War in order to sustain his aesthetic-moral structure, and it is telling that following the collapse of the Soviet empire, his novels have become more simple David versus Goliath narratives with clear good guys (whistleblowers) and clear bad guys (international corporations) -- in a sense, more like the traditional Bond narrative.

 

"So" continued Bond, warming to his argument, "Le Chiffre was serving a wonderful purpose, a really vital purpose, perhaps the best and the highest purpose of all.  By his evil existence, which foolishly I have helped to destroy, he was creating a norm of badness by which, and by which alone, an opposite norm of goodness could exist.  We were privileged, in our short knowledge of him, to see and estimate his wickedness and we emerge from the acquaintanceship better and more virtuous men."

"Bravo," said Mathis. "I'm proud of you.  You ought to be tortured every day.... That was enjoyable, my dear James.  you really ought to go on the halls.  Now about that little problem of yours, this business of not knowing good men from bad men and villains from heroes, and so forth.  It is, of course, a difficult problem in the abstract.  The secret lies in personal experience, whether you're a Chinaman or an Englishman."

He paused at the door.

"You admit that Le Chiffre did you personal evil and that you would kill him if he appeared in front of you now?

"Well, when you get back to London you will find there are other Le Chiffres seeking to destroy you and your friends and your country.  M will tell you about them.  And now that you have seen a really evil man, you will know how evil they can be and you will go after them to destroy them in order to protect yourself and the people you love.   you won't wait to argue about it.  You know what they look like now and what they can do to people.  You may be a bit more choosy about the jobs you take on.  You may want to be certain that the target really is black, but there are plenty of really black targets around.  There's still penty for you to do.  And you'll do it...."

Mathis opened the door and stopped on the threshold.

"Surround yourself with human beings, my dear James.  They are easier to fight for than principles."

posted by J Ashley on Tuesday, November 21, 2006 11:08:13 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]
 Friday, November 17, 2006
There are a few good guides already on the internet that provide an overview of what is required to convert your Atlas CTP projects to Ajax Extensions. This guide is intended to consolidate some of the advice already provided, as well as offer a few pointers alluded to by others but not explained. In other words, this is the guide I wish I had before I began my own conversion project.
posted by J Ashley on Friday, November 17, 2006 5:28:37 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
To create dropzones using JavaScript instead of declarative script, just add the following JavaScript function to initialize your dropzone element with the custom dropzone behavior...
posted by J Ashley on Friday, November 17, 2006 12:36:11 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
Being able to drag html elements around a page and have them stay where you leave them is visually interesting. To make this behavior truly useful, though, an event should be thrown when the drop occurs. Furthermore, the event that is thrown should depend on where the drop occurs. In other words, there needs to be behavior that can be added to a given html element that will turn it into a "dropzone" or a "drop target", the same way that the floating behavior can be added to an html div tag to turn it into a drag and drop element. In the following examples, I will show how Atlas supports the concept of dropzones.
posted by J Ashley on Friday, November 17, 2006 12:14:45 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]