September 11, 2007
Blue Mud in Oakland
The San Franciso PostGreSQL Meetup Group will be host a presentation by Fred Moyer entitled Big Blue Ball of Mud tonight in Oakland.
I have no idea where the "Blue" came from. Adult content? IBM? The Democats? In any case, Mudheads Unite!
http://www.redhotpenguin.com/talks/npw2007/ball_of_mud.html || http://conferences.yapceurope.org/npw2007/talk/493
The Mound Builders of Mountain View
In what turned out to be a de-facto tenth anniversary observance of the conception of our epic spasm of pomposity Big Ball of Mud, I was asked to give my very first presentation of this work as a Google Tech Talk last month in Mountain View. The announcement for it read:
While much attention has been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture is seldom discussed.
A Ball of Mud (http://www.laputan.org/mud/mud.html) is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle . We've all seen them. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems.
Still, this approach endures and thrives. Why is this architecture so popular? Is it as bad as it seems, or might it serve as a way-station on the road to more enduring, elegant artifacts? What forces drive good programmers to build ugly systems? Can we avoid this? Should we? How can we make such systems better?
Brian Foote is a research computer scientist with nearly thirty years of professional programming experience. He cut his computational teeth in the realm of realtime scientific programming. The highly volatile requirements present in this domain led him to an interest in objects, reuse, software reuse, frameworks, components, and, ultimately, reflection and metalevel architectures. He is one of five people to have attended every OOPSLA conference since 1986.
He has also been active in the software patterns community, and edited Pattern Languages of Program Design 4. He was instrumental in gaining the conviction of the so-called Gang-of-Four (Design Patterns authors Vlissides, Johnson, Helm, and Gamma) for Crimes Against Computer Science at OOPSLA '99.
Brian is currently a Senior Pontificator at Industrial Logic, Inc., where he has been spreading the Gang of Four's Gospel to a new generation of Googlers.
Though Big Ball of Mud has been Slashdotted twice, and is probably his best known work, this will be Foote's first live, full-dress presentation based upon this material.
It went, well, God help me, something a lot like this:
Comments from LD || Referral from Best Tech Videos || วีดีโอพรีเซนต์เตชั่น Big Ball of Mud ที่ Google || Is your newspaper.com a big ball of mud? || soft wet earth || The $100MM Canonical Model || KLOCs and Golf Scores || Big Ball o' Mud: Code Tangles and Organizations
Thomas Jay Peckish II on 21st Century Media
Putting a talk on the web is like donating your body to science. You know it might be dissected in various unspeakable ways, by who knows whom, and that you won’t be around to have very much to say about it…
--Thomas Jay Peckish II
August 21, 2007
Thomas Jay Peckish II on Fear of Failure
Q: What happens to people who are afraid to fail?
A: They fail.
--Thomas Jay Peckish II
Thomas Jay Peckish II on Professionalism
Do you really want the guy performing your triple bypass reading Surgery for Dummies before he gloves up?
--Thomas Jay Peckish II
Thomas Jay Peckish II on Diffidence
It’s better to be obnoxious than to be diffident...
--Thomas Jay Peckish II
Thomas Jay Peckish II on Hacker Demographics
You don't see a lot of former high school quarterbacks throwing
exceptions for a living...
--Thomas Jay Peckish II
August 20, 2007
Thomas Jay Peckish II on Where Experts Come From
People like to think of experts as being the guys who are always right. Nothing could be further from the truth. Experts are people who are not afraid to be wrong. A lot. That's how they get to be experts.
--Thomas Jay Peckish II
July 07, 2007
Thomas Jay Peckish II on Mankind's Most Magnificent Achievement
The memepool is, after all, mankind's most magnificent achievement...
--Thomas Jay Peckish II
February 28, 2007
Thomas Jay Peckish II on Metaphor
When it comes to artifacts fashioned from bits, metaphor is destiny...
--Thomas Jay Peckish II
February 13, 2007
Thomas Jay Peckish II on Teleonomy
Design the human body? You couldn’t do it. It is intricate beyond your wildest imaginings. The genome is smarter than you are! Way smarter.
--Thomas Jay Peckish II
December 06, 2006
Thomas Jay Peckish II on the Role of Computer Science
The role of a Computer Science Department should be to provide a forum for the study of its indigenous subject matter, code, bits, The Program, and not a permanent venue for the Special Olympics of mathematics...
--Thomas Jay Peckish II
November 01, 2006
Thomas Jay Peckish II on Finding the Last Bug
Bugs are like prime numbers. You can never really find the last one, but
after the first billion or so, they start to thin out a little bit...
--Thomas Jay Peckish II
July 14, 2006
Thomas Jay Peckish II on Creation 2.0
In the Beginning there was the Word, or at Least the Byte...
--The Rev. Thomas Jay Peckish II
February 05, 2006
A Tip of the Hat
A tip of the hat to fellow townsman Ken Schreiner for his kind words for Catfish in the Memepool over at Schreiner Video.
Ken evidently numbers his Georges relative to specific dynasties, rather than relative to the founding of the republic…
Thomas Jay Peckish II on Americana
Superbowl Sunday is unquestionably the most vulgar of the Great American Holidays...
--Thomas Jay Peckish II, during an uncharacteristic culturally supercilious moment...
February 02, 2006
Flogging a Dead Horse
I was greeted the other morning by an email from a colleague to one of our local mailing lists inquiring as to whether this artfully crafted conference web page parody was my Machiavellian Invention. Anytime something a tad puckish comes along, they blame me. Were this really a "Machiavellian Invention", the authors would have loaded it up with AdSense tiles and tried to get it Slashdotted.
Multiple sources are telling the Laputan Press that Waterfall 2006 is the heretofore unacknowledged brainchild of a prankster by the name of Mike Cohn...
Having somehow missed the CFP, I informed one of the organizers that I'd just take Salmon Ladders: Adding Feedback to the Waterfall Model Saves Fish, and Keeps your Project from Spiraling Down the Drain somewhere where it was wanted. I received this rather brusque reply:
A talk about feedback ("going upstream") would be entirely inappropriate at this conference. Feedback is only needed if there's a chance you might get things wrong. If you do things right, you won't get things wrong. All it takes to do things right is to Follow The Bloody Process. Already, we see that not enough of the speakers realize the importance of this simple principle. We don't need any more apostates.
This all said, the mirth and glee on the part of the agile insurgency associated with the ritual mocking and flogging of this dead horse is sadly misplaced. This horse is very much alive and with us. Once again, commando coders working in teams of sizes 100 and 101 go about their work oblivious to the machinations of the infantrymen in the trenches of the 102 and 103 world, where callous officers are still re-fighting World War I. Herein lies a tale, albeit for another day.
To paraphrase George Bernard Shaw, the big-iron SEI worlds and the XP Agile cultures are two peoples divided by a common tongue. I'm amazed how many times over the last twenty years I've heard commando and infantry people us the same language to describe radically different realities, completely oblivious to these differences in style and scale. At each of these scales, its denizens take it as implicit that their reality is the reality. Such assumptions are largely unspoken, and surprisingly pervasive. When one's context changes slowly, if at all, the temptation to postulate that which is stable and persistent in that context must hold universally can be hard to restrain.
This kind of context sensitivity is one of my favorite things about patterns.
More Waterfall 2006 commentary can be found here and here. Tags: Waterfall Agile Programming
January 28, 2006
STS-25
Given my penchant for pasting images into my posts, you'd think you'd be staring at one of those awful pictures from twenty years ago today right now, wouldn't you?. But plenty of people are posting those today, and I can still barely stand to look at them, twenty years later. Like the second plane hitting the South Tower, it's still too wrenching to watch.
January Twenty-Eighth is one of those dates etched in my mind, like 12/7/41, 11/22/63, 11/9/89, and 9/11/01, not just this year, but every year. I was a Kennedy-era kid who used to get up at 4:00 in the morning to watch Mercury launches. NASA TV is one of my favorite cable channels. I don't need to see the pictures. Apollo 1, Columbia, it's a busy season, alas.
As I was waking up this morning, I was recalling that scene, right after "go at throttle up" and trying to place what it was that it was reminding me of. I imagined myself looking up the stem of a giant poppy plant, with the poppy bulb at its top where the big external fuel tank explosion billow was. Here's a picture of a poppy bulb from the top.
I still breath a little sigh of relief during every live launch I've watched since when those SRBs peel off. "Get the hell off you SOBs!", I'll think to myself, chuckling in relieved amusement at my own puerile pun.
I was home on my old couch that day, working (according to my notes) on my Masters Thesis, of all things. In fact, the scene seen from inside my picture tube was probably not all that much unlike the one shown here. I was sitting with the TV off when my sister called up and said "the space shuttle just blew up!"…
But my purpose at the moment is not to merely to add to the chorus of somber reminiscence…
…except to perhaps add that whatever differences I might have had with The Gipper and his Gang, Peggy Noonan's tasteful plundering of the first and last lines of High Flight remains the high water mark for post-Kennedy administration presidential eloquence to this very day.
…in fact, my original purpose was to use this post as a introduction to some ruminations on the limits of reuse, but I think I'll try to put those together separately, and just finish this one here instead…
From a memepool epidemiological standpoint, I wonder how many posts today will contain the phrases "etched in my memory", "major malfunction" or "surly bonds of earth"… …I suppose when you are president, any use is fair use, attributed or not…
January 27, 2006
Thomas Jay Peckish II on Refactoring
We'll know that refactoring has really arrived when Microsoft starts marketing Word as a refactoring tool for your prose...
--Thomas Jay Peckish II
You know, over the last couple of days since I've posted this hoary quip, it's occurred to me that there actually may be something to the idea of bringing refactoring tool ideas into the realm of prose cultivation. I wonder if there are tools like this out there already?
Indeed, witness this observation on this topic...
January 25, 2006
Ugly Stereotypes
Here's yet another scientific finding that will reinforce some ugly stereotypes about software professionals. The authors exhibited commendable restraint in avoiding a rather obvious, but puerile, opening for humor having to do with baseball equipment…
January 24, 2006
Bush Lite
It looks like our neighbors up in America's unfinished attic are changing their lead dog and veering their sled-of-state a touch to the right. It seems as if some among the current team had been sneaking a snack or two from the wrong bowls.
Catfish congratulates PM-elect Stephen Harper on his avalanche victory... …he seems to be the beneficiary of some bizarre hemispheric karmic balancing act involving Chile and Bolivia…
All and all I'm reminded of my favorite Canadian joke, a tidbit I picked up from the old National Lampoon sometime during the early seventies:
Q: When Wake Up Little Susie was number one in the United States, what song was number one in Canada?
A: Who cares, but three weeks later it was Wake Up Little Susie.
Lest anyone think I've singled out The Dominion, the "Lebensraum-lite" undercurrent underlying the versatile geopolitical jape with which this post opened can also be retargeted to construe Australia as "Indonesia's unfinished basement", or Siberia as "China's unfinished attic"…
--TJP2
Robert Biddle subsequently added, re: Wake Up Little Susie:
In fact, this was also the number one song in Canada the week before it was in the US. http://en.wikipedia.org/wiki/Number-one_hits_of_1957_%28USA%29 http://www.1050chum.com/index_chumcharts.aspx?chart=21 As if I care...
January 22, 2006
Impossible Design
Mariann Unterluggauer reports here on the latest ruminations from peripatetic software visionary and Catfish favorite Richard P. Gabriel at the OOP 2006 Conference in Munich. Dick, whom it would appear is riding a sustained wave of popularity in Europe, summoned his inner Cervantes to deliver a talk provocatively entitled Impossible Design...
The Mind of the Theoretician
I have struggled for, let's say, way longer than is good for a person, to comprehend the mind of the theoretical computer scientist. I've met with mixed success at best over the years, but this post offers more insight than most into the monastic deliberations of this secular priesthood...
A postscript: I've been causally browsing "Ernie" occasionally for the last couple of three or four months, but I'd never hunted around enough to discover that Ernie's Gepetto is UIUC DCS's own Jeff Erickson. I'm reminded of one of those horror stories that ends with "run for your life, that phone call was made from inside the building!". I might add that I completely concur with Steve Freeman's observation that Erickson's work in this area is likely applicable, with appropriate revision, to conference committees in general.
January 21, 2006
The Physicists Took the Easy Problem
The reader may well be surprised that scientists dare to study processes that took place so early in the history of the universe. On the basis of present observations, in a universe that is some 10 to 20 billion years old, cosmologists are claiming that they can extrapolate backward in time to learn the conditions one second after the beginning! If cosmologists are so smart, you might ask, why can they predict the weather? The answer, I would argue, is not that cosmologists are so smart, but that the earlier universe is much simpler than the weather!
--Alan H. Guth, on Condensation of the Primordial Soup, in The Inflationary Universe, p. 89
I used to be fond of amusing my friends and colleagues who were trained as physicists by asserting that they were able to give the appearance of being more serious scientists than computer scientists because they'd grabbed the easy problem first. Not only that, they've got a worked example in front of them to examine. And they had a head start. I was amused yesterday to find this passage from Guth that lent evidence to this cherished, long-held suspicion…
Stefan Lauterer weighs in with some thoughts on the connection between this and Austrian politics here.
January 20, 2006
God Save the King
Given that the terms of the current United States Constitution remain in force and are duly honored, and barring calamity or disgrace, the reign of His Imperial Majesty George III will come to an end, with the Coronation of his successor, whomever he or she may be, exactly three years from today, on 20 January 2009, at 12:00 EST, 11:00 CST.
I'll leave it to the reader to decide whether this is good news or bad news.
That's right, this is our third ruler named George. His father was our second. The father of our country was the first. Our last ruler under British authority was also called George III. His poll numbers weren't the greatest either. What goes around...
It may seem odd that I notice this date every year, but it has a way of being a personally auspicious occasion. Witness, for instance, this post. We reckon time by the reigns of our regents, and since the days of Franklin II, this has been our official ceremonial day of transition. Of course, I'd pretty much beaten this topic to death last year too...
Guten Tag
As part of a effort to try to figure out what this "tagging" craze is about, I've created a Technorati Profile. Let's see if I regret it.
It seems likely that I'll need to upgrade Movable Type to really put this stuff through its paces, and thereby begin to form an informed opinion, but that will have to wait. As ace, recovering System Administrator Thomas Jay Peckish II always says: "Don't mess with it if you don't have time to break it..." or something a lot like that.
Now, an MT upgrade could well allow Catfish to allow comments too. Hmmm…
In the meantime, at least my bilingual pun drew a chuckle from a prominent member of the Pan-Teutonic Tech-Journalistic Community...
So, anyhow, here goes: tag Technorati Tags Tagging Technorati Tags Thomas Jay Peckish II
So, here's what Technorati coughs up for TJP2. I'm still working on getting the hang of how to get these things to work:
Posts that contain Thomas Jay Peckish II per day for the last 30 days.
Get your own chart!
January 15, 2006
Tom Lehrer on Originality
It has long been my largely unrealized intention that an examination of the changing nature of originality in the twenty-first century, in an age of sampling and search engines, on a planet of seven billion souls, be an underlying, recurring, unifying theme of Catfish in the Memepool. My recent AJAX post is a case in point.
So, it is in this spirit that I'm going to indulge myself in a bit of personal nostalgia. Our peripatetic (but by no means itinerant) IBEAM Project Principal Investigator, Paul Saylor, made a scheduled stop at the Siebel Center as part of his winter tour last week, and was able, after an impromptu meeting, to offer me a ride home.
Paul is afflicted, thankfully, to a lesser degree than yours truly, with a weakness for the occasional dram (or is it a snifter?) of purple prose, and is, at times, well, a fellow big-word-using guy. It should suffice to say we are co-enablers when we get together.
It so happens that Paul had a CD by satirist and mathematician Tom Lehrer in the player in his rented van at the time. It engendered a veritably Proustian onslaught of rapturous recollections.
Graeme Cree has described Lehrer rather well: "If you've never heard him, he's very similar to Mark Russell, except that he's funny."
As it happens, my dad was a big fan of Lehrer's records when I was growing up. I think he got them through a record club. We used to sit around the living room and listen them on our Motorola console stereo with him back during the reigns of John V and Lyndon I. I was just in elementary school in those days, and most (but not quite all) of the sociopolitical allusions were doubtless lost on me at the time. Nonetheless, my siblings and I somehow found them infectiously hysterical anyway, and I still remember them vividly (well, better than I have any right to be able to expect to be able to, anyway).
Still, I'd completely forgotten that Lehrer had written one tune in which he actually incorporated the names of all 102 of the known elements in the periodic table at the time, but there it was, and the conversation somehow turned to Lobachevsky. Lobachevsky, as Paul knew better than I, was the "father" of the hyperbolic strain of Non-Eulcidan geometry. The conversation quickly turned to intellectual paternity in general, even as the CD player turned to Lehrer's commentary on it.
It seems certain that I hand not heard this tune in forty years, long before I became a ivory tower hired-hand. But, suffice to say it sounded more relevant today than ever. Rather than comment any further on it myself, I urge the reader, should he or she be so inclined, to pursue the following primary sources: The lyrics are here. An MP3 can be found here.
In a similar vein, Lehrer's scathingly brilliant Werner Von Braun can be taken as trenchant, if not still timely, commentary on the compromises that are sometimes necessary to fund one's research.
Once the rockets go up...
Original thought is like original sin: both happened before you were born to people you could not have possibly met.
—Fran Lebowitz
I don't have ideas. Ideas have me.
—Thomas Jay Peckish II
And then I write By morning, night, And afternoon, And pretty soon My name in Dnepropetrovsk is cursed, When he finds out I published first! --Tom Lehrer, Lobachevsky
A footnote: Among the things I've always hoped to feature in Catfish in the Memepool were amusing tales of the sheer futility of the pursuit of original thought, especially in light of the fact that search engines have rendered it trivial to disabuse one's self of such notions. Its great sport. This is not to say that such occurrences are not original in the sense that they were independently conceived, just that such conceptions are more often than not unique. It's as if the memepool itself is ripe with certain notions, and we are merely channeling it. Channel Catfish…
Today's example: Here's a three-year old occurrence of the term meme-slinger I'd secretly, vainly hoped I might have minted in that AJAX post last week. Hackneyed though it may be, it still fit its subject to a tee…
--BF, just another Memepool Medium…
January 14, 2006
La Rochefoucauld on Humility
Humility is the worst form of conceit.
--François Duc de La Rochefoucauld
January 11, 2006
Before Coffee
Evidently, you may often be in worse shape during the first few minutes after waking up than you might have been when you retired the previous evening.
An amusing item from CNN this morning: "For a short period, at least, the effects of sleep inertia may be as bad as or worse than being legally drunk," said researcher Kenneth Wright of the University of Colorado at Boulder.
Evidently, parts of the cortex do not rouse as quickly as other parts of the brain, hence a potentially (quite literally) groggy degree of impairment. This explains, in part, why I've managed over the years to make every conceivable mistake one can think of getting the coffee maker started... ...from forgetting the coffee, the water, the filter, the grinder, right through to the "on" switch ...before those higher cortical functions had woken up and kicked in...
What's next, holding the sandman accountable to dram shop laws?
January 09, 2006
What's New Here is that Nothing is New Here
What's new here is that nothing is new here.
I used this phrase nine years ago to open an obscure spasm of pomposity that opened the Pattern Languages of Program Design 3 book to describe the patterns movement itself. But, in the spirit of that piece, I'm going to shamelessly recycle it here, because it fits Ajax, that trendy, breakout postmodern school of web application design, to a tee.
The fascinating thing about Ajax is that it is an amalgam of existing technologies that all date back to the twentieth century. It's what the Web 2.0 crowd might call a mash-up. Only the name is new.
"Ajax" is short for "Asynchronous JavaScript + XML". This moniker (not the technology itself) is the brainchild of a meme-slinger who calls himself Jesse James Garrett, a handle more redolent of saddle soap than household cleaner. Garrett rides for a high-end Bay Area Buzz Boutique calling itself Adaptive Path. Garrett makes no intellectual paternity claims for the ideas proper, only for the name and the description. His web essay, Ajax: A New Approach to Web Applications cites several know uses for Ajax, and lists some defining characteristic of this style of architecture. In short, his essay is really quite pattern-like, though I don't think he claims as much. He'd certainly be entitled to do so. In any event, Garrett's essay, by conferring a name on this otherwise ineffable architectural notion, has put both Ajax and "Ajax" (to say nothing of Garrett himself) on the map.
Sun, for its part, is cautious about embracing the Ajax handle, but is not coy about this school of design itself.
Indeed, it's not clear that anyone claims to have actually invented Ajax. Instead, ad hoc designs using these technologies, such as Google Maps, Flickr, and the like, have appeared and incrementally grown more elaborate, and more refined right under everyone's noses for the last couple of years. Such is the face of innovation in the 21st century.
Now, Michael Mahemoff has exhibited no compunction in calling a pattern a pattern. Ralph Johnson pointed out this website a few weeks ago for a forthcoming book on Ajax Patterns. It is tastefully rendered, and quite engaging. I commend it to the reader's attention.
if nothing else, Mahemoff's site has encouraged me to take a harder look at MediaWiki as a pattern cultivation tool (though I've yet to do so.)
A few thoughts on Ajax:
It should go without saying that like so much of "architecture" in the web services realm, Ajax is a Worse-is-Better poster child.
Ajax applications typically shift control of an application back from the serve to the client side using a client side "engine" written in Java script. This engine communicates asynchronously with the server using XML. The server side could be written using nearly anything, but typically is written in a scripting language like PHP, Python, Perl, or Ruby.
Ajax, it would appear, has as it basis the groundbreaking architectural premise that a local rendering engine that buffer's communication with remote servers can provide a more satisfying, more responsive interactive experience to the user than can websites without one. (There I go with that tone that may strike readers as a touch sarcastic. I assure you that I don't have a sarcastic bone in my body.)
Under the hood, Ajax is an unspoken triumph for object-technology. JavaScript, PHP, Python, even Perl: all OO.
Why XML? For one thing, as always, XML can effortlessly traverse that semi-permeable membrane, that blood-brain barrier, Port 80, and hence walk through firewalls that would impede other vectors for virtual matter.
Why Javascript? Why did applets fail, and JavaScript win? Why now? It would seem that Ajax is (also) a poster-child for Moore's Law, and rolling obsolescence. Sometime around the turn of the century, 1GHz machines were all the rage, and now, the trailing edge of this Moore's Law curve has reached this point. The Ajax phenomenon is driven by the trailing edge of Moore's Law. That is to say, one can pretty much assume everyone has at least a 1GHz machine, and Windows XP or equivalent OS. Furthermore, the browser wars have essentially assured us that the vast majority of users have Javascript on the client side.
Code that would have performed unacceptably under scripting languages like JavaScript, or PHP, or Python for that matter three years ago, will run just fine now. Finally, we are spending some of our Moore's Law dividend fruitfully on something other than GUI eyewash.
In 2006, we can assume that script code that would have taken a DLL ten years ago, or a JIT'er five years ago, will run fine as-is. We can assume that the typical user buys in at broadband, and that bloated XML packets will not clog his or her plumbing. We can assume that a browser that runs JavaScript is at least in the user's back pocket. We can assume graphics horsepower that would have dropped jaws during the Clinton administration. We can assume that a 60Mb IE RAM footprint will draw only yawns. We can presume that machines that run at mere Megahertz clock rates are headed back into the closet.
Of course, the same reasoning applies more or less to just about any "LAMP-based" design.
James Governor concurs that Garrett's is a pattern naming coup here. [Michael's Ajax Patterns Tag]
December 29, 2005
Carver Mead on the Dark Age of Theoretical Physics
I came across this utterly fascinating, four-year-old interview with Carver Mead in a weblog calling itself Laputan Logic, of all things. The "dark age" he refers to is the last seventy years...
I last came across Mead at the very first International Conference on Neural Networks in San Diego in 1988. His iconoclastic embrace of neural networks, which were then themselves just emerging from a twenty-year "dark age" brought on by their having been declared heresy at the hands of orthodox AI Perceptron critics like Minsky and his ilk, had impressed me at the time...
December 14, 2005
Freedom from Choice
In ancient Rome
There was a Poem
About a Dog
Who found two Bones
He picked at One
He licked the Other
He went in Circles
He dropped Dead
--Devo, Freedom of Choice
I stumbled across an interesting discussion in from Ruby-land through a link on Martin Fowler's website. At least I thought I did, I can't find the reference now. No matter I suppose.
It’s an intriguing, but somewhat iconoclastic idea from David Heinemeier Hansson, by way of meme consolidator Tim Case, to the effect that the notion that a framework be an ultra-flexible jack-of-all-trades has run its course. The claim is that frameworks that employ fixed conventions in lieu of elaborate configuration mechanisms are easier to learn and use, at least in the most typical and common cases. A framework should be really really good at one thing. It should do one thing, and do it well.
At first blush, this would seem at odds with conventional / customary / traditional framework development lore. Nonetheless, I find the idea quite compelling, given the right circumstances…
My first thought is that it is a sign of a healthy, mature ecosystem that the carrying capacity for frameworks that do a single thing well exists. Code that does one thing right can be easier to read, and easier to extend (using code), that code that straddles a range of requirements. There is an element of neoteny, of reverting to a less mature form in this. This is what a green fields framework often looks like too, at first.
Normally, over time, as new requirements emerge, the framework grows, to accommodate a range of requirements. The code to accommodate this variety, this diversity, is refactored as the framework grows, the commonalities rise, as if in some code chromatographic centrifuge, to the upper levels of the class hierarchy, and out into distinct components, and yes, out into the data, and into databases and configuration files.
The prize: flexibility, market share, and libraries of redeployable abstractions. The price: inevitable complexity, and a steeper learning curve.Reversion to convention marks a break with such evolutionary trends, with midlife growth. It is tempting to speculate that such breaks are inevitability generational. That drawing-back-to-leap entails a fresh draft, a new generation, a new codebase. Hence, I suspect, the phenomenon discussed here is not warmed over YAGNI (You are not going to need it); not a response to premature generalization, but a late, mature reaction to a rising tide, and a mature understanding of where flexibility is needed in a given domain, and where it is superfluous.
Neoteny is a "back to the future" reaction, in some ways, but not a "worse is better" reflex.
An analogy drawn from the realm of stadia in the United States came (once again) to mind. During the sixties, multipurpose facilities that could accommodate the needs of several sports were constructed. They met those of all of them adequately, but met none of them well. Is a Swiss Army Knife ever really better that the right tool for the right job? Or is it just easier to afford and to carry?
During the nineties (and beyond) these cookie-cutter concrete white elephants were razed, and replaced with single-purpose facilities better suited to just baseball, or just football. Even adjusted for inflation, these replacements were considerably more expensive than the stadia they replaced. But a bigger, more affluent population, craving the thrill of vicarious victory enough to support skyboxes and three-figure seat prices, was able to support this extravagance.
Could it be, that in a red-shift, expanding universe, the growth of the internet itself, and of web application demand, is such that we now have niches for single-purpose frameworks that might only have been filled by less satisfactory general purpose code even five years ago? There is a slightly decadent, postmodern redolence about all this.
Is there any way that conventional frameworks might exhibit this same level of convenience? Perhaps, if their elements are engineered to WORK OUT OF THE BOX. By exhibiting, generating, and maintaining reasonable defaults, programmers might provide the same kind of 80% / 20% Pareto's Law hands-free convenience to the bulk of their clients, while still being able to cater to more exotic tastes as well.
Now, to be fair, one of the factors at play here is that (post-)modern scripting languages like Ruby are easier to change than relatively hidebound type-pecked tongues such as C++ and (alas, now) Java. I'm recalling Kent Beck's observation that were coding to become infinitely fast, we wouldn't need to worry very much about reuse. The fast-on-their-feet scripting cultures of Amazon and Google lend some credence to this world view, it would seem…
Freedom of Choice
is What you Got
Freedom from Choice
is What you Want
--Devo, Freedom of Choice
December 13, 2005
The Least Understood Thing in Computing
Journalist Mariann Unterluggauer has latched onto this challenge question from OOPSLA 2005. Here's the question, with my reply:
Q: What is the least understood thing in computing that if only it were understood, everything would change?
A: That's easy: Reflection...
December 11, 2005
Thomas Jay Peckish II on Canine Longevity and Justice in the Universe
In a truly just universe, dogs would live as long as people do...
--Thomas Jay Peckish II
OOPSLA 1989 in New Orleans
Doctor Dobb’s Journal stalwart Michael Swaine has some recollections of his last time in New Orleans that resonate with mine...
Indeed, Swaine’s post triggered a number of memories. One was a tale I related during our OOPSLA XX retrospective, but forgot to post here of an epic OOPSLA IV paper airplane contest at the New Orleans Hyatt. The Hyatt chain used to like to distinguish its hotels with daring feats of architectural legerdemain in their central atria, and the building in New Orleans provided the ideal setting for this contest. This contest was ultimately won with a breathtaking twenty-nine story corkscrew spiral into a ground-floor fountain by a entry crafted by Bjorn Freeman-Benson. An audacious display of atrial flutter. Memories of this site came back to me during the Katrina coverage.
In the spirit of free association, that Freeman-Benson recollection also triggered another Proustian recollection of good food, Bjorn's Bacchanalian gout-fest at OOPSLA '98.
Ironically, I became aware of Swaine's piece through an utterly unwarranted pot shot taken by some unctuous coprophagic who evidently treats the internet as his personal scratching post. This sort of puerile ad hominem invective is the kind of thing that give 'blogging, and yes, even sarcasm itself, a bad name. A side effect of totally disposable email addresses and weblog accounts is that they offer malcontents like this one anonymous access to single-use sniper’s nests…
December 08, 2005
The Nexus of Guts and Glitz
Count on Martin Fowler, that technosexual trendsetter at the tony House of Thoughtworks to stir up the season’s most colorful and provocative design dustups… …Okay, I’ll stop… …but here’ s the controversy…
Martin has of late fallen under the spell of Ruby, a dynamic postmodern scripting language billed as a pragmatic amalgam of Smalltalk and Java and what-have-you. Smalltalk’s soul in Java’s clothing, with a dash of Python. I have been hearing a lot of good things about Ruby.
Anyway, many proponents of Ruby, it would seem, espouse what they call Humane Interface design. A humane interface places a premium on programmer convenience, and may be quite a bit larger than the Minimal Interface necessary to expose an abstraction’s basic functionality. The humane approach provides a more ornate, more verbose vocabulary to the programmer, as opposed the smaller, more austere, more Spartan, ostensibly more simple minimalist interface. Joey deVilla offers a gonzo follow-up take on this controversy here.
Their poster child example is a method, "last" that returns the final element of a collection. In Ruby, (and Smalltalk, and …) a method to do just this is provided. Java interface designers are cast as the Spartans in this tale, providing only a basic getter. To retrieve the last element of a collection, something akin to a.get(a.size()-1) must be executed.
Is the Marie Antoinette vs. Wal-Mart? Loincloths? Baroque and rococo vs. Frank Lloyd Wright and the modernists?
At first blush, this would seem any easy call. My Smalltalk roots (among other things) are likely showing when I say I see no harm in a larger, more expressive vocabulary.
And there I might leave it, if this did not raise an even more interesting issue, which is: What if they are both right? How is that for equivocation?
Now the reader need not fear, for I still intend to cast my lot on the side of the humane, and not the stingy, though when the argument is cast in such terms, it is hard not to feel a tad manipulated, and after all, smaller can be simpler, I suppose... To be anti-humane is to be in favor of what? Euthanizing kittens?
Why can't we provide capable expressive, human-friendly abstraction that are themselves built around minimal cores?
The motivation for this is the need for what I call a Core or, better yet, a Nexus, that is a single, central, and yes, minimal subset of the public repertoire of an object through which all definitive, authoritative message traffic, both external and internal must pass.
In Smalltalk, programmers were traditionally rather casual about which methods were private, or fundamental, and which were written to ride atop this rock-bottom level vocabulary. Protocol organization helped to convey this to some degree, but such conventions as there were were frequently honored primarily in the breach.
Don’t get me wrong. I’m not arguing that these conventions be formalized and enforced (at least not yet; not here), rather, I’m arguing that this kind of "once and only once" is a guarantee that programmers want to ensure.
Why? So we can wrap the one place that gets and sets things, for instance. I want to know, for example, that any getter on a collection bottoms out at a single, definitive call to something like get().
So, indulge me for a minute. One way to do this might be…
Problem: you want to ensure that all references to an objects internal resources are made through a fixed, restricted set of methods.
Solution: refactor all the methods in this core, this nexus, into a separate component. Construct an entourage of wrappers (of various sorts) that employ the broader, more extensive vocabulary, and forward those in the minimal subset to this core; this nexus.
The use of a separate component guarantees that all the humane embellishments provided to the outside world must go through the minimal argot supplied by the core. This design also permits pluggable alternative implementations, such as, for instance, a sparse array implementation, to be plugged in in place of the standard cores.
Such as design is layered in the strict, traditional sense that many so-called layered designs are not. Like an onion.
Alternative designs involving inheritance using a private core with protected accessors are possible where efficiency concerns are at a premium, and runtime plug-in substitution seems unnecessary. Schemes employing interface inheritance are possible to envision too.
This was the defacto solution to this problem seen in a number of vintage Smalltalk classes. Indeed, such internal layering has been suggested as a “smell” that indicates that a new component need be culled from a class via refactoring.
So you can have a simple guts, and flashy, interchangeable skins. You can almost have your cake and eat it too. Marie Antoinette would be pleased. The filigree, the utility methods, are in the Decorators, while the core, the essence, is in the decorated cores.
That there be a nexus can be thought of as a design principle, its embodiment in recurring designs makes it a candidate for patternhood. Let’s see, we need two miracles for beatification, and two more for canonization…
There is more that a hint of Handle / Body here, among other things. A scoop of Class Adapter? A full dress treatment of this seat-of-the-pants, inchoate proto-pattern notion might address these issues.
The piper is paid, as with so many patterns, at Creation Time, Provisioning Time, when the structural edifice that drives the computation is constructed, when the web of objects is woven. But that is a tale for another post...
Here’s why I’m partial to the somewhat obscure word “nexus”, over “core”, for this intent. While the more familiar “core” conveys the centrality, the primacy in this intent, it doesn’t capture the dynamic, causal interconnectedness of this intent as precisely as does “nexus”. I’ve been looking and listening for a long time for a term that better gets across the idea that a method or object be at a definitive, authoritative chokepoint or bottleneck, at a pass at which functionality could be “headed-off”, and this might be it. And no, I haven’t read very much by Henry Miller. From M-W:
nexus
Etymology: Latin, from nectere to bind
- CONNECTION, LINK; also, a causal link
- a connected group or series
- CENTER, FOCUS
December 05, 2005
Thomas P. "Tip" O'Neill and Thomas Jay Peckish II on Politics and Software Engineering
All politics is local.
--Thomas P. "Tip" O'Neill
All software engineering is politics...
--Thomas Jay Peckish II
November 25, 2005
John Vlissides
John succumbed to brain cancer on Thanksgiving Day, 24 November 2005. He was only forty-four. I will miss him a lot. Many of us will. We are holding something of a dry, virtual Irish Wake for John on Ward’s Wiki. I've posted some of this material over there, too. As of 12/9/05, that WikiWake page had been seen by in excess of 16,000 visitors.
The Gang-of-Four celebrated the tenth anniversary of the publication of 'Design Patterns' last year at OOPSLA 2004. Three of them, John (sporting the propeller), Erich (wielding the knife) and Ralph are shown here preparing to eat their words. John was the OOPSLA 2004 Conference Chair, and had made the trip to Vancouver at the price, we later learned, of having had to forego chemotherapy for a week. John is shown still in costume for his role as "Jimmy the Freshman" in "Dating Design Patterns", a skit that I had warned him might seriously undermine the dignity of the entire conference. John replied "What dignity?". For good or ill, this lesson has stuck with me. John had self-effacing sense of humor to go with his genuinely contagious intellect, a rare combination indeed...
One of my favorite memories of John is, of course, of the time we put him on trial for crimes against computer science. I’d wondered whether anyone would go along with this pretext, but John thought it was a wonderful idea for an OOPSLA panel. A clip of John’s plea in this case can be found here.
Another is from Vancouver Aquarium Event at OOPSLA 2004 when John, the Conference Chair, took time out from servicing the usual throng of dignitaries waiting to kiss his ring to chat with a couple of our new students. One of them, Spiros Xanthos, is from Greece, and was amazed and delighted that John took several minutes to chat with him about his ancestors and background in fluent Greek. Spiros will never forget it. I won’t either.
Photos ©2004 by Munawar Hafiz, Spiros Xanthos, and Brian Foote
November 15, 2005
Microsoft Seeks to Acquire Weapons of Mass Computation
In a defiant keynote address delivered to a stunned audience at the Supercomputing 2005 Conference in Seattle, Microsoft Chairman William "Bill" Gates vowed today to acquire the technology to produce weapons of mass computation as quickly as possible. Microsoft’s program posses a provocative challenge to existing supercomputing powers such as IBM, Sun, and Cray.
This technology has heretofore been available only to an exclusive club comprising only the most technically advanced powers. That Microsoft, considered by some in the supercomputing elite as a rogue player, now has made the development of this technology a priority is raising considerable alarm.
Researchers at the University of Illinois at Urbana-Champaign’s Software Architecture group expressed skepticism that Microsoft could develop the powerful refactoring technology required to transform it’s raw business software into the highly enriched form necessary for high-performance computation. "It takes years to cultivate the powerful high-performance "codes" necessary to pose a serious threat. Without this [refactoring] technology, they are at least seven years away", said Thomas Jay Peckish II, of UIUC. "We’re they able to somehow acquire this technology from an outside source it, they could develop a weapon’s grade potential in as little as two years."
A key element of Microsoft’s alleged program is a black project know only as XBox, which threatens to put weapon’s grade supercomputing technology in the hands of any rogue adolescent anywhere on Earth. Microsoft claims this suitcase-sized device has no dual-use potential, and is intended only to pacify children.
Some scoff at this potential threat. This is a Business Intelligence failure of monumental proportions, suggested one analyst.
Gates did acknowledge that Microsoft is working on advanced cluster technology, the same technology that has been denounced by some human rights watchdogs as dangerous in the hands anyone but the most highly trained software technology experts. Gates disclosed that Microsoft has been developing these weapons under its Windows Cluster 2003 Program. He defended Microsoft’s work in this area, pointing out that competitors have been developing and deploying such technology for years.
Microsoft has launched a charm offensive to counteract the negative publicity it has been receiving as a result of these developments. They’ve booked the Experience Music Project Facility for a concert for an exclusive group of supercomputing dignitaries this evening. The mysterious EMP facility, it might be pointed out, is rumored to have been surreptitiously funded by reclusive Microsoft billionaire Paul Allen.
The official libretto for Gates's address can be found here. Their official strategy can be found here.
Photo ©2005 by Kathleen Ricker
November 14, 2005
Photran in the News
Click here to see the full article.
Oh, and any similarities between the piece above and this earlier Thomas Jay Peckish II interview are almost completely coincidental.
Then there is this Photran sighting in Ward Cunningham and Bjorn Freeman-Benson's 'blog about efforts to broaden the reach of the Eclipse CDT. Our collective efforts drew this plaudit from Bjorn: "I dream of an idyllic future where all Eclipse projects are as open and transparent and cooperative as CDT/Photran/PTP in our quest to create great frameworks." Aw shucks...
See Photran in action at the Supercomputing 2005 Conference, at both the Fortran Company and Los Alamos National Labs booths.
November 10, 2005
The Co-optation of Collective Nouns
We were discussing how it sometimes seems that Computer Scientists have co-opted every reasonably abstract collective noun in (at least) the English language for uses as a technical term. The conversation turned to whether there were any left to exploit in the name of enlarging our arcane argots. Munawar Hafiz picks up the play-by-play here...
November 01, 2005
Thomas Jay Peckish II on Scholarly Discourse
Look, this is the twenty-first century. I think by now everyone knows exactly what it is that they are expected to do if they can't take a joke.
--Thomas Jay Peckish II
October 23, 2005
I Have Nothing to Declare But My Genius
I Have Nothing to Declare but My Genius
With mainstream language design mired in ennui and retreating into formalism, the field has been effectively ceded to a ragtag, de-facto coalition of old-school dynamic stalwarts, scripting language designers, and ad-hoc domain specific API architects. A generation of research in this area can be distilled down into three overarching ideas, the rest is filigree.
This talk will explore these ideas, examine how and why these currents are converging, and show why the large scale, dispersed, heterogeneous, polyglot world of 21st century computing demands nothing less than this degree of commitment to dynamism.
Brian Foote has been programming professionally since the dawn of the Carter Administration, mostly in the service of academic researchers of various stripes. His association with the academy has enabled him to dabble extensively in research. His interests include objects, programming, programming language design, reflection, metalevel architecture, patterns, and software devolution. His exposure to Smalltalk during his impressionable formative years indelibly shaped his attitudes towards software architecture and design. Brian is one of five people to have attended every OOPSLA conference to-date. He is the author of a forthcoming self-help volume entitled “Late Binding as a Philosophy of Life”.
I get the same sense of security knowing that my program is statically type-safe as I do knowing that my seat cushion can be used as a flotation device.
--Donald Bradley Roberts, author of the award winning autobiography Outsourced to Indiana, during Q&A...
October 22, 2005
Devolution in the Air
Over the years, one of of the my favorite OOPSLA pastimes has been attempting to discern the Zeitgeist. What memes are moving, as the marketing 'droids might say. This time around, several distinctive themes emerged. I'll discuss the most vivid of them here. I'll talk about the others, Web Services, the Reflection and Metalevel Architecture Revival, and Refactoring Coming of Age, under separate cover.
The first, and most prominent / evident was Software Devolution.
By this I mean an overdue discussion of the death of quality, the embrace of failure, the acceptance of uncertainty, our exhausted capitulation in the face of complexity, the realization that the programme of the close-world formalist is mocked by reality.
Acknowledging devolution means acknowledging that not only are things worse than we've dared to admit, they are getting worse, and will continue to do so, at an ever accelerating pace. We are entering a worse-is-better world of sweatshops and generative robo-code, where the craftsmen must inevitably retreat to their redoubts in boutiques and curio shops.Acknowledging devolution means abandoning our fetish for correctness, and learning what to do when (not if) something goes wrong.
Devolution was a theme that impinged from so many directions this year that it was impossible to ignore it. Software Devolution is something of an umbrella under which I am lumping a number of disparate trends. Perhaps the notion will seem more clear once I've cited some of the developments that made this theme seem palpable.
The most glaring evidence of this theme could be seen in Martin Rinard's Breakthrough Ideas presentation. Rather than cling to the notion that every error can even be caught, let alone avoided, Rinard deals statistically with consequences and ensuing carnage entailed in just "eating" them. The approach would seem to have more than a little in common with what the genetic programming people are doing. I need to look at his work more closely to see if this is so.
Embracing the reality of programmer fallibility and failure was a theme of Mary Beth Rosson's The End of Users keynote. She observed that something like ninety percent of all spreadsheets have errors, and that we are in something of a state of denial of the potential consequences of this reality.
Agile methodologists have been promoting the primacy of bottom-up, feedback intensive code and test based design as an alternative to the top-down foresight fetish crowd's traditional ideas. Martin Fowler's Finding Good Design keynote went beyond even this, and offered more than a nod in the direction of whether high-minded design ideals were honored primarily in the breach in practice, and questioned whether the very idea of design would retain its relevance.
For a moment, we all dared to ponder the question of whether craft in design is anything more than gilded filigree, soon to be as anachronistic as a hand-crafted circuit board.
My own Breakthrough Ideas triptych (previewed exclusively here a few weeks back) further reinforced the notion that the gap between what we practice and what we preach is large, and is growing larger. In Praise of Cut and Paste sought to "out" an ubiquitous practice among framework designers and, well, everyone else, that has been regarded as something of a dirty little secret by practitioners, while being scorned by high road methodologists and academics alike.
Big Bucket of Glue suggested, among other things, that integration isn't pretty, that it is often quick and dirty, that essential complexity is here to stay, and that some part of the system must bear the structural stigmata associated with wrangling the rest of the system into a coherent whole. It can be seen as a potential integration layer sequel to our hoary spasm of pomposity Big Ball of Mud.
The End-to-End Principle in Programming Language Design suggested that mainstream languages such as Java focus too closely on minutiae like protection and type checking at the micro level while neglecting any support for the overarching end to end of real, honest to God runtime facilities such as validators, to, well, who knows? Features designed badly at the language level must often be reinvented a level up in a dynamic or adaptive object model layer in order to properly accommodate the needs of any end to end domain specific languages that might emerge. One example of where this phenomenon can be seen the architectural eyesore that the services layer is becoming. It is bad, and getting worse by the minute.
Devolution can be seen in the enthusiastically received Scrapheap Challenge workshop, where participants dumpster dive scraps from the web as fast as they can to solve programming problems.
There was something decidedly devolutionary in Grady Booch’s overdue exhortation to cast models aside, and in his candid admission that no one reads code anyway.
The winners of our Sudoko exercise in the Extravagaria III: Hunting Creativity workshop used twenty-first century scrapheap techniques (they Googled the problem), mocking the attempts of the organizers to demonstrate genetic crossover using the other two groups who'd treated the task as relatively solitary chores.
The notion of "Software Devolution" is drawn from the colorful hatchet job James Noble did on my Biography for the Sashimi vs. the Purple Robots panel. If the shoe fits. It is a notion that fits wonderfully under the aegis of the Post-Modern School of Programming founded by Noble and fellow traveler Robert Biddle at the inaugural Onward! a few years back. We are All Devo indeed.
Among the mantras of this movement are paeans to the centrality of The Program as the essential focus of computer science. Code is seen not only as the source of choice for interesting problems to study, but as the remedy of choice for addressing them. We should address problems with code with code, like real computer scientists, and not with closed form analysis, like mere mathematicians.
Implicit in this is the hope that our discipline is finally becoming mature enough to confidently address indigenous subject matter with indigenous tools and ideas, rather than seeing ourselves as the outcast spawn of some tawdry, long forgotten one-night stand involving the mathematics and physics departments.
The primacy of code, and of runtime mechanisms as a condign recognition of the intricacy and fallibility of code was a central theme of my own closing address to the Dynamic Language Symposium. More of that elsewhere, soon, I hope.
Devolution can be seen in the decline in the impulse towards Linguistic Imperialism, the cooling of the language wars, the increasing irrelevance of Utopian Linguistic Monocultures, and the grudging acceptance that ours is a heterogeneous polyglot world, where applications are increasingly expected to be able to cooperate.
A devolutionary cast can be seen as well in the impulse to use generated code in place of code crafted by human beings. Is generation a symptom, a code smell, signaling the inadequacy of our languages and tools, or is it a harbinger of things to come, the wave of the future, a sign that the John Henrys with their TTL drivin’ keyboards will ultimately be vanquished by these generative steam drills.
Indeed, Richard Gabriel is suggesting that the ultrascale volumes of code that our futures will demand can only be supplied by an automated process that relies on increasing greater degrees of abstraction. This prophet of a grim Worse is Better world may find himself once again the reluctant head of yet another vanguard.
Devolution has two somewhat conflicting connotations, both of which, in the right context, in the right light, fit this discussion to a tee. Devolution suggests de-evolution, revanchism, neoteny, and regression, a descent towards something worse than what we have now. Not a good thing. Devolution also connotes decentralization, a surrender to local control, a process of increasing federation, a spinning-off of constituent parts, as seen in the establishment of a Scottish Parliament, or the refactoring of the Soviet Union into Russia and friends. Think of a process of ball-of-mud componentization, or an annealing process that lets local clusters emerge. Not necessarily retrograde, not necessarily a bad thing at all.
Devolution could be seen as well in the conference organization itself, where satellite symposia offered an alternative to the "take my ball and leave" secession of the Aspects and Agile movements. The adjacent RubyConf, and embedded Wiki and Dynamic Languages events brought fresh plankton to what could have otherwise been a stagnating meme pool, and may point the way to a more federated future for long-in-the-tooth conferences like OOPSLA.
Is devolution a natural consequence of growth? Of maturity? Of riding an exponential? Of Variety and Diversity? Fratricde ebbs because there is more room, and a more diverse herd, self-sustaining communities calve from the central glacier, and set out on their own…
October 20, 2005
Bastards! Bastards! You're All Bastards!
My final official duty of this year’s OOPSLA was to serve on Onward!’s Yoshimi vs. the Pink Robots panel. I was asked by panel moderator James Noble to assume the guise of a grizzled, curmudgeonly veteran hacker. Something of a stretch, to be sure :-), but I figured I’d be up to it.
The panel takes its name from a song by The Flaming Lips. James opened the panel by showing the video for this number. It’s actually pretty catchy. You can find it by clicking the album cover to the right. It was likely the intention of the panel’s framers that the beleaguered Yoshimi was to be cast a surrogate for the users, and that the Pink Robots were to be associated with us inscrutable hackers. I’d rather hoped that this question be left open, and that the audience be allowed to see things the other way. In hindsight, it’s not clear it was even raised, let along settled.
I’d found as many soda pop cans as I could to decorate my spot at the dais. I donned my trusty old engineer’s cap, primarily to get the bright lights out of my eyes, though the thought that it fit the character didn’t hurt.
I don’t remember much about my opening position statement, except what’s below. What I do know is that I’d been told that the ACM was going to finally start recording talk and panel videos this year with an eye towards putting them into the Digital Library. What, I thought, about those occasions where one has made a complete jackass of one’s self on a panel, and had wanted to crawl off into a corner to die? What then?
Then I thought about the performance OOPSLA 2004 Conference Chair John Vlissides gave as the (literally) propeller-headed “Jimmy the Freshman” in OOPSLA 2004’s sporadically amusing but occasionally execrable “Dating Design Patterns” skit.
John had asked me to help him cast this skit a few weeks before. I’d cast it without reading it, out of fear for the worst. I’d read it shortly before rehearsals began, and my fears were not fully allayed. This skit, I had warned him, had the potential to substantially undermine the very dignity not merely of everyone involved, but indeed, of the entire conference. John replied: “What dignity?”
It was in this spirit that I resolved to put such concerns as I might have had on my part to rest once and for all / for good.
In the spirit of OOPSLA 2005’s focus on creativity and the humanities, as established by the stirring keynote address of former poet-laureate Robert Haas earlier in the week, I elected to recite an original piece that Don Roberts and I had put together, based on the work of one of our country's most celebrated contemporary lyricists.
The original idea had come to me, as so many ideas do, earlier that morning, in the shower. Cleanliness is next to Godliness, and Hygiene has served me over the years as generous, albeit fickle, muse. This, however, was one of the most horrific shower visions I'd ever had the displeasure of contemplating. An acid hallucination gone terribly awry. Like something out of Hitchcock, it was a flashback of James’s over the top introduction of Mary Beth Rosson’s talk, only hellishly different. Indeed, it was the end of a fateful downward spiral that had begun, as Eugene Wallingford has noted, the day before.
Panel moderator James Noble's outsized neo-pompous HMS Pinafore histrionics and desiccated antipodean wit are utterly inimitable. But I took a stab at channeling 'im anyway. My re-enactment of my surreal low-culture vision from hell went like this:
I've been around forever
And I wrote the very first code
I put behavior and data together
I am hacker (sic)
And I write the code
I write the code that makes the shareholders smile
I write the code that the users defile
I write the code that makes the testers cry
I write the code
I write the code
The Fountainhead is on my short list of all-time favorite movies, although, I must confess, part of the pleasure I take in it is a partially (but only partially) ironic appreciation of its unrelentingly self-absorbed dialog. It’s great. Objectivism indeed. That said, Rand’s characterization of Roark’s total passion for his work, and his utter disregard for what society thinks of it, one way or the other, fits many in our vanishing indigenous programming culture to an uncanny degree.
I don't build in order to have clients. I have clients in order to build. --Architect Howard Roark, in The Fountainhead, by Ayn Rand
An enduring source of frustration among programmers is the degree to which users have no conception of the the glory, the majesty, the grandeur, of living in the code. Of living among, and crafting these magnificent artifacts. The medieval artisans who crafted the great cathedrals of Europe, is has been said, would often take care to craft even that which could never bee seen from the ground with the same care as that which could, because they knew God could see it. This alas, is often inevitably the lot of much of the craftsmanship that goes into the code. But we put it there anyway. And the users have no idea.
This being OOPSLA XX, I was in something of a reflective frame of mind. I started my professional programming career on 20 January 1977, the Day Jimmy Carter was inaugurated, or James VI by my American Regents reckoning. I worked in fairly large research group (about thirty folks in all), with a dozen person technical staff. We worked for a guy who was the spitting image of the pointy haired boss in Dilbert, only with a 170 IQ.
I have a confession to make. In those days, when programmers got together and spoke among themselves, which was fairly frequently, because no one else would talk to us, when we’d talk about users at all, it would be to talk about what #$%^&%$ morons users were. What’s more, we were not alone. Furthermore, I have it on some good authority, that in some circles, this perception continues to exist, among some programmers, even to this day.
Users, we were sure, didn’t know what they wanted. Who did? Why we did!
Who were these users desecrating our cathedrals? Who were these money changers? Chase them from our temples!
The Agile insurgency is increasing viewed as an orthodox movement. A lot of the process guys have traded their keyboards for cufflinks. Waterfall has been effectively vanquished, though it lingers like a winter cough. If I had a beef, it would be with anyone, it would be with the managerial caste, not my users.
At one point, I shamelessly recycled one of my vintage tale about raw materials for software, caffeine and sugar, being cheap and abundant, whereas labor was anything but. I then observed that were the sugar and coffee exporting countries ever to get into cahoots, they could do to the American software industry what OPEC did to the overall economy during the seventies, which is to say, cripple it with an embargo on its vital raw materials.
People come to panels for red meat, for conflict, for entertainment. The scholarly may opt for high-fiber technical material tracks with names like "Type Theory IX", or spicy, exotic mind candy alternatives as are otherwise found in Onward!, but by and large, people come to panels hoping to see the upper-middle brow equivalent of a Claymation celebrity death match.
And so, I fear in hindsight that many found our panel to be a tepid, desultory love-fest. And people just don’t seem to get too excited watching a love-fest, at least so long as the participants remain fully clothed. Who, outside of a few members of the diplomatic corps perhaps, enjoys watching people agree?
For me, the point where I broke character was when legendary waterfall apologist Larry Constantine asked us to be serious for a moment, and I fell for it. Rather than maintaining my shop-steward for the hackers, Commando vs. Infantry persona, I tried instead to be reasonable. Yawn.
Mr. Inimitable ended the panel with a (fortunately nearly unintelligible) video of a salty exchange from someone else’s nightmare, fellow Kiwi Peter Jackson, if I am not mistaken. James then closed this one with one his trademark tumescent tweedy tirades, a heartfelt tribute to someone special.
And it will be coming soon to a Digital Library near you. May God have mercy on our souls.
John Vlissides Photo ©2004 by Munawar Hafiz
Martin!
I (almost) had the opportunity to introduce Martin Fowler's (superb) talk on Finding Good Design at OOPSLA 2005 this week. Fortunately, an alert functionary in the ACM's Office of Protocol, correctly having observed that my name was nowhere to be found in the Conference Peerage, was able to heroically and single-handedly avert what could have been an appalling affront to the conference's prestige.
Eugene Wallingford has done his usual masterful job providing the play-by-play for the talk itself. I might inject some color commentary once my own OOPSLA brain-dump has progressed a little further, but in the mean time, a few folks asked for the libretto for what became the scripted part of Ralph Johnson's intro. Here it is. Ralph did a terrific job paring it down. I'm continually amazed by what he can do with only arrow and delete keys to improve a piece.
It is fitting that we’ve convened in a place called Fashion Valley to talk about design. For in the realm of High Technology, just as in the realm of High Fashion, Design is a central concern.
And, In the glamorous and exotic world of object-oriented world of object-oriented software style, of code couture, if you will, the very best designers, the doyens of design, are known, as in the fashion world, by a single name: Kent, Ward, Ralph, Rebecca, and … Martin.
Martin's is a life is filled with glamorous models; his sketches of smashingly attired anorexic stick figures are transformed overnight, in factories in the Far East, into the season's hottest products.
Whether you commission designer code or buy it off the rack… …chances are you’ve had the opportunity to admire Martin’s work.
This season, when some trade rag paparazzi breathless ask: Who did your code? The answer the A-List Coder longs to give is … Martin.
Martin is, as well, the master of the Total Code Makeover. He is the Father of Modern Code Cosmetology.
Martin is a gifted distiller, a distiller of memes. He scours the hinterlands, patiently hand selecting only the finest raw materials. Martin lets them age, as if in an oak barrel. He takes ideas rough, fresh, impetuous and raw and ages them until they are mellifluous, smooth, soothing. and finally, palatable.
And he is, as I’m fond of saying, a pretty good writer for an Englishman…
He is the lead author of UML Dispelled, er, Distilled, still the volume of choice for those looking for a relatively painless introduction to this cartoon cult. Not least among this volume's virtues, it has often been said, is its brevity.
His seminal work on Analysis Pattern sets him apart from the mere scavengers that stalk our field.
His landmark volume on Refactoring took an obscure technology cultivated in the cornfields of rural Illinois, and turned it into a household word.
He’s got a new book out as well, Enterprise Application Patterns. I think it is about Star Trek, but I’m not sure.
Martin is the man who brought back basic black with his Martin Fowler Signature Line for Addison-Wesley.
Technical fads rise and fall like hem lines. But At the edge of the runway on the banks of the Refactoring Rubicon one designer stands alone. So, here to preview his fall collection is the fabulous Martin! Martin Fowler:
October 18, 2005
The Aristocrats of Brigadoon
It was 1986, the space shuttle was grounded, a lame duck second-term Tory was watching his poll numbers erode, and I found myself heading off to OOPSLA.
Some things never change.
Nineteen years later, we find ourselves convening for the twentieth time. This is OOPSLA XX. (Next year will mark the twentieth anniversary of OOPSLA, back where it all began, in Portland, but that event will, nonetheless, be OOPSLA XXI. We number a lot of thing starting with zero in our line of work, after all.
However you reckon it, the task of commemorating this auspicious occasion had fallen to the five stoic, steadfast, reliable souls who’d managed to attend every OOPSLA to-date. A distinguished lot, present company excluded, of course. We, along with a handful of indispensable fellow travelers (Richard Gabriel, Ken Bauer, Linda Rising, Laura Weiner, and Jeff McKenna), constituted the unofficial OOPSLA 2005 Backward! committee.
We'd wrestled sporadically over the format for this event over the last year. I'd originally conceived of it the morning after an evening of moderate carousing in Vancouver last year as an Irish Wake. The Idea would have been that it were being held at sometime in the future. Anyone with a story could come up to tell it. Libation would, of course, be abundant. It would be the kind of event that would finally end in the bar at two o’clock in the morning.
Shopworn stereotypes aside, the Irish Wake is one of the most dignified and effective retrospective rituals mankind has ever devised. I know. As per her wishes, I’d helped my family to conduct one for my own mother a few years back.
However an Alert FunctionarySM in the ACM's Office of Protocol deemed such an enterprise as being in potentially questionable taste, so off we went trolling for other formats: a nursing home in the years 2025, a twelve-step meeting for object addicts, the list went on.
By the afternoon of day before, we’d still not settled on final format for our plenary event the following evening. We convened an emergency lunch meeting of the three non-professors on the perfect attendance list, and professional retrospective organizer extraordinaire (and Backward! committee member) Linda Rising. We decided to run our retrospective as … a retrospective.
We nodded our heads in satisfaction with our plan, as perfect attendee Rebecca Wirfs-Brock produced a six dollar bill from her wallet bearing an ad for art house film with which she was quite smitten named The Aristocrats. The film is built around different renditions of what is billed as the world’s funniest, or at least filthiest, joke. Rebecca told me the joke on the way out. I laughed on-and-off for over twenty minutes. Though I said nothing at the time, I knew then and there that our intrepid little band of OOPSLA perfect attendees finally had a name.
Our retrospective itself was preceded by a sumptuous, outrageously decadent dessert spread sponsored by Sun Microsystems, to commemorate (only) the tenth anniversary of the Java programming language. It was like something out of Charlie and the Chocolate Factory. A persistent rumor had it that Sun had shelled out $20,000 for six hundred helpings. Suffice to say there was enough molten chocolate on hand to have dipped every attendee there up to his neck in the stuff.
The bridge from the reception to the retrospective was to have been provided by designated Java Oompa Loompa (note the OOs) James Gosling, but he proved unable to attend. We were, however, as a dividend of the Backward! committee’s video production efforts, to display a clip of Gosling’s OOPSLA 1996 talk, The Feel of Java that Don Roberts had carefully selected for this very occasion.
With Gosling sidelined, the duty of holding up the Java Standard fell (figuratively, this time) to his designated stunt double: Steele. Guy Steele. It is customary that a stunt double be less handsome, less erudite, and more athletic that his corresponding leading man. I regret that I must inform you that Steele (who is depicted here vividly indicating Java’s age using the fingers on both hands) fell short on all three counts.
I’d noted as well that Steele had delivered what was unquestionably the cleverest talk I’ve ever heard in my life, Growing a Language at OOPSLA ’98 in Vancouver. As part of our Backward! commemoration, we’d embarked on the process of transferring some of the OOPSLA video archives to DVD late this summer, with the hope of setting up a Wayback/Time Machine space in San Diego. We used the video of Steele’s talk to test the equipment, and it attracted quite a crowd. Though we had about fifty other vintage events to show, Steele’s talk was the only one we exhibited. Other ‘bloggers have cited it as among the most impressive things they saw this year at OOPSLA. I could have sold a hundred of ‘em.
The knowledge that one is about to speak induces a kind of mental tunnel vision, or information triage, that makes concentrating on the speaker before you more difficult. I don’t recall that Steele said anything he hasn’t said before about Java, other than there were unspecified things they’d do differently now.
We opened the retrospective proper with our five perfect attendees, The Aristocrats (left to right), Ralph Johnson, Ed Gerringer, Allen Wirfs-Brock, Rebecca Wirfs-Brock, and your humble correspondent, fielding a few softballs. I’d noted that not only had Allen and Rebecca attended every OOPSLA, but that they had been married for nearly thirty years. Any bets as to whether OOPSLA, let alone Java, will make it that far?
I’d introduced the proceedings brandishing a bottle of Clos du Bois (get it?) Merlot, and vowed that once we five were down to two, we’d crack open that bottle and drink it. I wish I could remember where that cliché came from. I think it was a bottle of Bordeaux, and a fighter squadron, in the original tale.
Once the retrospective began, it fell to Linda Rising, Mary Lynn Manns, and fellow lifer Allen Wirfs-Brock to save the day. Allen came armed with a veritable litany of who was here when questions that managed to get some of the older folks in the crowd a pretty good workout, what with repetitive standing and sitting. Allen and Linda subsequently widened the panel to anyone who’d been at OOPSLA ’86 in Portland. That produced a satisfactory quorum of the village elders.
Q: What kept me coming back?
A: The free booze.
A: OOPSLA, said I, was an intellectual Brigadoon, a place you could return to every year, and pick up conversations in mid-sentence. A place like a cocktail party on the Bizzaro World, where you could glibly discuss topics like multimethod dispatch, and be surrounded by the other thousand people on Earth who thought that that was fascinating.
There was a steady stream of questions from the floor. One somehow involved the idea of removing the OOs from OOPSLA, and just re-branding the conference as Programming Languages and Systems. I quipped that were we to banish the OOs from OOPSLA, Rik SmOOdy and I would have to move to Serbia. I’m not sure whether anybody got it.
There was a query as to our most embarrassing OOPSLA moment. I recalled with horror the reception that Al Gore’s science advisor was given at the after dinner speaker at the last OOPSLA banquet in Washington, DC in 1993. Rebecca grabbed the baton and recalled how noisemakers distributed during one of the panels, in combination with wine distributed during the meal, lead to this genuinely appalling breach of etiquette.
I fondly recalled, at one point, Alan Kay’s banquet presentation on the Vivarium project at the very first OOPSLA. I repined as to how he’d managed to gore every oxen in the house, and being struck that one could actually do that at a research conference. For good or ill, my life was changed.
I recalled as well, as I often do, how he’d observed, as he so often did, that Good ideas don’t always scale, which prompted Henry Lieberman, the next day, to inquire So what do we do, just scale the bad ones?
Someone lobbed a slow ball down the middle for us at one point, asking us what things would be like down the road. Having been spending my time in the High Performance Computing world of late, I’m convinced that things seven or so years from now will be quite a bit more different from now than now is from seven years ago. With Moore’s Law exhausted, and a multicore breakout in the works, and PS3s and their ilk poised to bring supercomputer power to every teenager on the planet, we’ll be faced with the challenge of coming up with a programming model. MPI meets Actors meets Darwin meets Worse-is-Better. How will we squander this bounty?
After a while, I recalled the mix of deference and fascination, mingled with a dash of pity and boredom with which I’d have greeted such a gathering of elders nineteen years ago, and wondered what the folks in our audience, few of whom had bailed out in the midst of this, were thinking. Regardless, I was really enjoying myself, at least, as can be seen in the picture below depicting fellow OOPSLA gadfly Dave Ungar wistfully waxing eloquent over I can’t remember what as I gaze on in rapt attention.
In an elegiac moment, Ungar also recalled the year that we discovered that a Sarcasm Birds-of-a-Feather session was inherently impossible to organize if you tried to get the right people to come to it.
There were moments where what we were doing felt a tad indulgent. I recalled my youthful garage band sessions, which were way more fun to perform than they were to listen to, and thought, well, if that’s what we’re doing, then what the hell, we deserve it. As the retrospective wound down, I felt oddly, uncharacteristically sanguine about it all. It’s hard to deny that we have made a difference over the last nineteen years.
What with the dessert spread and all, this affair seemed more akin to a Jewish Wedding than an Irish Wake. We got insulin shock, alright, but nothing to wash it down. But this event, in the end, was what it needed to be, and about as much fun as it could have been, at least without the liquor…
Photos ©2005 by Munawar Hafiz
September 29, 2005
The Smell of Toner in the Morning
I love the smell of toner in the morning.
It smells like ... tenure
--Thomas Jay Peckish II, on the alternative to perishing, with apologies to Robert Duvall...
August 22, 2005
Inside the Hacker's Studio
A number of us at the CS Department at UIUC were able to end our afternoon today, at 1700 CDT, by watching a live (condign / flawless / transparent) webcast of the 2004 A. M. Turing Award Lecture from SIGCOMM in Philadelphia. The page for the webcast stated that "Ironically, this will be the first ACM Turing Lecture that is webcast live." I'm at something of a loss to explain why this is ironic. For those of us who were at OOPSLA 2004, it would be our second consecutive realtime Turing presentation.
The webcast was lead in with an ACM Logo accompanied by organ music that began to remind me of a hockey arena. I was waiting for the Canadian national anthem. Then it gradually dawned on me that the piece being played was a decidedly languid rendition of “Thus Spake Zarathustra” did little to diminish this effect. It turns out that the University of Pennsylvania's Irvine Auditorium, in which the lecture was to be delivered, is home to a 1.1e04 pipe pipe organ (see picture).
The prize was awarded in June to Vint Cerf and Bob Kahn for their pioneering work on Internet protocols. They elected to deliver their Turing "lecture" at the ACM venue of their choice: SIGCOMM.
The lecture was entitled: Assessing the Internet: Lessons Learned, Strategies for Evolution, and Future Possibilities.
I use the term "lecture" advisedly, because this dynamic duo of the datagram chose not to attempt a tag team lecture at all, but resorted instead to that quotidian staple of twenty-first century life, the tal

