Login
Register
All

Wednesday, July 28, 2010, posted by @ 1:58 AM
The Facebook Effect
Mark Zuckerberg and David Kirkpatrick spoke at the Computer History Museum, and you'll find their dialog here.

Quote of the day:

The way of the world is meeting people through other people.
Robert Kerrigan


Tuesday, July 20, 2010, posted by @ 12:24 AM
MacPaint Source Code Released
The Computer History Museum, located in Mountain View, California, is not only a museum of hardware but also a museum of software. As reported by Arik Hesseldahl of Bloomberg today, with the permission of Apple Computer, the Museum has made available the original source code of MacPaint as well as the underlying QuickDraw graphics library.

MacPaint was written by Bill Atkinson, a member of the original Macintosh development team. Originally called MacSketch, he based it on his earlier LisaSketch (also called SketchPad) for the Apple Lisa computer. Bill started work on the Macintosh version in early 1983. He also created QuickDraw (then called LisaGraf) for the Lisa. Andy Herzfeld, another key member of the team, considers QuickDraw "the single most significant component of the original Macintosh technology" in its ability to "push pixels around in the frame buffer at blinding speeds to create the celebrated user interface."

MacPaint was released with the Macintosh in January, 1984. The application was written in Apple Pascal and was packaged in a single file of only 5,822 SLOC, together with an additional 3,583 lines of assembly code for the underlying Motorola 68k microprocessor, used to implement routines needing high performance as well as certain interfaces to the operating system. QuickDraw was the Macintosh library for creating bit-mapped graphics and was used by MacPaint and other applications, and consisted of a total of 17,11 lines of 68 assembly code packaged in 36 files.

Quote of the day:

Design is not just what it looks like and feels like. Design is how it works.
Steve Jobs


Thursday, July 15, 2010, posted by @ 1:17 PM
Pattern-Based Engineering
Lee Ackerman and Celso Conzales have recently published Patterns-Based Engineering: Successfully Delivering Solutions via Patterns. I had the opportunity to read their manuscript while in progress, and very much enjoyed what they had to say and how they said it.

You can follow more of their work here.

Quote of the day:

Research is just like sex. Sometimes something useful comes from it, but that is not why we do it.
Richard Feynman


Thursday, June 24, 2010, posted by @ 10:35 AM
Plato
Back in 1976, I had the opportunity to use Plato. Given that I was at the Air Force Academy, AirFlight was a favorite, but I also remember flirting in chat rooms (Talkomatic) and using instant messaging (Term-Talk). And that was thirty-plus years ago.

The Computer History Museum recently held a retrospective on Plato and the videos of that entire conference are now available here. While you are there, do check out the rest of the videos on the Computer History Museum YouTube channel. There are currently a legion of artifacts, with everything from historic computer films from the 1950 and 1960 decades, to museum lectures and panels, exhibit films, and co-production pieces.

Quote of the day:

I arise in the morning torn between a desire to save the world and to savor the world. That makes it hard to plan the day.
E. B. White


Thursday, May 20, 2010, posted by @ 12:35 AM
Complexity and Architecture
If you are a fan of jazz and a fan of programming, you might enjoy the music of the convergently named group Rinse the Algorithm.

Quote of the day:

As complexity starts becoming more and more important, architecture is always going to dominate material.
Alan Kay


Monday, May 17, 2010, posted by @ 1:47 AM
Barbie: Computer Engineer
Barbie Millicent Roberts, the best-selling doll of all time, has launched her latest career as a computer engineer.

Quote of the day:

I want one.
Tony Stark


Monday, May 10, 2010, posted by @ 4:07 PM
System Resonance And The Stock Market
I once drove a really nice car that unfortunately would develop the shakes whenever it reached 60 mph. A little above that speed or even a little below, and the ride would be smooth. I recall another car that would let loose an annoying rattle behind the dashboard at particular fan settings. In each case, these cars were otherwise quite lovely to drive. It was only when certain, fairly narrow, conditions were met that they would act strangely. There was nothing really wrong with either car; both exhibited systemic problems that would manifest themselves when each system resonated in undesirable ways.

Actually, this kind of resonance is not uncommon with complex systems. Hit a series of waves in just the right way and you'll break the back of even the most carefully engineered ship; encounter a particular combination of winds and you'll topple the tallest building. You can design for and test against most such conditions, but the state space of any complex system is such that you can't afford to design and test against all possible conditions. So, common practice is to over engineer the system, be certain that you operate it within its intended design envelope, and when things that you could not design or test for happen, patch the system so that it won't happen again. Hopefully, no one dies in the process.

Now, I'm not a financial expert, but my take is that last week's stock market jitters were a manifestation of this kind of complex system resonance. The new SEC rules that have been put into place are thus a (reasonable) systemic patch, for they attempt to break the dynamic coupling among computer trading on different exchanges, a coupling that could not have been anticipated nor tested for. I say "could not have been anticipated" because you can't a priori predict where and when these kinds of resonances will take place; "nor tested" because the highest fidelity simulation of the market is the market itself, and any lesser simulation would likely never exhibit such behavior at all. At worst, a systemic resonance such as this will tear a system apart. Having a human in the loop or having explicit governors vastly changes the dynamics because, from a control systems perspective, you have a very different frequency dynamic going on, one that will either dampen or neutralize the resonance.

What's the lesson here? Software-intensive system are not immune to such systemic problems. Indeed, as we build more systems of systems, it's increasingly likely that we will see more of these kinds of strange, intermittent behaviors. Problem is, each individual system may be operating perfectly, but it's the combination of such systems under particular operating conditions that produces resonance. When that resonance happens, there will be much finger pointing, but that won't solve anything, because it is a systemic problem. Furthermore, we really lack the analytic tools to test for much less reason about such problems in software-intensive systems. So, the lessons from systems engineering apply to software-intensive systems as well: over engineer them, operate them within particular design envelopes; patch the system when it resonates. I should add that having loosely couples systems helps a great deal too, because you give the system room to move, so to speak.

Quote of the day:

It turns out that an eerie type of chaos can lurk just behind a facade of order---and yet, deep inside the chaos lurks an even eerier type of order.
Douglas Hofstadter


Monday, April 19, 2010, posted by @ 11:51 AM
Many Bills
IBM has just released Many Bills, a Web-based mechanism for exploring congressional legislation.

Quote of the day:

All the legislation in the world will not abolish kissing.
Elinor Glyn


Wednesday, April 7, 2010, posted by @ 10:51 PM
The Rise and Fall of Waterfall
Here's a delightful video about the rise and fall of the waterfall process.

I had the pleasure of working with Win Royce some years ago (and I have the pleasure of working with his son, Walker). Pay close attention to the scene around 4:15, in which it is made clear what Win was really trying to say (but which was oft ignored).
Quote of the day:

If debugging is the process of removing bugs, then programming must be the process of putting them in.
Anoymous


Friday, March 19, 2010, posted by @ 11:49 AM
ibm.com
Today marks the 24th anniversary of the ibm.com domain, registered on March 19th, 1986. IBM's was not the first .com: that belongs to symbolics.com, which was registered on March 15th, 1985 (although that domain is largely a placeholder).

Quote of the day:

The Internet is the world's largest library. It's just that all the books are on the floor.
John Allen Paulos


The Internet is just a world passing around notes in a classroom.
John Stewart


The Internet isn't free. It just has an economy that makes no sense to capitalism.
Brad Shapcott


A journey of a thousand sites begins with a single click.
Anonymous




Wednesday, March 17, 2010, posted by @ 10:01 AM
Intermittent Behavior, Revisited
My dear friend Joe Marasco observed a nuance regarding Cummings' article which I'd failed to note.

Cummings speaks of testing as if it were an inexhaustible facility. Well, one can always test and test and test, but as Joe points out, there is always a cost: "The problem with that is that no economic venture can afford to test forever. First, the costs are prohibitive, and, second, the product never gets to market! The real question is this: where is the appropriate economic trade-off point?"

Well said. Joe goes on to observe that "If we want to guarantee that no life will ever be lost to a software defect, we are just kidding ourselves. It has happened many times whether we know it or not, and it will continue to happen. We do need to minimize obvious blunders, but with increasing complexity comes increased risk. Trying to eliminate that risk, through either brute force or elegance, is a costly proposition." I'd add that it might even be an intractable problem, if one considers the size of the state space of most every interesting system of systems. No system of sufficient complexity can be fully tested; no system of sufficient complexity can be proven to be "correct." If really want to get deep about it, my intuition suggests that this is an instance of Godel's incompleteness Theorem: there are some propositions (i.e the operational behavior of a complex software-intensive system) that cannot be proven true or false using the rules and axioms (i.e. the mathematical model of computation) of that system itself.

I have discovered a truly marvelous proof for this, but the margin is too narrow to contain it.

Quote of the day:

Boris Podolsky: James! How's the rat business? James Moreland: Well, actually it's mostly students I'm experimenting on now. Kurt Godel: My God, the mazes must be enormous.
Anoymous


Sunday, March 14, 2010, posted by @ 4:57 PM
Intermittent Behavior
David Cummings, one of the developers associated with the Mars Pathfinder project, writes this story regarding the difficulty of reproducing intermittent systems failure.

Software-intensive system are just plain wicked, and - as Fred Brook notes - all such systems have an essential complexity to them that is inescapable. Add to the mix the nature of such discrete systems in their interaction with a very continuous world, then add to that the problems inherent with concurrent systems of systems - race, dead lock, live lock starvation, and the like - and you end up with something that challenges contemporary development, testing, and deployment practices. I'm not casting any disparaging thoughts to Toyoto in particular, but as David properly notes, even reproducing intermittent faults so that the root cause may be found is wickedly hard.

Quote of the day:

We have a picture for how complexity arises, because if the universe is computationally capable, maybe we shouldn't be so surprised that things are so entirely out of control.
Seth Lloyd


Tuesday, February 9, 2010, posted by @ 2:23 PM
IBM Machinima
Last week I conducted a session on IBM's Machinima with Ariella Furman, which you'll find here, here, and here.

Quote of the day:

Sometimes your whole life boils down to one, insane move.
Jake Sully


Tuesday, January 5, 2010, posted by @ 12:08 AM
Boyle's Law For Virtual Worlds
Boyle's Law describes the inverse relationship between pressure and volume in a closed system. Density - being mass per unit of volume - has a role to play here as well, for given a constant temperature and a given mass, if you increase the volume of the closed space you reduce the pressure and therefore the density.

I hold regular office hours at Thornebridge in Second Life and have done so for about a year. You'll find me there conducting business, lecturing and occasionally meeting customers. I've noticed that the number of residents in world at any one time has been growing steadily - no matter what time of day, it's usually in the high 60,000s - but at the same time the amount of land has been increasing. Ergo, you may find it less dense and therefore more sparse, as noted here (and yet, as the article goes on to point out, the Second Life economy is growing).

Quote of the day:

Could it be that in the future they will say, 'A real relationship! Urgh, how horrible.' The messiness and squalor of the real world, and the real-time element, might be offset by the more sanitised, two-dimensional reality of Second Life.
Baroness Susan Greenfield


Monday, January 4, 2010, posted by @ 11:16 AM
Why Architecture Matters
Paul Goldberger, architecture critic for The New Yorker has just published his latest book, Why Architecture Matters. While Paul's work focuses on civil architecture, his remarks do resonate with the world of software architecture. He notes that "Architecture begins to matter when it brings delight and sadness and perplexity and awe along with a roof over our heads." David Minthorn offers a review of Paul's book, and while one might accuse Paul of being an architecture astronaut, he does care about the fragile balance between pragmatics and esthetics, wherein he talks about "the hospital that is a 'cold, forbidding environment' for patients and staff; the school designed 'more for the ease of the custodial staff' than the students and teachers; airports with 'endless concourses' designed for moving airplanes rather than people; and strip malls planned 'solely to make it easier to drive cars in and out.'"

Quote of the day:

Utilitas, firmitas, venustas.
Marcus Vitruvius Pollio


Sunday, January 3, 2010, posted by @ 4:22 PM
End of the Noughties
The fifties, the sixties, the seventies, the eighties, the ninties....I've always struggled with what one properly names a zeroth decade, but with all that's transpired around the world, I suppose that noughties is good enough. So, goodbye to first decade of the 2000s and welcome to the next.

Quote of the day:

We must be willing to get rid of the life we've planned, so as to have the life that is waiting for us. The old skin has to be shed before the new one can come.
Joseph Campbell


Wednesday, December 9, 2009, posted by @ 10:21 AM
How Much Information?
As reported in Slashdot, here's a fascinating report on how much information Americans consume.

Quote of the day:

Data is not information. Information is not knowledge. Knowledge is not understanding. Understanding is not wisdom.
Anonymous


Tuesday, November 10, 2009, posted by @ 1:21 PM
Survey From Carnegie Mellon
A colleague from CMU has asked me to pass on this invitation to participate in a survey for software architects:

We have designed a tool to help software architects evaluate their architecture designs for specific usability issues. We are inviting software architects to look at our design and take a brief online survey about their opinions.

Completing the survey will entitle you to be entered in a drawing for a $100US Amazon gift card. You must complete the survey to enter the drawing. When we have received 40 entries, a winner will be selected at random and notified via email.

In user tests of a prototype of our tool, software architects at a major European development organization estimated they received a 17:1 ROI on time they spent using the tool to evaluate a design for a product line architecture. An open-source version of the tool should become available for distribution in the near future.

Participation in the survey should take less than 30 minutes. Your responses will be kept confidential. To participate, please go here.

If you have any questions or would like further information, please contact egolden@cmu.edu. Thanks!

Quote of the day:

When television came roaring in after the war (World War II) they did a little school survey asking children which they preferred and why - television or radio. And there was this 7-year-old boy who said he preferred radio "because the pictures were better."
Anonymous


Monday, November 2, 2009, posted by @ 2:53 PM
Imagination And Process
David Worthington of SD Times has a piece on failures in software projects wherein I'm quoted.

Quote of the day:

In my dream, the angel shrugged & said, If we fail this time, it will be a failure of imagination & then she placed the world gently in the palm of my hand.
Brian Andreas


Monday, November 2, 2009, posted by @ 1:09 PM
SOA Manifesto
Last week, I participated in the creation of this SOA manifesto.

Quote of the day:

There are no manifestos like cannon and musketry.
Arthur Wellesley


Monday, November 2, 2009, posted by @ 12:35 AM
Design Patterns, OOP, And Coffee
Larry O'Brien interviewed me here, and we covered a lot of ground, from design patterns to object-oriented gorp to the merits of Kona coffee.

Quote of the day:

No one can understand the truth until he drinks of coffee's frothy goodness.
Sheik Adb-al-Kadir


Thursday, October 29, 2009, posted by @ 1:52 PM
EA Is Not TA
I'm back from New York where I keynoted an invigorating conference sponsored by the IASA, in which they brought together a number of enterprise architecture folks (such as John Zachman) and technical architecture folks (such as Len Bass). The collision of those worlds is something that's been popping up in a number of conversations I've had recently, and it so moves me to make my position clear.

EA (enterprise architecture) is not TA (technical architecture).

Although the two share the noun "architecture" they are different things. EA attends to the architecture of a business that uses technology; TA attends to the architecture of the software-intensive systems that support the business. Each domain - that of the business and that of the system - have fundamentally different stakeholders with different perspectives and different viewpoints. The fact that the both share some aspects of terminology and concerns and even notation is good, but can be confusing in the dialog between those two worlds..

Indeed, speaking of two worlds, in the dialog between science and religion, there's also this notion of two worlds: science has some things of which it may speak with authority and faith has some things of which it may speak with authority, but when science tries to answer questions of faith (why is the world the way it is) or vice versa (is there or is there not a randomness in the laws of the universe) then conflict arises. Not to diminish the complex texture of the dance between science and religion - if you want to go there, then the Templeton Foundation is one place to start, although Richard Dawkings has some things to say about that too - but IMHO EA and TA are similarly of two worlds. Most contemporary economically-meaningful enterprises use software-intensive systems to carry out their mission, and so there is and should be this jiggling between the architecture of the business (as it uses technology) and the architecture of the software-intensive system (as it serves and leads the business).

If you accept my premise that this collision of worlds exists between EA and TA, then I want to be clear that both worlds must co-exist and both must interoperate. SOA actually has some interesting traction here, because on the one hand, architecting a business around the services it provides and architecting a software-intensive system that makes manifest those services are shared goals of the enterprise and the technology.

And yet - and here's where I'm likely to inflame some folks - IMHO it's a mistake to try and extend EA frameworks and notations and processes to attend to the architecture of the software-intensive systems it uses, just as it is a mistake to try and extend SA frameworks and notations and processes to attend to the architecture of the business. There might be some overlap in view and basic modeling elements and processes at a high enough level of abstraction, but when you get to the details, it becomes too much, and you lose the perspective of what each is trying to do. EA is not a desert topping and a floor wax and neither is TA.

I'm currently working with Tilak Mitra, a colleague at IBM, on surveying the 20 or so EA frameworks that appear to have some traction in the world. There are far fewer TA frameworks - most are some variation of Kruchten's 4+1 model view - and the fact that there are so many EA frameworks out there speaks to the vibrancy of that market, but my experience tells me that there are too many chasing the same problem, and eventually the market will make its choice; I view this as a healthy sign, but a sign that EA is still in its adolescence. In contrast, the fact that there are fewer TA frameworks is a sign to me of the greater maturity of that domain, not to say that it's any less vibrant (look for the next edition of Documenting Software Architectures, but the market appears to have made its choices.

Quote of the day:

There are two worlds: the world we can measure with line and rule, and the world that we feel with our hearts and imagination.
Leigh Hunt


Saturday, October 24, 2009, posted by @ 10:20 PM
Christmas Presents for the Practicing Architect
I'm in a playful mood today, and was reminded of a discussion I had with Paul Priess, CEO of the International Association of Software Architects who suggested the following t-shirt slogan

Architects do IT with models.

Not to be outdone, my colleagues in the UK, Ian Charters and crew, also suggested

Architects do IT with heroically.
Architects do IT with automagically.
Architects do IT with with pictures.

plus the rather lonely sounding

Architects do IT alone.

My contribution to the mix is

Carpe architecture.

Quote of the day:

I failed the Turing test.
Teenormous


Tuesday, October 13, 2009, posted by @ 7:04 PM
Why Engineering?
On behalf of the IBM Academy of Technology, I produced this video on Why Engineering?

Quote of the day:

Scientists dream about doing great things. Engineers do them.
James Michener


Saturday, October 10, 2009, posted by @ 1:20 PM
The Elements of Architecture
I just returned from keynoting Models 2009 in Denver, where I spoke on the topics of "The Other Side of MDD." I've often quoted Sam Guckenheim who once noted that "the code is the truth" but then I always append the caveat "but not the whole truth." In my keynote, I went on to observe
  • Architecture as a collection of significant design decisions
  • Patterns as themes
  • Cross-cutting concerns as traces
  • Rationale as the backstory
  • Tribal memory as the human story
Quote of the day:

So the day became one of waiting, which was, he knew, a sin: moments were to be experienced; waiting was a sin against both the time that was still to come and the moments one was currently disregarding. Still, he was waiting.
Neil Gaiman in Neverwhere


Tuesday, September 29, 2009, posted by @ 1:48 PM
IASA Enterprise Architecture Event
I'll be shelpping my way to New York City shortly, to keynote the IASA Architecture Regional Conference. John Zachman opens the event on Monday the 12th of October and I give the keynote on Wednesday, after which we'll be putting all the various enterprise architecture framework folks in a room, shake it about, and see what falls out. There's still space (and you can register here).

Quote of the day:

I can't wait to get back to New York City where at least when I walk down the street, no one ever hesitates to tell me exactly what they think of me.
Ani Difranco


Monday, August 31, 2009, posted by @ 5:52 AM
The Radical Future of Research and Development
This week's cover story in Business Week is on the radical future of research and development and includes remarks from several of IBM's researchers, including John Kelly, Mark Dean, and Charles Lickel.

Quote of the day:

Research is formalized curiosity. It is poking and prying with a purpose.
Zora Neale Hustron


Monday, August 24, 2009, posted by @ 5:27 AM
The Preservation of Classic Software
There's been a vigorous discussion going on the past few days with staff and volunteers at the Computer History Museum regarding software preservation. I'm an advocate for the fierce collection of artifacts before they turn to dust; time is not on our side. As an example, there was news a few weeks ago of Microsoft bringing their Flight Simulator to end of life. IMHO, it would be a loss to future generations for that code to simply disappear. I wrote off to Ray Ozzie making an appeal for its preservation, but thus far radio silence. There are dozens upon dozens of similar stories every day (did you know neither IBM nor Fred can find the original source code to OS/360? We can find much later versions, but not the earliest ones).

There are a number of fascinating things to tackle as we collect: how does one present, how does one classify, how does on tell the story, how does one reveal the inner beauty of these objects that spring from human cognition and have no material manifestation other than their operation and some source lines of code?

Quote of the day:

Snakes. Why did it have to be snakes?
Indiana Jones


Tuesday, August 18, 2009, posted by @ 7:44 PM
Systems Biology Graphical Notation
From a paper in the most recent issue of Nature Biotechnology comes this paper on the Systems Biology Graphical Notation by researchers from places as far ranging as the European Bioinformatics Institute to CalTech and beyond. As the abstract notes, "Circuit diagrams and Unified Modeling Language diagrams are just two examples of standard visual languages that help accelerate work by promoting regularity, removing ambiguity and enabling software tool support for communication of complex information. Ironically, despite having one of the highest ratios of graphical to textual information, biology still lacks standard graphical notations. The recent deluge of biological knowledge makes addressing this deficit a pressing concern. Toward this goal, we present the Systems Biology Graphical Notation (SBGN), a visual language developed by a community of biochemists, modelers and computer scientists.

Quote of the day:

If it's green or wriggles, it's biology. If it stinks, it's chemistry. If it doesn't work, it's physics.
Anonymous

If it can't be proven, it's mathematics. If it loops forever, it's computer software.
Joe Marasco

If it won't be finished for another month, it's computer science.
Brent Hailpern


Thursday, August 6, 2009, posted by @ 12:58 AM
One More Thing Web
Following up from my previous post, I'd be remiss if I didn't mention interesting developments with regard to HTML 5's canvas mechanisms.

Quote of the day:

A great artist can paint a great picture on a small canvas.
Charles Dudley


Tuesday, August 4, 2009, posted by @ 1:14 PM
All Things Web
Here's an interesting report from the folks at Adaptive Path, offering new concepts for the Web/human interface.

In a related vein, Adobe's Zoetrope suggests new ways for for manipulating web history, Calis presents an approach for leveraging the semantic web, and IPSO promotes the use of IP for smart objects.

Speaking of new, by now you surely are familiar with Microsoft's Bing, but don't neglect Cuil.

Follow the money is an important mantra for politics, but the same can be said for tech: specifically, see where DARPA is putting some of its research dollars (although, there are skeptics who question the need for new underpinnings for the web).

Still, the web has come a long way, beginning with the rise of the web and on to the first dot com, realizing that it's still highly fraught with peril to predict the future, as seen in this ad from 1997 ("use the internet for sports scores, chatting with women, taxes, football scores, chatting with men about footfall, Egyptian literature, and sending electronic M!"), this news report from 1981, and this highly accurate prediction from 1934. But oh! the brain droppings we have left along the way, from the most memorable Internet memes to the most influential web videos of all time. Still, here be dragons, for much of the content on the web remains unmapped. Tim Berners-Lee observes that we've only just begun, which is particularly understandable if one considers the deep digital divide.

Although a few places will repair your buggy whips (and no, I'm not referring to dysfunctional bondage accoutrements), the web is littered with the detritus of old business models, including those for newspapers, movies, music, and books. Even email, by some, is considered evil.

Still, change happens, and the intertubes of the web are shifting as are the economic models for those series of tubes.

My theory is that this is due to three latent and systemic design flaws in the web, flaws that we could not have known a priori: changing assumptions about the nature of communication (from stateless post and get to streaming video), changing assumptions about the number of addressable devices (who could have imagined cars would be mobile IP nodes?), and a poor separation of concerns between presentation and semantics (which is partly attended to by the protocols of the semantic web). Speaking of those flaws, if you'd like to be sleep soundly tonight, then don't consider this DNS vulnerability or this much needed TCP/IP fix or these issues of identity theft.

Still, innovation marches on, and we now have the the first ethernet switch in space and the beginnings of the Galactic Wide Web. Happily, researchers with lots of time on their hands have also developed, for urban areas, the avian RFC 1149, which supports high delay, low throughput, and low altitude packet transfer. Now, if you think P2P (pigeon to pigeon) protocols are slow, you might consider the capacity and the speed of the web (or you can just test your connection here).

But, if you want to have bragging rights for the absolutely coolest, sexiest data center on the web, you'll have to top this one.

Quote of the day:

Ten movies streaming across that, that Internet, and what happens to your own personal Internet? I just the other day got...an Internet was sent by my staff at 10 o'clock in the morning on Friday. I got it yesterday. Why? Because it got tangled up with all these things going on the Internet commercially.
Senator Ted Stevens


Wednesday, July 29, 2009, posted by @ 7:00 PM
Linux Institutional Memory
A post today in Slashdot reports on the maintainer of the TTY subsystem of the Linux kernel stepping away from his role.

While there's certainly some human drama behind this story, what interest me is the loss of intellectual capital. As I've often said, the code is the truth, but it's not the whole truth, and there's considerable architectural knowledge retained in tribal memory. I've seen this happen again and again: just a couple of weeks ago, I was in NYC and DC, and the same issue - IP literally walking out the door - came up in discussions with a major bank, the DoD, and the IRS. This is yet another reason why, from my experience, having a reasonably well-understood, syndicated, and accessible statement of a system's significant design decisions - in short, it's architecture - is important.

I don't know for certain, but the TTY subsystem is not small, and so for someone new to really get that code base under their skin, then continue to evolve it in a fashion that holds fidelity to the existing architecture will be challenging.

Quote of the day:

It is surprising how much of memory is built around things unnoticed at the time.
Barbara Kingsolver


Tuesday, July 28, 2009, posted by @ 7:03 PM
All Things Medical
A collection of sites associated with medical advances.

Tired of hacking software? How about hacking your DNA? If you need some help equipping your lab, I'd suggest you start with ginkobioworks.

Of course, you can't hack what you can't measure, so check out these approaches to real time monitoring of the body. ActiGraph is another resource, if you are more interested in monitoring physical activity. Of course, if you want to go deep inside the human body, earlier this year IBM reported the ability to generate a 3D MRI at extremely high resolutions.

While I won't comment either way on this article from the MIT Technology Review, clearly economics is an amplifying or dampening force in the application of technology.

Finally, there's the work done by Bill Green, who created a workstation for an unassisted quadriplegic user, namely, his wife. What an incredibly loving application of technology. Allison, if you are reading this, I wish you well.

Quote of the day:

We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology.
Carl Sagan


Wednesday, July 8, 2009, posted by @ 1:26 PM
A Meeting of Minds
Later this year, I'll be keynoting a conference in New York City, sponsored by IASA. The conference organizers have managed to bring together an incredible collection of people: John Zachman, , Eric Evans, Bill Inmon, Angela Yochmen, Roger Sessions, and many more.

Quote of the day:

It is the framework which changes with each new technology and not just the picture within the frame.
Marshall McLuhan


Tuesday, June 23, 2009, posted by @ 1:31 PM
The Revenge of the Nerds
John Hodgman, speaking at this year's Radio and TV Correspondence's Dinner, addresses the revenge of the nerds, and in fact, makes a case that President Barack Obama is himself a nerd. Actually, Wired made a similar projection a year ago, but if you want more proof, check out what the good folks a JibJab have to say.

And, to defend the bona fides of my own geekness, I actually found the making of the JibJab video a fascinating study of the creative process as it dances with technology.

Quote of the day:

What's your geek score?
Inner Geek


Friday, June 19, 2009, posted by @ 7:45 AM
Watts Humphrey
Day three of an extended oral history I'm conducting with Watts Humphrey. What a fascinating man, someone whose career and contributions to the industry have paralleled the growth of what's become contemporary software development, from the pre-mainframe days at IBM (where among other things he helped to introduce the first software license) to his later work at the Software Engineering Institute (with his work on software quality and process maturity). Watts is considered the "father of software quality" but in this interview I've discovered so much more about him: how he learned to ride a bike from Eddie Rickenbacker's son, his studies under Enrico Fermi, his relationship with Tom Watson, and so many more stories. I'm graced with being able to listen to this first hand. The transcripts, by the way, will eventually be made available through the Computer History Museum.

Quote of the day:

The problem of software process change are often complicated by the fact that no one is responsible to make it happen. If software process improvement isn't anybody's job, it is not surprising that is doesn't get done! If it is important enough to do, however, someone must be assigned the responsibility and given the necessary resources. Until this is done, software process development will remain a nice thing to do someday, but never today.
Watts Humphrey


Monday, June 8, 2009, posted by @ 6:28 AM
Software Abundance in the Face of Economic Scarcity
i've just returned from Orlando, where I attended the IBM Rational Software Conference. Happily - but surprisingly, given these economic times - attendance was almost dead on to last year's figures.

Among other things, I gave a presentation at one of the plenaries. One of the key messages of this conference was IBM's Smarter Planet initiative, and so I made the point that a very dangerous combination is that of a smarter planet combined with stupid people. In other words, it's not just about wiring the planet, it's also about having a responsible and accountable populace able to reason about complex issues and to make well informed decisions. Another theme I developed in a presentation to the executive track was that of software abundance in the face of economic scarcity. In the face of scarcity, the tradition reaction is to retreat, shrink, slash, and/or panic. Understandably so, innovation in times of abundance is relatively easy, but even just existing in lean times is hard. As Brad Perkins noted, "a recession exacerbates competition for limited resources." The thing about software, however, is that it is perhaps the most fungible and liquid of resources. The supply of software is limited only by human imagination and labor. Therefor, I argue, software-intensive systems are an inescapable and necessary element in helping us operate, innovate, and even thrive in the face of lean economic times. As Clay Williams, a fellow researcher at Watson, noted, software development is too often viewed as a cost center to be cut, rather than as an asset of strategic importance to be nourished.

Some random links for your reading pleasure. I celebrate the many ways that the populace can collaborate, from BarCamps to CafeScienfique to Pecha Kucha Nights. I spoke at a local Cafe a few years ago, and thoroughly enjoyed the experience.

Remember my earlier postings mentioning Joe Marasco aka Barbecue Joe? He appears here with Mr. William Shatner. And, speaking of all things Trek, did you catch the appearance of Randy Pausch in the latest Star Trek?

Oh, and one final plug for a friend of a dear friend. If you are in the market for CISSP training, check out this.

Quote of the day:

[Interviewer, at the end of a session about the future of software] So, what's next?
[Me] I'm going to have lunch with a friend.
[Interviewer] No, I mean much further out.
[Me] Oh, that's easy. I'm going to die, everything I've possessed will turn to dust, and all that I've done will be forgotten by countless generations. But in the meantime, I expect to live a long life, full of grace and love and joy.


Tuesday, May 5, 2009, posted by @ 1:22 AM
Quote
I have several dozen blog topics in the winds, waiting to be blogged as I am so moved, but this post serves as a vehicle to quote a dialog that moved me, from a recent work of fiction by Bernard Beckett.

Quote of the day:

[Adam:] You mock me for the shortness of my life span, but it is this very fear of dying that breathes life into me. I am the thinker who thinks of thought. I am curiosity, I am reason, I am love, and I am hatred. I am indifference. I am the son of a father, who in turn was a father's son. I am the reason my mother laughed and the reason my mother cried. I am wonder and I am wondrous. Yes, the world may push your buttons as it passes through your circuitry. But the world does not pass through me. It lingers. I am in it and it is in me. I am the means by which the universe has come to know itself. I am the thing no machine can ever make. I am meaning. [Art:] The soul is your most ancient idea. Any mind that knows itself also knows the body, which houses it, is decaying. It knows the end will come. And a mind forced to contemplate such emptiness is a force of rare creativity.
Genesis


Tuesday, April 28, 2009, posted by @ 1:50 PM
Obama and Science
President Barack Obama recently gave a speech to the National Academy of Sciences, calling for renewed national commitments to the advance of science and basic research.

Quote of the day:

Science is the topography of ignorance..
Oliver Wendell Holmes


Monday, April 27, 2009, posted by @ 11:26 AM
And The Question Is
Been sitting on this one for a while, but now it's public: first IBM had Deep Blue for playing chess, and now there's a system for playing Jeopardy. Slashdot has more on the subject here, and you'll find a video here.

Quote of the day:

Sometimes questions are more important than answers.
Nancy Willard


Monday, April 20, 2009, posted by @ 9:19 PM
Software Architecture Masterclass
I've recently been collaborating with one of my IBM colleagues, Peter Eeles, to create a half-day Software Architecture Masterclass that will be delivered during the Rational Software Conference in late May/early June. If you've not yet booked your place, then you can sign up here. The masterclass incorporates various aspects of the Handbook, together with Peter's own experiences from The Process of Software Architecting which is due for publication later this year.

Quote of the day:

No man is free, who is not a master of himself.
Epictetus


Thursday, April 9, 2009, posted by @ 2:55 PM
Second Life Behind A Firewall
I've been waiting to blog about this for a long time and now finally can, since it's been made public: Linden Labs has developed a packaging for Second Life that permits one to put a shard of a virtual world, isolate it from the public grid, and place it safely behind a firewall. You can add your own fences, razor wire, guards with weapons, and pit bulls if you want a really really secure world. The net result is that IMHO this is a wonderful step forward in advancing collaborative environments, for it's now possible to leverage all the wonders of Second Life yet in a secure manner. Engineering in air gaps is the only real meaningful security measure in this interconnected world, and that's what this offer. Kudos to Linden on this one.

Quote of the day:

Fifteen, 20 years from now, relationships online are going to be increasingly realistic.
James Hughes


Wednesday, April 1, 2009, posted by @ 10:12 PM
Research
Over the past month, I've been pouring over the published literature on software architecture, and just today finished re-reading some 50+ books on the subject. Along the way, I've added references here.

This current month is dedicated to pouring over a corresponding set of about a thousand papers and articles I've printed, and you'll see the citations here (among the papers, people, and sites).

Quote of the day:

If we knew what we were doing, it would not be called research, would it?
Albert Einstein


Friday, March 27, 2009, posted by @ 12:46 AM
The Complexity of Flight Software
NASA has just released its report on the complexity of flight software. Dan Dvorak, the editor of the report, noted in a message that "The report presents 16 recommendations, four of which are about architecture and architecting, reflecting the fact that good architecture is the best defense against unnecessary complexity in software-intensive systems."

Well said, Dan - I agree wholeheartedly :-)

Quote of the day:

The world you perceive is drastically simplified model of the real world.
Herbert Simon


Thursday, March 12, 2009, posted by @ 2:10 PM
Theology And Virtual Worlds
I'm on the board of the Iliff School of Theology. This morning, I had a conversation with Jeffrey Mahan, their Dean of Faculty, discussing the confluence of technology and theology. Among other things, I pointed Dr. Mahan to the work by Rita King and Joshua Fouts on Understanding Islam Through Virtual Worlds.

Quote of the day:

Technology is not a collection of neutral instruments but is accompanied by a set of values, practices, and purposes that create a particular destiny which simultaneously limits or prevents the contruction of alternative futures.
Waters


Tuesday, March 10, 2009, posted by @ 4:25 PM
Barbara Liskov
Congratulations to Barbara Liskov, who has been named this year's ACM Turing Award winner.

Quote of the day:

Let q(x) be a property provable about objects x of type T. Then q(y) should be true for objects y of type S where S is a subtype of T.
Barbara Liskov


Monday, March 9, 2009, posted by @ 4:27 PM
The Future Of Things
Another interesting site here regarding the future of things. Speaking of the future Vint Cerf is interviewed here and offers some thoughts regarding the web and robotics. While I'm still waiting for my personal jet pack, I am happy that I don't have to clean the inside of my home with a water hose as once predicted.

Still, I hope Santa brings me a personal fabber this year. I'll try to be really really good.

Not all is happy squirrels and dancing rabbits, however. Due to limited global supplies of indium, zinc, gallium, and havnium we may be back to paper and pencils, and even then, we might not be able to read the digital artifacts created in this generation.

If you are not totally bummed by now, there are lots of predications about how humanity will end.

And now back to your regularly scheduled program...

Quote of the day:

Forget the past- the future will give you plenty to worry about.
George Allen


Monday, March 9, 2009, posted by @ 4:08 PM
Catching Up on developerWorks
If you've been following my blog feed on developerWorks you will have been profoundly bored, for there's nothing that's been posted since September of last year.

Let me gently remark that this is why sound configuration management mechanisms are important: the script I'd used to cross post from my primary blog was broken during some innocent maintenance on the dW site. The good news is that the mechanism is now working, and so you'll see fresh posts on the dW blog regularly. If you want to read the posts I'd created since September, go here or snag the RSS feed here.

Quote of the day:

Everybody has accepted by now that change is unavoidable. But that still implies that change is like death and taxes it should be postponed as long as possible and no change would be vastly preferable. But in a period of upheaval, such as the one we are living in, change is the norm.
Peter Drucker


Thursday, March 5, 2009, posted by @ 12:07 AM
And Now For Something Completely Different
Enough of the serious geeky topics; time for some fun geeky topics. If I want serious, I'll plot the steady decline of my investments, watching as their value approaches zero.

There's the widely distributed Dilbert of course, but I also track User Friendly and The Joy Of Tech. I get a daily fix of all three. From time to time I'll stop by Wired and ValleyWag; here's a bit from Wired on doomsday machines and another from ValleyWag on goofy computer ads.

Then there's Oxford's list of the top ten irritating phrases as well as a collection of sounds from failing hard drives.

Apparently there is a proven correlation between success and facial hair as demonstrated here.

The web is a wonderful repository of old commercials, such as EDS's airplane commercial, a futuristic set from AT&T, and also IBM's Magic Box (I love the music therein). Lots and lots of old IBM ads may be found if you poke around a bit.

And, finally one that is unlike all the others, Amy Walker offering 21 different accents.

Quote of the day:

Humor is perhaps a sense of intellectual perspective: an awareness that some things are really important, others not; and that the two kinds are most oddly jumbled in everyday affairs.
Christopher Morley


Wednesday, March 4, 2009, posted by @ 2:48 PM
Agile And Architecture In Second Life
Scott Ambler and I have an ongoing series on agile and architecture posted on YouTube.

Quote of the day:

As you start building the product, don't assume that you know all the answers. Listen to the community and adapt. We had a lot of our own ideas about how the service would evolve. Coming from PayPal and eBay, we saw YouTube as a powerful way to add video to auctions, but we didn't see anyone using our product that way, so we didn't add features to support it.
Chad Hurley


Wednesday, March 4, 2009, posted by @ 2:08 PM
Creativity
Gapingvoid offers one of the most engaging discussions on how to be creative. Speaking of creative, check out this sung explanation of nanotechnology and this dance interpretation of a PhD thesis on transcription factors involved in development and growth control.

Wonder where the iPod, BlackBerry, Firefox, Twitter, Windows 7, ThinkPad, Android, Wikipedia, Mac OS X, and Red Hat Linux got their names?

Quote of the day:

The name of the song is called 'Haddock's Eyes'." "Oh, that's the name of the song, is it?" Alice said, trying to feel interested. "No, you don't understand," the Knight said, looking a little vexed. "That's what the name is called. The name really is 'The Aged Aged Man'." "Then I ought to have said 'That's what the song is called?'" Alice corrected herself. "No, you oughtn't: that's quite another thing! The song is called 'Ways and Means': but that's only what it's called, you know!" "Well, what is the song, then?" said Alice, who was by this time completely bewildered. "I was coming to that," the Knight said. "The song really is 'A-sitting on a Gate': and the tune's my own invention."
Lewis Carroll in Alice in Wonderland


Tuesday, March 3, 2009, posted by @ 8:26 AM
Programming Topics
i'd stumbled across a forum for low-level programming questions (and answers), and so that brought to mind a number of other sites I'd found on just pure programming topics. Thus, for your reading pleasure, I present eleven best practices for URLs, idioms for naming things, commenting/documentation styles, and approaches to a non-blocking coding style. There's also this post on DNS names for internal hosts and another offering a SLOC counting tool.

Though programming at a different level of abstraction, there's also the IBM mashup center.

Quote of the day:

One of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
Robert Firth


Friday, February 27, 2009, posted by @ 5:57 PM
The Future Of Traditional Media
Just 55 days short of its 150th anniversary, one of my two home town newspapers - the Rocky Mountain News - is closing down.

Traditional media is besieged, and there are a number of theories why. I for one, as I mentioned in an earlier post, no longer subscribe to a paper, for I get most of my news on the web. Will other forms of media follow a similar path as the Rocky? I don't dare touch the problems that face the music industry - their issues are legion, as these traditional companies come to grips with the web - and there's a similar story being played out in the world of books.

Because my work on the Handbook has led me to the movie production chain involving software-intensive systems such as Photoshop, Maya, Renderman, and Massive, this is personally an interesting question. Actually, it's an old question, for my first professional work as a software developer involved building graphics-intensive systems on an early Evans and Sutherland device. I have fond memories of the SIGGRAPH conferences of that era.

We are tantalizing close to being able to produce photorealistic human images. Emily is one such example, but I'm particularly taken by the work of Liam Kemp. His short This Wondeful Life is compelling in its execution and in its ability to set an emotional scene.

These advances will certainly impact the movie industry in some unforeseen ways, just as the presence of synthesized music impacted Broadway (regarding a collision of union rules for live music) and just as what unfolded in the train industry some years ago (when automation eliminated the need for certain jobs but rules kept such people in the cabs).

Still, good technology is no replacement for a well-crafted story.

Quote of the day:

Strip away the phony tinsel of Hollywood and you'll find the real tinsel underneath.
Oscar Levant


Thursday, February 26, 2009, posted by @ 10:18 AM
Books
Just received a presentation containing some interesting statistics from Nielsen Bookscan. They report that 3,000 books are published every day in the US. Of the 1.2 million books they tracked in 2006, 2.1% sold more than 5,000 copies. 16.6% sold fewer than 1,000 copies, and 79.6% sold fewer than 99 copies.

Printed media is under extreme pressure in the current economic climate; One of my vices is books - I buy (and read!) on average a couple of hundred books per year - but at the same time, I've cancelled my newspaper subscriptions, for I've found that I get most of my news online (and furthermore, the content of our local papers is primarily ads, some rehashed national and international news, and some shallow local news. Oh, and the comics. But increasingly, I've found that to be a waste of dead trees.

Quote of the day:

They kill good trees to put out bad newspapers.
James Watt


Wednesday, February 25, 2009, posted by @ 5:44 PM
Algorithms
In my riff on the limits of software, I've noted that there are some fundamental things that limit our ability to bridge the gap between vision and raw, running naked code: the laws of physics and the laws of software, for example. The next element that limits us is our ability to discover a suitable algorithm. Even though a problem might have a computable solution, that doesn't mean that we know how to find the most efficient solution (or even find a solution at all).

The field of computer graphics has perhaps the most visible manifestation - no big surprise there! - of how we have overcome algorithmic obstacles. In the earliest days, just rendering a three dimensional tea pot was a big thing. Once that was mastered, then attention was turned (in this approximate order) to properly render textures, then landscapes, followed by natural motion, characters, fluids, hair, clothing, and now near photorealistic faces. You'll find a more detailed history here, here and here.

And while I'm on this theme, congratulations to Dr. Ed Catmull, one of the pioneers in computer graphics, who was just awarded an Oscar. I may know of a computer scientist named Oscar who has a cat on his desk, but I know of only one Catmull who has an Oscar.

Other examples of essential algorithmic breakthroughs abound: the Viterbi algorithm, algorithms for native command queuing, PCA, ICA, LDA, EP, EBGM, and many more algorithms for facial recognition, and networking algorithm come to mind. And let's not forget PageRank, which is a floor wax and a desert topping.

In continuous need for better cryptographic hashing algorithms, NIST even sponsored a competition.

Quote of the day:

The Google algorithm was a significant development. I've had thank-you emails from people whose lives have been saved by information on a medical website or who have found the love of their life on a dating website.
Tim Berners-Lee


Wednesday, February 25, 2009, posted by @ 11:06 AM
Outsourcing And Deglobalization
In these curious economic times, some commentators have observed a trend toward deglobalization; in past times, one might have called this simply social and political isolationism, but given that this present movement is largely triggered by economic factors, it's also being called economic nationalism. No matter the label, it represents "reversing the process of global integration among nations."

While this may be so in the world of atoms, my personal observation is that our software-intensive systems are presently so entangled and appear to be increasingly so, such that deglobalization of these artifacts in the world of bits is unlikely. We've reached a point of no return, a place of utter and increasing dependency on our software. While there are largely politically- or religious-driven efforts to increase the friction of access to information, the global telecommunications infrastructure is just too decentralized to worry about more than just local effects (but this of course does not mean that one should just accept just restrictions).

The business of outsourcing - which lies at a curious cusp of the world of atoms (the people who do the work) and the world of bits (the artifacts that are produced) - has certainly taken a hit by the global economic malaise, but this does not mean that outsourcing as a business model is doomed: production will migrate to the place of lowest cost and greatest efficiency over time. While there are the usual large players in this space, I wanted to bring attention to a myriad of smaller, bazaar-like players.

RentACoder is one of the first such sites I stumbled across, but there's also ScriptLance (which has a wonderfully frictionless system for matching bids and offers), Guru, and Elance. TopCoder is a bit more difficult to classify - think of it as place for software gladiators to compete.

Quote of the day:

All mankind is of one author, and is one volume; when one man dies, one chapter is not torn out of the book, but translated into a better language; and every chapter must be so translated...As therefore the bell that rings to a sermon, calls not upon the preacher only, but upon the congregation to come: so this bell calls us all: but how much more me, who am brought so near the door by this sickness....No man is an island, entire of itself...any man's death diminishes me, because I am involved in mankind; and therefore never send to know for whom the bell tolls; it tolls for thee.
John Donne


Monday, February 23, 2009, posted by @ 3:35 PM
Piles And Piles Of Technology
I'm about to go heads down for two and a half months, working to get some closure to the (literal) several-feet-high piles of paper and notes I've collected for the Handbook. It's my intent to return to daily blogging, so here go a few random bits.

Though it's been several months, here's an interesting video on the timing technology behind the Olympics. Not meaning to be a downer, but despite the glitter of these past Olympics, the global recession has hit the Beijing building boom very hard (resulting in what the LA Times calls lots of "see-through" buildings.

Switching to another venue, here's a story on the technology behind last year's NBA Finals. If you are into following stars of a different sort, then check out some of the technology at yesterday's Oscars (Star Tracker is a product of Sportvision the good folks who also paint those electronic lines on football fields, among other things).

Quote of the day:

We've arranged a civilization in which most crucial elements profoundly depend on science and technology. We have also arranged things so that almost no one understands science and technology. This is a prescription for disaster. We might get away with it for a while, but sooner or later this combustible mixture of ignorance and power is going to blow up in our faces.
Carl Sagan


Tuesday, February 17, 2009, posted by @ 9:14 AM
Coverity Architecture Library
The good folks at Coverity have released an architecture library consisting of the architecture diagrams of over 2,500 open source projects. Generated by the Coverity Architecture Analyzer, these diagrams illuminate what is effectively an implementation view, illustrating the connections among components (the Analyzer permits you to do much more than just view these static diagrams).

I'm taken by the breadth of their catalog: they have analyzed a panoply of open source projects, from well-known ones such as Apache to lesser known ones ranging from device drivers to ham radio applications to bioinformatics systems and beyond. My compliments to the Coverity team, both for making these results public as well as inviting other open source projects to take advantage of these services.

Quote of the day:

It is a magnificent feeling to recognize the unity of complex phenomena which appear to be things quite apart from the direct visible truth.
Albert Einstein


Thursday, February 5, 2009, posted by @ 1:00 AM
All For Want of a Brace
Sigh. I gotta replace my sysadmin.

Ok, I was integrating my Google Mini with the Handbook site, and declared victory earlier this morning. I returned to my site later in the day, and it had fallen over, with Tomcat reporting a stack overflow, yet I'd changed nothing in my code. I was flummoxed. So, this evening I returned to the scene of the crime, and methodically began to undo what I'd done the past 24 hours. But then it hit me: while my code had not changed, the state of my world had, meaning, my cookies had expired. That gave me a hint, for I'd added just five lines of code to coordinate the dance between the Mini and my site. Sure enough, I'd improperly set apart a block, and thus one line that should have been executed under certain conditions was now executing under all conditions...and that made all the difference in the world. With the addition of a pair of braces, all is now right with the world.

Well, the global economy is in free fall, but otherwise Life Is Good.

Quote of the day:

Since human beings themselves are not fully debugged yet, there will be bugs in your code no matter what you do.
Chris Mason


Wednesday, February 4, 2009, posted by @ 9:39 AM
Searching
A minor victory, but I finally brought up search for the Handbook site. I use a standalone Google mini that I've had for years, but had to redirect it to craw the new site, which is hosted outside of my network. Brilliantly simply to do, by the way. Along the way, I added searching by subcollections so that in advanced searching, one can limit searches to specific parts of the site.

I love it when technology works well and simply.

Quote of the day:

Searching is half the fun: life is much more manageable when thought of as a scavenger hunt as opposed to a surprise party.
Jimmy Buffet


Tuesday, January 20, 2009, posted by @ 12:53 AM
Inauguration Day
I paused my day to watch the inauguration of our 44th president, Barack Obama.

What a refreshing ceremony. I found the prayers, the music, and especially President Obama's speech to be deeply inspiring and full of hope. These are challenging times, not just for this country but for the world, with much reconciliation and truth needed. The fact that this nation has persevered as it has is a testimony to the strength of our government and of its people. I am proud to call my self an American, but I do so with a deep sense of responsibility, for I am not just an American but also a citizen of the world and a fellow human on a journey as all other. It is by grace and by the efforts of those before me and beside me that I am where I am and can do what I do, and for that I am humbled.

Quote of the day:

We remain a young nation, but in the words of Scripture, the time has come to set aside childish things. The time has come to reaffirm our enduring spirit; to choose our better history; to carry forward that precious gift, that noble idea, passed on from generation to generation: the God-given promise that all are equal, all are free, and all deserve a chance to pursue their full measure of happiness. In reaffirming the greatness of our nation, we understand that greatness is never a given. It must be earned. Our journey has never been one of short-cuts or settling for less. It has not been the path for the faint-hearted, for those who prefer leisure over work, or seek only the pleasures of riches and fame. Rather, it has been the risk-takers, the doers, the makers of things,” some celebrated but more often men and women obscure in their labor, who have carried us up the long, rugged path towards prosperity and freedom.
President Barack Obama


Tuesday, January 6, 2009, posted by @ 10:17 PM
Welcome
I've closed down my original site which is why you may find yourself redirected here. Apologies for the inconvenience, but if you've not already done so, you'll have to register again.

Much, but not all, of the original content has been moved over, now accessible in a new, improved, and hopefully more approachable fashion.

Quote of the day:

When something is 'new and improved'. Which is it? If it's new, then there has never been anything before it. If it's an improvement, then there must have been something before it, couldn't be new.
Anonymous


Thursday, January 1, 2009, posted by @ 2:08 AM
Happy New Year
Best wishes for a prosperous, productive, creative, enchanting, and sacred New Year.

Quote of the day:

Trying to follow in the footsteps of the masters, but it's a lot harder than it looks because even though they had the same size feet as us, they weren't looking down the whole time while they walked to make sure they were doing it right.
Brian Andreas

If there is any secret to this life I live, this is it: the sound of what cannot be seen sings within everything that can. And there is nothing more to it than that.
Brian Andreas


Saturday, December 27, 2008, posted by @ 2:36 PM
Joy and Beauty
IBM Research has posted an older podcast of mine, on the joy and beauty found in software.

Quote of the day:

Most computer technologists don't like to discuss it, but the importance of beauty is a consistent (if sometimes inconspicuous) thread in the software literature. Beauty is more important in computing than anywhere else in technology...Beauty is important in engineering terms because software is so complicated...Beauty is our most reliable guide to achieving software's ultimate goal: to break free of the computer, to break free conceptually. Software is stuff unlike any other...Software's goal is to escape this gravity field, and every key step in software history has been a step away from the computer, toward forgetting about the machine and its physical structure and limitations - forgetting that it can hold only so many bytes, that its memory is made of fixed size cells, that you refer to each cell by a numerical address. Software needn't accept those rules and limitations. But as we throw off the limits, what guides us? How do we know where to head? Beauty is the best guide we have.
David Gelernter from Machine Beauty: Elegance and the Heart of Computing


Monday, December 15, 2008, posted by @ 3:58 PM
Microsoft Application Architecture Guide
Microsoft's Patterns and Practices group has just released their Application Architecture Guide 2.0

I find this work to be very interesting (and useful). Architecture is all about making significant design decisions, and this guide focuses on a number of such decision points, including caching, communication, concurrency and transactions, configuration management, coupling and cohesion, data access, exception management, layering, logging and instrumentation, state management, structure, validation, and workflow (collectively, Microsoft calls these "architectural frames"). Full of best practices and patterns, I particularly liked the enumeration of architectural styles the authors have collected: client-server, component-based, layered, message-bus, model-view-controller, n-tier, object-oriented, and service-oriented. Congruent with these styles is their concept of application archetypes, which include mobile, rich client, rich internet, services, and web. Combine the these styles and archetypes, and you have an interesting language for describing a large class of applications. While I don't necessarily agree that these styles and archetypes are orthogonal (nor are the lists complete) for the general domain of software architecture, for Microsoft's purposes, these styles offer an excellent operating model into which one can apply their patterns and practices.

Quote of the day:

We don't have a monopoly. We have market share. There's a difference.
Steve Balmer


Monday, December 15, 2008, posted by @ 3:08 PM
These Curious Economic Times
These are curious times indeed. The bad news is that this current economic malaise is global, pervasive, systemic; the good news is that the software industry, thus far, has proven to be fairly resilient: we require few natural resources (our materials are largely intellectual in nature) and the demand remains high (the world runs on software, as I've often quoted Bjarne).

In that spirit, then, here are some economic notes relative to our industry.

Open source software is essentially free to use, but what is its cost to create? A report by the Linux Foundation places the development cost of a Linux distribution is $1.2 billion.

Wall Street is a very different place today than it was a year ago. Their financial assets notwithstanding, there's clear material value in the data centers of companies such as Bear Stearns and Lehman Brothers, the latter having its headquarters and data centers valued at $1.5 billion.

Still, as Amit Basu and Chip Jarnagin pointed out in Wall Street Journal, "top executives at most companies fail to recognize the value of IT." Too often, IT departments are views as cost sinks, and are rarely appreciated for the value they bring, the competitive advantage they offer, and the opportunity for innovation at the business level.

Quote of the day:

It's a recession when your neighbor loses his job; it's a depression when you lose yours.
Harry Truman


Monday, December 15, 2008, posted by @ 8:12 AM
The Ethics of Autonomous Robots in War
Following up from my previous post on the silent war, I'd like to point you to a report by Ronald Arkin, titled "Goverrning Lethal Behavior: Embedding Ethics in a Hybrid Deliberative/Reactive Robot Architecture".

Quote of the day:

Pawn shop clerk: You can't do that!.
Terminator: Wrong. [shoots the clerk].
Terminator


Tuesday, December 9, 2008, posted by @ 12:09 AM
The Silent War
War takes many forms. It may be all-encompassing as in the two world wars of the last millennium; it may be regional as in the Iraq/Iran war during the 80's; it may be tribal/social/religious/cultural, as in the actions in Darfur. No matter its form nor its causes, war seeks the dominance of one party over another through violent means.

The history of warfare demonstrates the creative ways we have developed to destroy one another. Our ability to unleash physical devastation has been both pushed and pulled by technology, beginning with blunt instruments, sharp edges, and fire to the current state of subnuclear, nuclear, and biological means. The theater in which we throw literal and figurative rocks at one another has, traditionally, been in the realm of atoms (although psychological warfare has its place as well). Given the apparently innate human drive to innovate, it's no surprise that the realm of bits has emerged as yet a new theater of war. Al-Qaeda has successful used the Web as a vehicle for communication and intimidation. A number of other non-state actors, typically organized crime or militant groups, have engaged in cyberwar; Russia and Georgia clashed via the Internet; industrial espionage directed at the state level appears to be a clear and present reality.

Cyberwar is not a new concept; it has been studied by military strategists for some time, and it has been a subject of interest to Homeland Security. In an on-again-off-again fashion, the US Air Force has established a Cyber Command (from the outside, it's been interesting following the rise then the fall then the rise of this command; it would appear that there was serious jockeying for control among the services for this mission). Wargaming involving cyberwar is a common stock in trade in that world.

Attacks via the Internet appear to be on the rise for both the traditional theater of war as well as the less traditional. This is the silent war, the war that rages beneath the surface.

In the meantime, technology continues to push what we can do in war. The Army's Future Combat System is nothing less than a fundamental transformation of the Army's operational doctrine. The FCS is not without cost or criticism, but nonetheless, it continues to impact the nature of war, down to the individual warfighter. Not content with flesh and blood warfighters, semi-autonomous robots are already in operational use, and exploration continues with greater degrees of autonomity. This leads to yet another class of ethical and moral issues: a robot can't rape - an all too common instrument of war - but neither can it make a moral decision except insofar as it has been so programmed.

Not wanting to leave this post on a melancholy note, it is worth noting the value of technology in the conduct of war. Nobel laurate Jean-Marie Gustave Le Clezio recently posited that the Internet might have stopped Hitler. At the Fortune BrainstormTech earlier this year, in a forum on peace, I observed that technology can not only be used to encourage peace, but also to increase the cost of war, thereby reducing its economic drive; this is the nature of the transparency of of which Le Clezio speaks.

Quote of the day:

A strange game. The only winning move is not to play. How about a nice game of chess?
Joahua from WarGames


Monday, December 8, 2008, posted by @ 7:47 AM
People
While on blogging hiatus, I'd continued accumulating piles of links, which over the past few days I've assembled in some semblance of order. Here's the start of my core dump.

One of the things I enjoy most about my archeological digs is the uncovering the human story behind the code. It's not that I imagine we'll see the geek equivalent of TMZ (well, there is always Valleywag), but at least there's value in naming and making visible the personalities behind the code that has changed the world. I've run across a commentary on the digerati as well as a study of "famous programmers. Do note in this last report how few women are counted among this elite; the Rebooting Computing summit being held early next year will, among other things, attend to this disheartening statistic.

Speaking of heros, Don Knuth is one of mine, and you'll find a relatively recent interview of him here

Quote of the day:

People, people who need people are the luckiest people in the world.
Barbara Streisand


Friday, December 5, 2008, posted by @ 4:42 PM
Patterns
For those of you have have registered for the new Handbook site, I've finished all the pattern pages. Celso is busily tagging all the patterns according to discipline, domain, technology, type, and view (in addition, he's also expecting to enter almost 100 pattern languages). I trust that you'll find this catalog of patterns much more easy to navigate.

Quote of the day:

Life is a process of working out what's not working for you and disentangling yourself from it and trying then not walk into the same thing again. Watching your patterns and correcting them if you can.
Siobhan Fahey


Tuesday, December 2, 2008, posted by @ 10:13 AM
Welcome
I really need to fire my sysadmin (except, as you likely already know, that person is me).

My original Handbook site died unceremoniously about a week ago, while I was traveling. My house sitter was unable to resuscitate the beast, despite my long-distance guidance. Along with the site went my personal email and all the other services associated therein. Upon returning to Colorado, I broke open the case, and sure enough, my power supply had died. The local Apple store could only offer their sympathies (and order a new part for me, which would be days in coming, giving the age of my machine). So, I did a brain transplant on an older dual processor G5 tower, and so my server is back up - but I then made the command decision to retire the old site and direct folks here. The welcome mat is out, you can register (people who have stumbled onto the site have been doing so that past month anyway), but all the old content is not yet here. The blog section is new and improved, the references have been refreshed, and while Celso has moved over all the old patterns content, I have a little programming to do to make it visible. In the meantime, I've done more digs, and - and the urging of many - will finally push some more public content out in the process. Thank you thank you thank you for your patience.

Quote of the day:

There is no reason why anyone would want a computer in their home.
Ken Olson


Thursday, November 6, 2008, posted by @ 10:05 AM
CTO of the USA
A report is circulating today that Barak Obama's transition team is on the lookout for a CTO for the United States. John Doerr of Kleine-Perkins has recommended Bill Joy.

President-elect Obama is IMHO one of the more tech-savy politicians, and I see that as a good sign for our industry and the country. His position on a variety of technology issues may be found here.


The whole point of science is to question and investigate and test. If scientists close ranks when they think that they have enough evidence and that they will have more influence if they claim consensus, they have moved from science to politics. Yet if we see that scientists don't maintain scientific values, the basis for their influence in politics is, ironically, destroyed. Even if you want to abandon ethics and sell out for what you see as the greater good, it won't even work.
Ann Althouse


Monday, September 8, 2008, posted by @ 3:54 PM
Returning
I'm returning to my blog after an absence of three months. I've been attending to some personal matters which had left me dispirited, but I'm again ready to participate in the dance of life.

I've been traveling a great deal these past months, with almost two-thirds of my time spent on the road. One of the highlights of my wanderings was speaking at Fortune's BrainstormTech. In our panel on The Future of Code I observed that IBM was a company that had gone through a near-death experience yet had come through to the other side wiser and stronger, that Microsoft was a company undergoing a midlife crisis, and that Google was a company in serious need of adult supervision - at which point Vint Cerf piped up from the audience saying "why do you think they hired me?" Another highlight of these past months was my appointment to the board of trustees for the Computer History Museum.

I'm in the process of rebuilding the Handbook site. Basically, I have a scaling problem: I have far more content below the surface and much more to come than I am able to easily manage with my old infrastructure, so I'm rebuilding the site from the ground up. Sometimes, you've just gotta throw one away.

Quote of the day:

Grief: it is a time in our life when the familiar disappears, we are not who we are, and we are not who we are becoming.
Melody Beattie


Thursday, June 12, 2008, posted by @ 8:24 PM
Software And Movie Making, The Sequel
Dave Bernstein emailed me a reminder of an article by Walker Royce published in the September/October 2005 issue of IEEE Software, titled "Successful Software Management Style: Steering and Balance." In this article, Walker points out a number of parallels between software development and movie making. "Software project managers are more likely to succeed if they use techniques that are more like managing a move production than an engineering production." Movies products, Walker notes, are "professionals who regularly create a unique and complex web of intellectual property limited only by vision and creativity." He goes on to say that "a software manager's day-to-day decisions (like those of a movie producer) are dominated by value judgments, cost trade-offs, human factors, macro-economic tends, technology trends, market strengths, and timing."

Quote of the day:

Toto, I have a feeling we're not in Kansas anymore.
Dorothy Gale


Thursday, June 12, 2008, posted by @ 12:53 AM
Software And Movie Making
I'm back from several weeks of travel, including a stint at the IBM Rational Software Developer Conference; you'll find videos of the keynotes and R-Heros episodes on IBM TV.

I was particularly taken by Mr. Shatner's comparison of software development and movie making. He noted that 75% of all software projects at Fortune 500 companies fail, 33% are cancelled, and 66% go over budget by more than 200%. How does he know this (as one heckler from the audience asked him)? Well, we gave him those details :-). He went on to note that 90% of all movies fail, 72% of all movies that are started are cancelled, and every movie except the oddball one goes over budget. Mr. Shatner concluded by noting that software development and movie making are "inextricable bound by failure."

Quote of the day:

There can be no real freedom without the freedom to fail.
Erich Fromm


Sunday, May 18, 2008, posted by @ 10:53 AM
Joy In Software
I've complete a podcast on the topic of finding joy in software development.

Quote of the day:

If you were all alone in the universe with no one to talk to, no one with which to share the beauty of the stars, to laugh with, to touch, what would be your purpose in life? It is other life, it is love, which gives your life meaning. This is harmony. We must discover the joy of each other, the joy of challenge, the joy of growth.
Mitsugi Saotome


Friday, May 2, 2008, posted by @ 7:33 PM
Software Archeology
The moment you write a line of code, it becomes legacy. If the cumulative mass of that legacy is small, then there is correspondingly little inertia; if the cumulative mass is large, then there is considerable resistance to change. Refactoring becomes more and more critical as mass increases, because it drives a software-intensive system to intentional simplicity, thus creating a more frictionless surface.

I've long spoken of the emerging role of software archeology. Jason Smith, at the IBM Watson laboratories, sent me his business card and his is the first I've encountered that sports the title "software archeologist." Speaking of archeology, Gail Harris, conference chair for OOPSLA 2008, wrote me to report that my keynote at OOPSLA 2005 inspired her to invite the renowned Egyptologist Mark Lehner to speak about a very different kind of archeology.

Quote of the day:

Archaeology is the search for fact. Not truth. If it's truth you're interested in, Doctor Tyree's Philosophy class is right down the hall. So forget any ideas you've had about lost cities, exotic travel, and digging up the world. We do not follow maps to buried treasure and "X" never, ever, marks the spot. Seventy percent of all archeology is done in the library. Research. Reading.
Indiana Jones


Friday, May 2, 2008, posted by @ 8:16 AM
Origins Of The ARPANET
A recent conversation I had with a colleague reminded me of the origins of the ARPANET; I had an email address there way back in 1979 when I was a professor at USAFA.

The root of the first link above is interesting unto itself as a compendium of first things and last things.

Quote of the day:

Do first things first, and second things not at all.
Peter Drucker


Wednesday, April 30, 2008, posted by @ 9:56 AM
RSDC YouTube Videos
Rational's events team has had a creativity explosion resulting in this year's RSDC having a playful yet very compelling theme on software development as a team sport. Teasers for the R-Heroes theme may be found here on YouTube. Be sure to watch the last few seconds of the second trailer. Oh, and by the way, William Shatner will be one of our keynote speakers; you may know him from Boston Legal although if memory serves me right, he had something to do with a science fiction series back in the 60s. :-)

Quote of the day:

A good life is one that is artistically made.
William Shatner


Friday, April 25, 2008, posted by @ 9:10 AM
More On Living A Life Of Ands
Last week I addressed the Hogan Entrepreneurial Leadership Program at Gonzaga University, talking about living a life of ands. You'll find my presentation in the artifacts.

Quote of the day:

The good life is one where you develop your strength, realize your potential, and become what it is in your nature to become.
Aristotle


Thursday, April 10, 2008, posted by @ 9:29 AM
Rational Machines++++
A little more history for the books; I'm enjoying capturing these memories of Rational, not that I'm obsessed with the past, but simply because I value keeping the human stories alive, for in the end, that's all that really matters.

Davyd Norris from Rational's offices in Australia wrote to report that a few years ago, they had received a request from Malaysia for R1000 spare parts. Greg Bek and Stu Garrow recalled that our Adelaide office had kept a number of old R1000s (I remember autographing one of those machines on a trip long ago), machines that were then stored away and largely forgotten. As it turns out, the wheels of bureaucracy spun on and someone somewhere was still paying for that storage unit. The team tracked down the storage company, located the unit, cut open the lock, and discovered a stash of very well-preserved machines. Sadly, sometime after the IBM acquisition and due diligence was done on all of Rational's assets, a team came in and crushed, melted, recycled, and essentially discarded those machines. Alas, such is the fate of all things; dust to dust, ashes to ashes, transistors to silicon.

Stu and Greg established a company serving as a Rational business partner, and apparently rescued a complete working R1000 400 series, which is now sitting in Greg's garage. As Davyd reported, the list price back then was about one million US, so if any of you are hankering for an Ada machine, there you go.

Joe Marasco and Dave Bernstein continue their dialog with me, and recently wrote with some clarifications and additions. Dave noted that the compiler used for Rational's first bootstrapping work was the ADAS compiler (addressing a sequential subset of Ada; back then, talk of Ada subsets was heresy) from David Luckam's group at Stanford, a group that included not only Howard Larsen and Dave Stevenson (whom I'd mentioned in a previous blog) but also Wolf Pollak. Dave went on to clarify that the model 100 R1000 used a PDP 11/24 as the I/O processor and that the model 200 used a Motorola 68000 microprocessor that provided a DEC Unibus, with the hardware and software work led by Wayne Meretsky.

Continuing with Rose's history, Dave observed that it took about five years for Rose to achieve critical mass. Rose 1.0 was a failure for a number of reasons and was painfully withdrawn from the market (I still have an original shrink-wrapped box 'o software). This was Rational's first non-Ada project, and among other things we had made an architectural decision to use an early OODBMS that in the end proved to be a profoundly bad idea. Jon Hopkin's company, Palladio, provided us with a PC-based Booch and OMT method tool. This acquisition was initially precarious yet was brought back from near-death by Dave and Nick Berens. Dave took over the Rose effort in 1994 and in 1995 development of Rose 2.0 began, with Loren Archer as marketing director and Greg Myers as the Rose Business Unit manager. Rich Reitman (who is now at Adobe) developed a version control strategy for Rose, a decision that helped differentiate Rose in the market and greatly contributed to our development process. Simultaneously, Joe took on the Microsoft/RBU coordination, wherein we bought Visual Test from Microsoft and brought them on as a sponsor of the UML, a partnership that gave the UML considerable momentum. Dave Stevenson, Mats Goethe, Jack Tilford, Tom Wilcox, Howard Larsen, Jim Archer, and Adam Frankl were the members of this team, whose efforts led to the Rational/Microsoft announcement on October 5th, 1996 (at OOPSLA, if I'm not mistaken) of UML tooling within Visual Studio. In the end, the work that the Three Amigos (Jim Rumbaugh, Ivar Jacobson, and me) did culminated in Rational forming an amazing constellation of support (from Microsoft, IBM, HP, and Oracle....who would have ever thought that these companies could come together in agreement?) that pushed the UML and modeling in general over the edge. With Rational at the center and Rose good enough, Rose revenues crossed an important threshold that by 1997 had contributed to a dramatic growth in Rational's valuation such that we we able to acquire a number of other companies, that in turn leading to the Rational Unified Process and the Rational Suites. Throughout all this, revenue from Apex provided the bridge that gave Rose time to find its way; without Apex, Rose could have never flourished.

A bit more on Palladio from Dave. Rose 2.0 was essentially Palladio's Windows-based tool (then called the Object System Designer), converted to use Petal as its intermediate representation (we were all about flower images back then). Dave Stevenson did that work, with Frank Tadman contributing the C++ forward engineering bits and Tom Wilcox doing the C++ reverse engineering bits, leading to what we called roundtrip engineering (adapted from Mike Druke's phrase, roundtrip gestalt problem solving). Our nascent field teams (with Alex Baran, Tom Schultz, and Terry Quatrani aka TQ aka Mom) found that the ability to harvest models from as-built systems was the feature that really pushed Rose 2.0 over the edge of value and acceptance.

Quote of the day:

There are only two or three human stories, and they go on repeating themselves as fiercely as if they had never happened before.
Willa Cather


Thursday, March 20, 2008, posted by @ 10:07 AM
Rational Machines++
My previous blog entries regarding Rational's past continue to bring responses from ex-Rationalites.

Tom Johnson - who reports that he still "dabbles" with Apex - wrote to remind me of Ramachandran Krishnaswamy and Dan Ehrenfried.

David wrote to fill in some details of Rational's earliest history. In 1979, David had been funded by DARPA to explore techniques for the compilation of Ada tasking. Dave Stevenson and Howard Larsen were then grad students working with David to build the Ada-M compiler, which was written in Lisp. Mike and Paul had been developing their idea of an Ada machine and so looked to the Ada-M effort to bootstrap Rational's first validated compiler. David reminisced about a meeting in his dining room in December 1980 which brought together the gang with some venture capitalists. David is a professor emeritus at Stanford and is currently working on R&D in event processing.

Joe Marasco sent me a lengthy missive detailing the R1000 family tree, with Dave Lofgren and Jim Archer adding some additional bits. Rational's machine evolved through four series of different models, each representing some significant packaging or architectural change. We indeed shipped our first machine (which was named simply R1000, with the series 100 moniker added later) to Rolm on December 31st, 1984. Rational ended hardware production in 1993, shipping its last machine to the Danish Navy. There are still several R1000s under support and maintenance contracts; Jim Archer continues to support the software side of Rational's earliest products and Dave Lofgren handles the hardware end. Joe estimates that a total of approximately 300 machines were shipped over the R1000's lifetime. As Joe further reported:

The "original" R1000 was subsequently labeled the "Series 100" due to extensions of the product line. The Series 100 was large enough to require elevator disassembly at certain customers, and the joke at the time was that it had been built that way because it had to be shipped with a tech rep, and, after all, the tech rep had to live somewhere.

The "Series 200" was led by marketing manager Yosi Amram in 1986, and was launched in the fall of that year at Ada Expo. It came in three models: a model 10, model 20, and model 40. The low-end model 10 was never purchased. The model 40 was two model 20's literally put into one larger cabinet. Each half of a 40 had its own control terminal and its own peripherals; as I recall, it was challenging to get them to share a printer. The first Series 200s were shipped to Philips AB at the very end of 1986. The Series 200, especially the model 40, was the "workhorse" of the product line for several years (1987 - 1989), with many of them at sites such as Philips, CSC, Rockwell, and others. Customers who bought them in substantial quantities began to understand the difficulties of doing large-scale development on multiple R1000's. The original R1000 employed a PDP-11/24 as an I/O processor, which enable the use of off-the-shelf disk, tape, and communications controllers In the series 200, this was replaced by a Motorola 68K microprocessor that generated the DEC Unibus so we could continue to use those controllers. Wayne Meretsky did both the hardware and software for this revamped I/O system.

In the fall of 1989 yours truly fielded the Series 300, which was basically a "skin job." It used the same boards as the 200, but Mr. Druke and his hardy band of hardware engineers weaseled the form factor down somewhat further. The idea was to get the price down as much as possible without doing any major engineering, although disk and tape drive progress allowed us to continue to reduce the size of the package. The 300 had the ability to increase the main memory up to 64 Meg from 32; doubling the memory had a big effect on performance. The 300 product line also included a coprocessor variant, which meant you could use the processor and memory in conjunction with a disk farm from Sun. In an unexpected turn of events, the pesky salespeople continued to sell the more expensive "standard" R1000 configuration to the detriment of the coprocessors. I believe the leader in this regard was Tom "Too Tall" Smith, who sold a raft of full-up Series 300 "model 40 equivalents" to Lockheed for Space Station Freedom in 1990.

The immediate reaction to fielding the 300 was to get to work on the 400. Quickly abandoning the coprocessor concept, the 400 took the next logical step of reducing the package size still further by incessant shrinking of the drives and a redo, in under a year, of the processor and memory boards, as well as redesigning the I/O system yet again. The basic architecture of the processor and memory boards was unchanged, but the critical "zero insertion force" edge connectors got revamped so the boards could be made smaller. This feat had previously been postulated as impossible, but when faced with imminent extinction, Druke's hardware boys somehow managed to make it happen. The Series 400 came out in the fall of 1990, and was as small as the R1000 ever got. We sold 400's from late 1990 through 1993, when we finally ceased producing new hardware.

Cross-correlation of these dates would indicate that we commenced the Apex development project AFTER we fielded the series 400. I believe that during the latter part of 1990 and into early 1991, the hardware people were still working on a "next generation" R1000 that would completely re-architect the basic boards. But that effort got killed at the end of 1990 in the famous decision to abandon the hardware business. Curiously, it was about nine months after that that the Apex team was formally constituted and launched. During the two-year period it took to build Apex, most of the hardware people either left, worked mostly in support, or transitioned to a number of "Delta" improvement projects. Delta was the R1000 OS of the day, and the "inside joke" was that everything wrong with it would be "fixed" in Epsilon. Of course, Epsilon never happened; when the R1000 was replaced by Apex, the operating system became one of the standard vendor's version of Unix.

Joe went on to lead the Apex team, which was released in September 1993. Reporting on Rational's revenue engine during that era, Joe noted that:

By the way, circa 1995, when I was managing the combined Apex - Verdix programming tools team, the license revenue split between Ada/C++ programming environments and Rose was almost exactly $45M Ada (C++ was minuscule) and $5M Rose. That is, two years after Apex's launch, it still contributed 90% of the license revenue of the company. It took Rose several years (after 1995) to catch up and surpass the Ada revenues; Apex and Ada stabilized at roughly $50M and then slowly and steadily declined, whereas Rose just continued to grow. And of course post-1996 we started to acquire other companies, which changed the ball game completely. But we had organic growth through the mid-nineties, and much as the R1000 sustained us until Apex came along, Apex was the principal revenue stream during the several years it took for the Rose revenue stream to build and mature. Had Rose been fielded as the sole product of a start-up company, it would have never survived. Although Rational got on the commercial map because of Rose, it took about five years of subsidy from the rest of the business to find its legs; ironically, it was (by then) Rational's financial strength that allowed Rose to eventually out-market its competitors.

Quoteof the day:

History never looks like history when you are living through it.
JohnGardner


Tuesday, March 18, 2008, posted by @ 7:43 AM
Living A Life Of Ands
In any new social situation, wherein people are just getting to know one another, inevitably someone will ask of the other "what do you do?" Depending on the circumstances, I will reply with something as simple as "I'm into computers" or "I do software"; if I want to be a bit more provocative, I'll say that I'm a free radical; if i need to sound more formal, I will tell people that I'm an IBM Fellow; if I want to sound mysterious, I'll say that I'm an author. All of these things are true, yet none of them are sufficient.

I've always found this line of questioning so predictable yet so superficial. I am not defined by what I do, nor do I do just one thing. At the moment, I'm a chief scientist and a Fellow and a software architect and a project manager and a programmer and a researcher. I'm also a mentor, lecturer, consultant, software archeologist, theorist, methodologist, developer, pragmatist, pioneer, mediator, historian and visionary. In my working career I've been a mower of lawns, a scooper of ice cream, and a singer of songs. By act of Congress, I was once even an officer and a gentleman. I'm a good friend and confidant, a godfather, and a loving husband. I listen well and play well with others. More abstractly, I'm a child at heart, a warrior, a servant, a leader, a dreamer, a lover, a believer, a philosopher, and most of all an awe-struck seeker.

In short, I believe in living a life of "ands," a life that is defined not by what I do at the moment but rather one that is defined by living fully in the moment. I will be the first to admit that I'm most imperfect when it comes to being fully present in every moment or living fully in integrity with my values, but such are the consequence of being fully human.

It's time to add another "and" to my list of "things that I do."

I've been a part of Rational since its foundation some 26 years ago, but now it's time for me to move on. However, I'm not going far, for I'll be joining the Software Technology Department at the IBM Thomas J. Watson Research Center as Chief Scientist for Software Engineering. There I will continue my work on the Handbook of Software Architecture and will mentor and lead various software engineering projects that are beyond the constraints of immediate product horizons. I will continue to engage with real customers working on very real problems; I will also deepen my relationships with academia and other research organizations around the world. Much of my professional career has been dedicated to improving the art and the science of software development, and that won't change at all, although I hope that my reach will be a bit further.

May each of you be blessed with living a life of "ands."

Quote of the day:

Moving on is a simple thing, what it leaves behind is hard.
Dave Mustaine


Thursday, March 13, 2008, posted by @ 8:41 PM
And One More
The venerable Joe Marasco reminded me of another ex-Rationalite, the late Mark Sadler. Mark was a dear, dear friend, and as Rational was expanding, he was the point man for our international operations. I recall several wonderful trips with mark to Japan. Mark, you are missed...

Quote of the day:

The fear of death follows from the fear of life. A man who lives fully is prepared to die at any time.
Mark Twain


Monday, March 10, 2008, posted by @ 8:45 PM
Rational Machines
A few days ago, on the fifth anniversary of Rational's acquisition by IBM, I blogged about Rational's history. Since then, I've received numerous emails from ex-Rationalites offering their memories. I was especially delighted to hear from John Haynes, who reminded me of Rational's manufacturing team. John and I actually shared a living space for a short while. When Rational began and after Mike, Paul, and I had finished our commitments to the Air Force, I continued to live in Colorado but then commuted to Silicon Valley. For about a year, every Monday morning I'd catch a flight from Denver to San Jose, work at Rational from early to late, then return to Denver on Friday. I had an apartment in Mountain View where I'd crash after work, and it was there that John would occasionally stay. As John reminded me, Rational -being at the time a hardware company, not just a software company - had a killer manufacturing team that included Ray Myers (VP of Manufacturing), John (Materials Manager), Bev Hartnell (Senior Buyer), Bob Walton (Manufacturing Engineer), Walt Rider (Manufacturing Engineer), and Al Prez (Chief Mechanical Engineer). Dennis Paddock led our customer support team. Rational shipped its first machine (to Rolm, as I recall) on the last day of 1984 and its last R1000 (to IBM, Lockheed, or Rockwell...neither John nor I remembered) in 1988. Rumor has it that there is still at least one intact machine out there (but obviously not being used for production work).

Quote of the day:

Some day, on the corporate balance sheet, there will be an entry which reads, 'Information'; for in most cases, the information is more valuable than the hardware which processes it.
Grace Murry Hopper


Wednesday, February 20, 2008, posted by @ 8:59 AM
Rational's Anniversary
Today is the 5th anniversary of IBM's acquisition of Rational Software. Oh, what a marvelous ride it's been since we began our journey in 1981.

This is an updated version of my original post; thanks go to David Bernstein, Iain Gavin, and Eric Schurr for their feedback.

By the way, I know I've left out names in the following missive: the old guard included Dave Stevenson, Rich Reitman, Joe Marasco, Jack Tilford, Jim Archer, Danny Shifman, Bob Bond, Nick Berens, Kevin Haar, Kevin Kernan, Adam Frankl, Walker Royce, Doug Earl, Jon Hopkins, Carmen Facciobene, Sunny Gupta, John Lambert, Jerry Rudisin, Hajime Saito, Hugh Scandrett, Tom Smith, Gary Swart, Howard Larsen, Rob Dickerson, Adam Frankl, Pamela Roussos, Phil Levy, Robert Gersten, Buton Goldfield, Tom Schultz, John Lovitt, Dave Bernstein, Lisa Browsword, Lucian Beebe, TQ, Eric Schurr, Philippe Kruchten, Dean Leffingwell, Brett Bachman, Iain Gavin, Walker Royce, Mark Sadler, and many, many others. Rational started with two people and before the acquisition by IBM grew to almost 4,000 people world wide, with sales starting to edge close to $1 billion per year. It is to these colleagues that I dedicate the following, for without them, Rational would have been a far lesser company.

You'll find a brief history of Rational on Wikipedia; I take full responsibility for the memories that follow. I do hope I got the basics of this history right, but if I didn't or if I left out mention of some important event or person, please do email me.

Mike Devlin, Paul Levy, and I graduated from the US Air Force Academy in 1977. Paul was one of my roommates while we were both in 21st squadron, and Mike and I were both computer science majors. After graduation, I was assigned to the Space and Missile Test Center at Vandenberg Air Force Base and Mike and Paul were assigned to the Satellite Control Facility in Sunnyvale. Along the way, I picked up my masters at the University of California at Santa Barbara, and Mike and Paul attended Stanford. As my first assignment was drawing to a close and I was looking around for my next position, i had a conversation with Larry Druffel, a former instructor of both Mike and I at USAFA, who spoke of the DoD's early efforts to define a common high order language; Bill Whitaker had started the High Order Language Working Group, a group that eventually transmogrified into the Ada Joint Program Office (AJPO), first headed by Larry. Larry noted that one of the first projects that would attempt to use Ada was at the Satellite Control Facility, and that I should get in touch with Mike and also consider a role I might play in the emerging new language. I called Mike, made my way up to Sunnyvale, and found out more about the project. Along the way, Mike sat me down in his living room and noted that "Paul and I have this idea for a new company for when our commitments are up." I then moved back to USAFA as an instructor, where along with Dick Bolz we developed a course about applying modern software engineering techniques to Ada, a course that we taught all over the United States (including to the contractor for the Sunnyvale system). Meanwhile, in their spare time, Mike and Paul continued their efforts to form a company (Rational Machines), to build a machine that was optimized to run Ada. After securing some venture capital, they were able to hire a number of developers, primarily from Stanford, to begin development.

I recall riding in Mike's Jeep, going with Paul to pick up some of Rational's first blank checks, taking them to Frys and buying some memory chips, after which we celebrated with a gourmet meal at Burger King.

By then, Rational Machines had a small office and had obtained two PDP 20s (named Door and Window) running the ADAS compiler, written in Lisp and developed at Stanford. These machines were replaced by a 2060 to bootstrap development of the Rational Environment development, only later to be replaced by Data General minicomputers for the next increment of bootstrapping. Before those machines, we were using Apple IIs - and I still have mine. Back then, ordering a water cooler was a memorable event. Jump forward to the summer of 1982, and Mike, Paul, and I had completed our commitment. Just to be clear, I'm not a founder: I didn't mortgage my cat to begin the company, but Mike and Paul put their all into the company. I've just been along for the ride since the beginning.

I choose to live in Colorado, and in 1983 finished my first book, Software Engineering with Ada. Around that time, as development of Rational's first product (the R1000) proceeded, I would fly from Denver to San Jose on Monday morning, work pretty much all day and night, then fly home on Friday. For an entire year, I had a car at an airport parking lot somewhere in the world. Finally, in 1985, we release the Rational Environment running on a custom machine we ourselves built, the R1000. The Rational Environment brought to the commercial market tools that today we take for granted: a syntax directed editor, integrated debuggers, build and release tools, all in a windowing environment designed for teams. We built the first commercially validated Ada compiler, which was released through Rolm Corporation. As Dave reported to me, we choose to validate our compiler in order to "disprove the theory that Ada was so complicated that no practical compiler could be built and to prod DEC into productizing their VAX compiler." Around that time, there were serious concerns in the industry that Ada was impractical to implement, and so, as Dave further notes, "we did it to keep Ada from being written off." I didn't do any of the heavy lifting of software development, but I did write the I/O package for the compiler and contributed to the testing effort. Traveling so much, I had my first laptop around 1983, a Grid.

The R1000 was a horizontally microprogrammed machine with a 67 bit single level virtual address space. This machine was in essence a dual stack-based processor, with computation done on one path and type checking on another. The R1000 was effectively a DIANA machine (DIANA being the Descriptive Intermediate Attributed Notation for Ada, a formal intermediate representation for the language). We didn't store source code: source code was simply a pretty-printing of the DIANA tree. Using DIANA with hardware acceleration made it possible to do incremental compilation (unheard of at the time, for strongly typed languages), easy refactoring (though that word had not yet been invented), and incredibly fast integration (essential for the large systems that we being built with Ada).

Given that embedded systems were important in the Ada market , we built a sophisticated host/target compilation system (RCF, the Remove Compilation Facility) which used compilers on the target system. Much later, we partnered with Tartan Laboratories to build cross platform code generators and debuggers. If memory serves me correctly, we sold our first machine - at $1 million per - to Lockheed Corporation. IBM Federal Systems was also a large early customer: IBM really did believe in us from the very beginning. We grew our field organization - I was tech rep #1 - and stated the model of having each team lead by one account representative together with a handful of really technical software engineers. Using the Rational Environment - and Ada - effectively was not just a matter of banging out code, but really did require the proper use of abstraction and information hiding, concepts that we not in the mainstream. Egads, waterfall processes dominated as well (and were even institutionalized in government regulations) and we have to educate our customers about incremental and iterative practices. In 1987, I published my second book, Software Components with Ada, which I liked to call Knuth-in-a-box: I'd written a set of Ada components that codified all the classic data structures and algorithms, just as an exercise to show what good abstraction looked like.

Speaking of Rational's tech reps, Iain reminded me of the Sheep, a semi-regularly published newsletter for the field, full of tips, tricks, and irreverent humor. Iain recalled that "folk lore has it that [the tech rep who started the Sheep] had never seen a sheep in his life and was taken by this strange woolly creature on on of his field visits to Ferranti in Cwmbran, Wales.By 1990, we had dominated the Ada marketplace and were well-respected for our ability to help customers be successful in developing many complex systems around the world. However, it was also clear that building our own custom hardware didn't make much sense any more. Joe Marasco was then tasked to lead our Apex project, which was a re-engineering of the Rational Environment designed to run on Unix workstations developed by Sun and IBM. Somewhat later, we took that same environment and targeted it to a new language, C++.

And then there was Rose. In 1992, I published my third book, Object-Oriented Design with Applications, which offered a notation and process for building object-oriented software. This work was a continuation of my Ada methodological work, honed from experience with all these large Ada systems. This was a particularly dynamic time in the industry: object-oriented languages abounded, the industry was needing to transition from structured methods to more modern ones, ones that were better suited to the complexity of systems then underway, the Internet was well-entrenched but Tim Berners-Lee World Wide Web was only then starting to gain traction. I was getting bored of Ada, and because of my book found myself being drawn away from Rational's traditional DoD market into the commercial world. About this time, I did a lecture series with Bjarne Stroustrup. I started toying with some ideas of tooling for my method, the first being what I called the Ada Illustrator, an application that walked over an Ada system and drew what today we'd call an implementation diagram. The server was an R1000 - Dave wrote the code that walked over an applications Diana tree and then passed the structure over a serial link - and the client was a Macintosh (I'd used Apple's MPW as my development environment). That prototype was sufficiently interesting such that I built another prototype, this time in Smalltalk on a laptop. Oh, that reminds me, I gave a demo of the prototype to some IBM executives at the time, literally programming minutes before they arrived. When I started the demo, their first question was "why are you not using an IBM laptop?" I still get asked that question, for I use a Mac PowerBook. My usual response is that "I prefer to use a real operating system." Anyway, that prototype led to Rose (Rational Object-Oriented Software Engineering), our first modeling tool, running on Unix. Rose 1.0 had some serious performance problems, plus the market was rapidly shifting to Windows. We acquired Palladio and retooled their work, such that Rose 2.0 was dominant in the market, supporting both Ada and C++ and running on both Windows and Unix platforms.

In 1994, we acquired Verdix, a move that led to our coming out as public company. I remember around that time a bit of a palace coup with Paul. We had met in the a meeting room at the Red Carpet Club at the old Denver airport, where Mike and Paul began talking about their plans to invest more in the embedded market; I recall politely nodding, but then remarking something to the effect that I thought that was a Really Stupid Idea, and that the real growth opportunity was in the commercial sector. By then - much to the chagrin of Kevin Haar who had taken me on a sales call in New York, I'd publically observed that Ada was moribund, and that C++ was going to dominate. Anyway, in that meeting, I suggested we go our separate ways. Mike and Paul talked me off the ledge, and, well, I'm still here.

By 1995, the object-oriented method wars were in full force. We made the strategic move to wage peace by unifying the leading methods. We were already supporting the Booch method, so then we hired Jim Rumbaugh and then one year later, acquired Objectory, Ivar Jacobson's company. Jim, Ivar, and I then worked for another year, culminating in the release of the UML 0.9 spec. The Unified Modeling Language 1.0 specification was submitted to the Object Management Group in January 1997, by the consortium led by Rational but including IBM, DEC, HP i-Logix, IntelliCorp, IBM, MCI, Microsoft, Oracle, and Texas Instruments. To this day I'm utterly amazed at the how we managed to bring together such a diverse group and create such a useful standard. The first really stable version of the UML spec, 1.1, as finally adopted in 1997.

In parallel with the notation and tools work, Philippe Kruchten led a project to deliver the Rational Unified Process.

The presence of Rose changed our position in the market place; among other things, this led to our partnership with Microsoft, which opened our eyes to the PC market. Flush with cash and our growing dominance, Mike and Paul set out on an acquisition strategy to complete their vision of a full-lifecycle set of products. Within a few years, we acquired Requisite, SQA, Performance Awareness, Pure, Atria, and ObjectTime. One other bit of trivia: Reed Hastings, who founded Netflix, had earlier founded Pure (he Rational DNA is strong indeed). In 1999, Rational released Rational Suite, an integrated development for teams. In 2001, Rational formed a new company, Catapulse, with the goal of delivering hosted development services.

Rational's revenue peaked in 2001, flush with cash (over half a billion) and very much a dominant player in the industry. For a number of reasons, Rational's leadership began looking for a buyer, and in 2002, IBM announced its intent to purchase Rational for slightly over $2 billion. The acquisition was consummated exactly five years ago to this day, 20 February 2003.

In those five years as part of the IBM Software Group, Rational has grown stronger. Our business has grown by 40%; we lead the market in application development and project management; our reach is worldwide; our thought leadership continues to drive the industry.

I'm honored to have been and to continue to be a part of Rational.

Quote of the day:

Things ain't what they used to be and probably never was.
Will Rogers


Tuesday, January 29, 2008, posted by @ 4:48 PM
Ok, Yet Another Thing
As you might have noticed, I'm cleaning out my blogpile.

A colleague pointed me to Elance, a site for outsourcing to "freelance programmers, web and logo designers, copywriters, illustrators, and consultants." Craiglist is also a source for computer gigs, of course.

Quote of the day:

The other part of outsourcing is this: it simply says where the work can be done outside better than it can be done inside, we should do it.
Alphonso Jackson


Tuesday, January 29, 2008, posted by @ 2:59 PM
Oh, And Another Thing
Justin Etheredge posted the programmer's dress code here and here. And no, I've not done any commercials for hair care products (although I have done radio voice overs and have been on television).

Quote of the day:

Grey hair is God's graffiti.
Bill Cosby


Tuesday, January 29, 2008, posted by @ 2:35 PM
Catching Up
Yes the Handbook site is still a wee bit unstable. Apologies for the inconvenience, but my sysadmin (me) is still working to attend to these urgent matters while still trying to make time for the important ones.

Tara5 recently interviewed me here. Tara5/Tish runs a most informative/original site covering virtual worlds.

Quote of the day:

Most people are awaiting virtual reality. I'm awaiting virtuous reality.
Eli Khamarov


Saturday, December 22, 2007, posted by @ 9:21 PM
Last Blog Of The Year
As a number of you have reported via email, the Handbook site is still acting funky since its rehosting: login/registration redirects you to the wrong place, some resources are missing, and in general it just behaves tentatively.

Sincerely apologies for the inconvenience: my sysadmin (me) has been thoroughly scolded. His people have reported to my people that he'll have things thriving again after the first of the year.

Quote of the day:

New Year's eve is like every other night; there is no pause in the march of the universe, no breathless moment of silence among created things that the passage of another twelve months may be noted; and yet no man has quite the same thoughts this evening that come with the coming of darkness on other nights.
Hamilton Mabie


Tuesday, November 27, 2007, posted by @ 10:59 AM
The Life Of A Sysadmin
Two weeks ago, on the 12th of November, I began a process that I though was relatively simple: move my network from one block of IP addresses on an old T1 to a different block of addresses on a new T1.

Silly me. Simple indeed.

I won't mention the name of my circuit provider, but let us just say that it took about 10 days for them to make the DNS changes: one day to properly change the forward records (they got only one of them right, seven of them wrong, they fouled up the reverse mappings, and they forgot the MX record for mail forwarding ) and the remaining nine days to fix the mistakes they made. In the midst of all that - since I was dead in the water anyway - I upgraded my server (a Mac server running Mac OS X Server) to Leopard and that required some fiddling, since Apache and Tomcat were new, less forgiving versions. Anyway, late last night, the planets aligned and I'm back on the grid.

Why the heck don't I outsource my hosting? The basic reason is that I never want to get so far away from the underpinnings of this technology that I lose touch with the gnarly bits that contribute to the friction of computing, friction that is part of the daily life of those in the trenches who keep our systems alive. The software stuff that we deal with is complex enough; the hardware stuff that's at the bottom of the stack has its own complexity and every time it makes itself known, I'm humbled that this stuff works at all, and I admire its resilience in the face of such fragility.

So apologies for any inconvenience that my site being down may have caused you.

Quote of the day:

How many sysadmins does it take to change a light bulb? The bulb was working before. What did you do to break it?
Sysadmin Humor


Wednesday, November 14, 2007, posted by @ 8:19 AM
Unbuilding Cities
Unbuilding Cities is a delightful new book by Anique Hommels, in which the author provides a case study for three urban renovation projects. As she observes in the book, "Despite the fact that cities are considered to be dynamic and flexible spaces - never finished but always under construction - it is very difficult to change existing urban structures; they become fixed, obdurate, securely anchored in their own histories as well as in the histories of their surroundings."

Change the word "cities" to "software" and her observation still holds true.

Quote of the day:

So long as a person is capable of self-renewal, they are a living being.
Henri Frederick Amiel


Sunday, November 4, 2007, posted by @ 8:24 AM
Algorithmic Morality
Robert Cringely's latest column makes for some very interesting reading. In it, he scolds companies that confuse "algorithmic efficiency with moral, ethical, or even business correctness" and then goes on to observe that "sometimes good algorithms do bad things." Cringely also observes that "since algorithms can't be held responsible like the person who wrote or authorized the use of the algorithm ought to be" it is offensive for a company to shroud its accountability in the defense that the algorithm made me do it.

Algorithms are morally neutral. How algorithms are created and applied is a very human - and therefore - very moral - issue.

Quote of the day:

The ancient Romans had a tradition: whenever one of their engineers constructed an arch, as the capstone was hoisted into place, the engineer assumed accountability for his work in the most profound way possible: he stood under the arch.
Michael Armstrong


Thursday, October 25, 2007, posted by @ 8:27 PM
Morality Redux
My interview with Charles Cooper continues to have life, and the dialog continues with Joyce Carpenter of Computerworld.

Quote of the day:

Morality is not really the doctrine of how to make ourselves happy but of how we are to be worthy of happiness.
Immanuel Kant


Tuesday, October 23, 2007, posted by @ 1:29 PM
Debating The Morality Behind Software Development
Last week, while in San Francisco, I was interviewed by Charles Cooper regarding morality and software development. We had a wonderfully lively discussion; I so very appreciate Charles' interest in the subject. While some of the comments posted in reaction to the interview accused him of being belligerent, I never saw it that way: this is an important and little-discussed subject, and Charles asked me some good, hard questions. Thank you, Charles.

Not surprisingly, reaction to my interview was polarized; this is an emotional topic. That being said, this reader did grok my point.

Quote of the day:

Reverence for life affords me my fundamental principle of morality, namely that good consists in maintaining, assisting, and enhancing life, and that to destroy, to harm, or to hinder life is evil.
Albert Schweitzer


Sunday, October 7, 2007, posted by @ 3:00 PM
NUMB3RS, Crime, And The UML
Earlier this year, I'd blogged about the February 23, 2007 episode of the CBS series NUMB3RS. In that episode, titled One Hour, Charlie (the genius mathematician) solves a crime using the Unified Modeling Language. You have to watch it to understand how he did so, but suffice it to say that the solution hinges on the use of a state machine.

Out of the blue, I received an email from Darcy Jouan, husband of Christina Davis, a senior vice president at CBS. In a wonderful random act of kindness, Darcy and Christine just sent me a copy of the script, signed by all the cast members. I still have my nanosecond given to me by Grace Murray Hopper, I've even been written in as a character in a murder mystery, but this script is definitely is at the top of my memorabilia. Thank you, Darcy and Christine.

And now, everybody reading this, please direct your television/TIVO/browser to CBS and watch every show for the next 168 hours and support every one of their advertisers.

Please note, however, that my statement above does not necessarily constitute an endorsement of CBS by IBM, but rather is my personal opinion and hence does not reflect that of anyone else, living or dead or yet to be conceived, living in this or any other time-space continuum. :-)

Quote of the day:

Deeds of kindness are equal in weight to all the commandments.
The Talmud


Thursday, September 27, 2007, posted by @ 6:06 AM
Mayo Clinic
I'm back from the Mayo Clinic where I underwent another round of tests: full blood work, an echocardiogram,, and a cranial MRI. The good news is that, a little more than a year after my open heart surgery to repair the aneurysm in my ascending aorta, I have a brain. Oh, and my blood chemistry is still pure as the driven snow, my aortic graft is in fine shape, and my heart is doing well.

While in the area, I had a couple of customer meetings and also gave a talk at the University of Minnesota, which fellow blogger and ubergeek Wade Olson talked about here.

Quote of the day:

I used to be Snow White but then I drifted.
Mae West


Friday, September 21, 2007, posted by @ 5:34 PM
Randy Pausch
As noted in Slashdot, Randy Pausch offers his last lecture. Randy, a professor at CMU is the creator of Alice.

Randy is terminally ill; his lecture is a brilliant and touching presentation.

Quote of the day:

We found that when we targeted Alice as a storytelling vehicle, girls were three times as likely to be engaged and motivated to write computer software, as opposed to just moving 3-D characters around.
Randy Pausch


Thursday, September 20, 2007, posted by @ 3:39 PM
Brian Lyons
I'm late in posting this due to my travel to Europe, but by now many of you have heard of the untimely death of Brian Lyons, CEO and CTO of Number Six. I've posted a tribute to Brian here.

Quote of the day:

The day which we fear as our last is but the birthday of eternity.
Seneca


Wednesday, September 19, 2007, posted by @ 9:38 AM
Fred Brooks
Between the end of August and the middle of November, I'll be home only about 8 days (and thus my blogging will be sporadic). I'm just back from several weeks in Europe, where among other things I keynoted the Rational Software Development Conference for the UK and Brazil (the later of which I presented from London via Second Life). I also conducted a few customer visits as well as continued my Handbook archeological dig of the Jubilee line of the London Underground. The folks with the LU have been most gracious in opening their doors to me, and for this I thank them heartily.

The highlight of my trip was the day i spent with Fred Brooks. Fred is living near Cambridge, on sabbatical from the University of North Carolina at Chapel Hill in order to work on his next book, tentatively titled The Design of Design. I visited Fred on behalf of the Computer History Museum as part of their oral history series. Together with Gardner Hendire as videographer, I've conducted three such histories for the Museum and am planning on doing several more for the software side of things.

Fred is an incredibly engaging human. His technical story has been told many times, but I was delighted to draw from him his personal side: how he got his first Macintosh (directly from Steve Jobs), his witness of the final meeting between Eisenhower and Churchill, his stories of many other computer pioneers (Fred reports that he still has his nanosecond from Grace Murray Hopper), how he became a Christian. Fred's wife, Nancy, was a most gracious host. One of Fred's daughters and her husband were there as well, together with a few of their children who know Fred simply as "grandfather." Fred, by the way, is teaching them Latin.

Quote of the day:

There is no silver bullet.
Fred Brooks


Thursday, August 23, 2007, posted by @ 9:46 PM
It's Alive!
The Handbook site has been down the past few days. I'd installed the latest security patch which sadly broke Tomcat but otherwise left the surrounding elements on my server intact. All my usual tricks failed and even multiple calls to Apple support had them scratching their heads. In the end, I rolled back to an earlier version of Tomcat and lo! life is good once again.

Apologies for the outage. Given that sysadim is just one of many hats I wear and given that I had lots of other hats I had to wear the past few days, the site sat moribund for about 48 hours. That annoyed that $%@#(*# out of me but it is a natural consequence of eating my own dog food: it keeps me humble and it keeps me close to the metal, but I can't always be on top of it.

Quote of the day:

Administration is hours of boredom interrupted by moments of sheer panic.
Freshmeat


Monday, August 20, 2007, posted by @ 12:12 AM
Distributed Work
I'll be in London in a few weeks but need to give a presentation in Brazil at the same time, so I'll be leveraging Second Life and Skype again to be in multiple places at once. Ain't technology great; it's certainly a force multiplier for me.

Quote of the day:

Technology made large populations possible; large populations now make technology indispensable.
Joseph Wood Krutch


Wednesday, August 8, 2007, posted by @ 9:26 AM
In The Studio
Much of my work life seems to follow a pattern of punctuated equilibrium: there are periods of relative calm and stability, but then times of state-changing chaos (although it seems that the periods of relative calm are getting shorter and shorter in time). At this moment, I'm in one such disruptive place, as I'm in the process of pumping out several vcasts and podcasts. I just finished the remote taping of a 45 minute panel for a forthcoming event (then I had to digitize the video and ftp it...do you have any idea how long it takes to ftp a 10 gig file to a slow server?). I also just recorded a teaser for the UK IBM Rational Software Development Conference and before the end of the week I have two more 20 minute videos to record and edit.

I have the production facilities of a small country here :-) and so technology-wise, I'm covered (I primarily used Apple's Final Cut Pro for editing, BTW), so it's largely a matter of the costs of time. I have no roadies, I have no groupies, I have not even an admin assistant, so I try to clump this studio work such that I'm not constantly bringing up then tearing down cameras and lights and such.

Anyway, I'm not kvetching; this really is a lot of fun,

Quote of the day:

All right, Mr. DeMille, I'm ready for my close up.
Gloria Swanson


Tuesday, August 7, 2007, posted by @ 4:16 PM
Time Flies Like An Arrow
"Time flies" like an arrow (those pesky little bugs, unstuck in time, enjoy the company of arrows); time flies (verb, transitive) like (simile) an arrow. Ah, much better. The value of a well-parsed sentence.

How did it get to be August already? I have been heads down in a number of tasks, not the least of which is research for the Handbook and combatting email fatigue. This week, I've been consumed with producing a number of videos for the forthcoming series of IBM Rational Software Development Conferences being held in various places around the world. I'll be live at the event in the UK, to be held on September 11th through 12th at IBM Bedfont Lakes (come join me if you are in the area).

Quote of the day:

Time flies like a arrow. Fruit flies like a banana.
Groucho Marx


Saturday, July 28, 2007, posted by @ 12:45 AM
Busy Busy Busy
A dear colleague, Karen, emailed me recently, expressing concern that I'd not blogged for over a month. Fear not: I'm still not dead yet but rather just very very busy. My travel schedule is back to (actually above) my pre-surgery levels, and as I look out to the rest of the year, I've got one extended international trip and four major domestic trips already on the books, not to mention the other inevitable random events that tend to pop up. I've been slogging away on a variety of internal activities vis a vis collaboration and architecture, I've conducted several more lectures in Second Life, and I've been pumping out a few vcasts and podcasts. This week, I've retreated to my sanctuary and, surrounded by over 40 books on software architecture, have been slogging through the literature.

Quote of the day:

This is the most magnificent, balmy atmosphere in the world - ought to take dead men out of grave.
Mark Twain


Tuesday, June 19, 2007, posted by @ 5:12 PM
My 15 Minutes Of Fame
I'm back from my latest travels. I was unable to attend the 10th IBM Rational Software Development Conference in person, although I was there virtually. Speaking of which, I appeared in an article in the Wall Street Journal (although it's an older pic.; my avatar currently sports a nice crop of flexihair).

Quote of the day:

Information is alienated experience.
Jaron Lanier


Sunday, June 3, 2007, posted by @ 2:08 PM
Five Hundred Twenty-Five Thousand Six Hundred Minutes
Thursday, May 31st, marked the one year anniversary of my open heart surgery at the Mayo clinic. That morning, one year ago, I was being cut open; that evening, one year ago, I was blogging from the ICU. Now here I am, one year later, fully recovered, far away from the danger of dying from this defect, and actually in much better health primarily because my heart is now operating more efficiently since my aortic valve is back to a normal shape.

Thanks again to all my friends and loved ones who supported me during my recovery. The physical recovery was hard but the emotional and spiritual recovery was harder yet. Happily, that is all behind me now. Life is short, and I have many more moments to enjoy before this part of my journey draws to a close.

Quote of the day:

She said that she usually cried at least once each day not because she was sad but because the world was so beautiful and life was so short.
Brian Andreas


Tuesday, May 29, 2007, posted by @ 8:21 PM
Yahoo
Last week, I spent some time with the folks at Yahoo where, among other things, I gave an open lecture to their engineers.

Quote of the day:

When audiences come to see us authors lecture, it is largely in the hope that we'll be funnier to look at than to read.
Sinclair Lewis


Sunday, May 27, 2007, posted by @ 3:35 PM
Power As A Limiting Factor
The interplay of power and heat have long been limiting factors in the design of chips. Tens of millions of transistors slammed together throw off a lot of heat, and too much heat will destroy the circuits themselves. Reducing the voltage that drives a chip helps, but only to a point because at levels that are too low, noise intrudes making it impossible to reliably distinguish 0 and 1 states. Lots of work goes therefore goes into the use of exotic materials and geometries, making chip design far more than just a problem of logical circuit engineering.

The same problems of power and heat appear to be emerging as limiting factors in the design of large scale web-centric systems. Scaling up or scaling out from a logical perspective involves adding more servers, but again only to a point because tens of thousands of servers will eat prodigious amounts of power and in turn cast off considerable heat. Thus, it's no surprise the Google is building many of its new centers near rivers, where there exists the promise of cheap electricity and relatively free cooling. However, the costs of energy are not that elastic: for small systems, one can largely ignore the power bills, but there comes a threshold one crosses where power and heat at the macro level become part of the systems design problem. Adding a few thousand more servers might seem like the right logical thing to do, but it may be physically and/or economically impractical.

Software developers have gotten away with being sloppy because of the abundance and rate of growth of compute cycles. However, the problems of large numbers start to intrude: just as power and heat become factors in the presence of tens of millions of transistors, power and heat become architectural considerations in the presence of teraflops of computation and petraflops of storage.

Quote of the day:

If you can't stand the heat, get out of the kitchen.
Harry Truman


Monday, May 21, 2007, posted by @ 6:41 AM
$1 Million By The End Of Middle School
Slashdot is covering this story at VentureBeat about the CEO of a startup named Elementeo. The CEO, by the way, is just 13 years old, and he's more articulate about his work than many people I know who are multiples of his age. I was particularly taken by his business financial goal of making $1 million by the end of business school.

While life (and business) is far more than making obscene piles of money and while I hope that Mr. Samar takes the time to enjoy being a kid and to grow into a rich and balanced life, it is quite uplifting to see his passion for his work.

Quote of the day - actually, three of them, because there are so many good ones germane to this posting:

In America the young are always ready to give to those who are older than themselves the full benefits of their inexperience.
Oscar Wilde

Work as if you were to live a hundred years, pray as if you were to die tomorrow.
Benjamin Franklin

The pursuit of truth and beauty is a sphere of activity in which we are permitted to remain children all our lives.
Albert Einstein


Friday, May 18, 2007, posted by @ 9:01 AM
OOAD Third Edition
At long last, the third edition of Object-Oriented Analysis and Design with Applications is in print.

Robert Maksimchuk, Michael Engle, Bobbi Young, Jim Conallen, and Kelli Houston deserve all the credit. These folks are the authors of this revision, and I am deeply indebted to them for their dedication and fine work over the life of this project. Thanks also go to my long-suffering editors at Addison-Wesley who have exhibited the patience of Job and the encouragement of a varsity pep squad after a round of triple shot espressos. This third edition brings my original work up to date with UML 2.0, but also provides specific guidance for modeling across the lifecycle, team organization, and the fundamentals of the object model.

Quote of the day:

The research rat of the future allows experimentation without manipulation of the real world. This is the cutting edge of modeling technology.
John Spencer


Friday, May 11, 2007, posted by @ 9:34 AM
Microsoft And Virtual Worlds
Offering a fair and balanced point of view, check out this clip from the Microsoft Visual Studio Team System folks.

Quote of the day:

We're meeting in conference room G, but there's still blood in there from the last meeting.
Overheard In New York


Friday, May 11, 2007, posted by @ 8:19 AM
IBM In Second Life
And you thought IBM had no sense of humor. Check out this video.

Quote of the day:

As Hiro approaches the Street, he sees two young couples, probably using their parents' computers for a double date in the Metaverse, climbing down out of Port Zero, which is the local port of entry and monorail stop. He is not seeing real people, of course. This is all a part of the moving illustration drawn by his computer according to the specifications coming down the fiber-optic cable. The people are pieces of software called avatars.
Neal Stephenson


Thursday, May 10, 2007, posted by @ 9:11 AM
Travels
Alas, I've not made the time to blog for several weeks, as I've been traveling extensively. I just returned from New York City, before that I was in the San Francisco bay area, and in a little over a week I'll be back in the bay. I have more requests to travel than I could possibly accommodate in a lifetime, and so it is a very real challenge for me to balance my schedule. On the average I receive two to three requests to travel every day, and I can only say yes to a very few of them. Travel that advances my work on the Handbook comes highest on the list, customer work is up there too (as long as it's for helping a customer materially, for I'm not nor ever will be a sales guy) , and offers to go to new and interesting places get a slightly higher priority as well. Problem is, that's the nature of most of my requests, and so I have to made hard calls daily. Mind you, I'm not complaining - this really is a blessed problem to have - but I know I have to disappoint many who would like me to drop in, and I simply cannot. Speaking of interesting places, I'm currently working to set a time to interview Fred Brooks on behalf of the Computer History Museum and am also trying to sort out my international travel for the year: the UK, India, and China are vying for my attention right now.

Quote of the day:

Perhaps travel cannot prevent bigotry, but by demonstrating that all peoples cry, laugh, eat, worry, and die, it can introduce the idea that if we try and understand each other, we may even become friends.
Maya Angelou


Monday, April 9, 2007, posted by @ 2:21 PM
Godspeed
Charles Simonyi has just docked at the international space station. Charles, among many other things, is the prime mover of Microsoft Word. I've had the pleasure of meeting with Charles in the context of his work at Intentional.

My graduating class at USAFA produced a number of astronauts, including Tom Jones who conducted a number of spacewalks to assemble the very station where Charles will spend his time.

Quote of the day:

For small creatures such as we the vastness is bearable only through love.
Carl Sagan


Monday, April 2, 2007, posted by @ 7:12 AM
Remembrance Of Things Past
Call me Ishmael.

Sorry, wrong literary allusion. Call me strange, then. I absolutely love to read. For me it's pretty much the most fun I can have with my clothes on. Although I know it annoys my friends, I often toss out some random quote or an obscure phrase in the middle of a conversation. One of the genres I love to read include books of quotations, and recently I've been reading Cohen and Major's History of Quotations, a collection that organizes its contents chronologically. There's one passage that took my breath away because it captures what I'm trying to do with the Handbook.

Quote of the day:

I write in the hope of thereby preserving from decay the remembrance of what has been done.
Herodotus


Friday, March 23, 2007, posted by @ 5:06 PM
Better Than Life
I'm a rabid fan of Red Dwarf. I was first introduced to this cult hit, not by the television series, but by the two books by Grant Naylor, Red Dwarf and its sequel Better Than Life. As Wikipedia explains, "BTL is the name of a virtual reality game engineered to pander to the player's most intimate fantasies. ... The danger of the game is that once the user starts to play, the game actually makes them forget they actually started to play, so they believe that they are still in reality."

Ok, now let's talk about Second Life.

In many ways, SL is BTL. Wander the streets of that virtual world and you will indeed find people who have created a very full alternate reality for themselves. The implications of that fact is far beyond the scope of my expertise, but in the short time I've been inworld, I have encountered people who cannot walk in RL but can fly in SL and thus are made more free, people who have never left their country of origin but now travel the virtual world daily, people who have dreams and fantasies they could never carry out in RL but can do so without material consequence in SL. There is avarice and evil and intrigue to be found in SL - just as it is in RL - but there is also much that is noble and good and genuine and beautiful there as well - also as it is in RL. Is SL and its equivalents a passing fancy? I think not. I have seen the future, and it is virtual.

While preparing for some upcoming work in SL, I soon came across Chuck Hamilton, an IBMer who has been at the center of gravity of much of IBMs presence inworld. I was stunned to learn from Chuck that, late last year, there were only 325 IBM residents of SL but today there are now over 4,000. Today also IBM owns 22 islands in SL, and there are 36 more on order. For IBM, SL is big business, and a purposeful one at that. Chuck - inworld as Longg Weeks and I as Alem Theas - recently gave me a tour of these virtual IBM facilities, and pointed out that they are not just for fun, but have been used for a number of relevant business activities. Chuck highlights some of this work at MeetingsNet and Fast Company. This effort is very much on Sam's agenda, as noted in this report detailing IBM's investment in virtual worlds.

Want to learn more about IBM's work inworld? Read this, this, this, and this. But, don't miss this, this, this, this, and this.

But wait, there's more. Check out here, here, and here. Whew. And you thought IBM was all about pocket protectors and ties.

Quote of the day:

Rimmer: "Do you think it's because the sub-space conduits have locked with the transponder calibrations and caused a major tachyon surge that has overloaded the time matrix?"
Kryten: "Ah, no, sir. I've just been jabbing it too hard."
Red Dwarf


Friday, March 23, 2007, posted by @ 1:22 PM
Excellence In Programming
This week, at SD West, I received the Dr. Dobb's Journal Excellence in Programming Award. Previous winners include Bruce Schneier, Linus Torvalds, James Gosling, Erich Gamma, Guido van Rossum, Jon Bentley, Anders Hejlsberg, P. J. Plauger, and Guy Steele. I am very humbled to be counted in this group.

I wasn't able to attend the awards ceremony in real life, so this part of the awards ceremony was done in Second Life. If you happen to be inworld, I'm Alem Theas, so feel free to im me there.

Quote of the day:

Democritus maintains that there can be no great poet without a spite of madness.
Cicero


Thursday, March 22, 2007, posted by @ 11:25 AM
Software Risks
Peter Neumann moderates the ACM forum on risks to the public in computers and related systems. This forum offers some code-curdling stories that may make you want to run away to a remote island, far, far away from anything with a transistor in it.

In the spirit of Peter's work, one of my blog readers sent me this story about the (non fatal) crash of an F22, a $133+ million dollar loss due to the failure of the flight control system after a brief power hit. If you've never read a military aircraft accident report, this one makes for an interesting bedtime story. This same reader told me of a more recent event, in February of this year, when a squadron of fighters passed over the international date line, an event that, in his words, "hosed the navigation software" and required that they turn around and return to base, following the fuel tanker to guide them (since navigation systems we no longer functioning).

Quote of the day:

Since human beings themselves are not fully debugged yet, there will be bugs in your code no matter what you do.
Chris Mason


Monday, March 19, 2007, posted by @ 11:12 PM
John Backus
Last fall, I had the extreme pleasure of interviewing John Backus on behalf of the Computer History Museum. John was a gracious, engaging, and brilliant man.

I am sad to report that John passed away at his home in Oregon last Saturday.

Quote of the day:

Convention languages are basically high-level, complex versions of the von Neumann computer. Although I refer to conventional languages as "von Neumann languages" to take note of the origin and style, I do not, of course, blame the great mathematician for their complexity. In fact, some might say that I bear some responsbility for that problem.
John Backus


Monday, March 19, 2007, posted by @ 4:33 PM
Identity Crisis
In preparing for my first virtual lecture in Second Life, I've experienced some deep identity issues that will take years of therapy to unravel.

This is a short story, but it takes a long time to tell it, so I'll just give you a short version of the short story. I created a Second Life avatar (call it/him/her/me AM for now). My IBM colleagues in Europe created a shape/skin/clothing package that looks frighteningly like me. I imported the outfit and put it on. AM now projects Grady in the virtual world. So far, so good.

But wait: the SL servers undergo a major upgrade. Login for AM fails, because of problems in converting my inventory to the new Second Life database. Messages to Second Life support go unanswered for a week and the time for my event rapidly approaches. In desperation, I create a new Second Life avatar (call it/him/her/me AM'). I login as AM', have my IBM friends send me the Grady shape/skin/clothing package a second tim, I import it and put it on: huzzah! for AM' now projects Grady in the virtual world. Clearly the problem lay in the Second Life database conversion mechanisms, over which I have no control.

So, I now "live" in a virtual world in two places: as AM and AM'. To confuse matters more, I created the AM avatar as a male and the AM' avatar as a female (don't ask, that's a really long story that takes a really long time to tell). Ergo, I am both identity- as well as gender-confused in my virtual life. If you encounter my virtual self, you'll see me as either the female AM' (for now) or the male AM (when support finally fixes their conversion bug).

I need to sit down for a moment, my very real world is making my head spin.

Quote of the day:

Virtual Reality: When Reality is not enough.
Michael Crichton


Monday, March 19, 2007, posted by @ 8:37 AM
Patents Gone Wild
Fellow IBMer Jim Conallen pointed me to this report which indicates that the linked list data structure has been patented. A quick search at the USPTO verifies that this claim is real: the abstract for this patent may be found here. The patent was filed on September 26, 2002, the inventor being Ming-Jen Wang of LSI Logic Corporation, and subsequently US Patent 7028023 was granted last year, on April 11th, 2006.

I absolutely respect every company's and individual's right to aggressively pursue the protection of their intellectual property. IMHO, however, this patent seems to me to overreach: patenting something that seems a) patently obvious and b) a manifestation of prior art does not, IMHO, serve the industry at all. Who at the USPTO reviewed and accepted this patent, one wonders?

Quote of the day:

Sell not virtue to purchase wealth, nor liberty to purchase power.
Benjamin Franklin


Thursday, March 15, 2007, posted by @ 4:22 PM
My Virtual Life
In a couple of weeks, my virtual self will be giving a virtual lecture in the virtual world of Second Life. Virtual space will be limited, so register soon at this site.

Quote of the day:

At least I have chicken.
Leeroy Jenkins


Monday, March 12, 2007, posted by @ 8:57 AM
Alice
I'm back from Kentucky. I had a delightful time at SIGCSE, where 1,300 educators were present. There is much going on in this community to commend: the ACM/IEEE Computing Curricula and its recommendations for undergraduate and even K to 12 classes is fascinating reading. Another wonderful development is Alice which seems to really be hitting its stride this year. Alice is an effort of CMU that, in their words, is "a modern programming environment designed to be a student's first exposure to object-oriented programming. It allows students to learn basic computer science while creating animated movies, simple video games, where students control the behavior of 3D objects and characters in a virtual world." Alice offers a very approachable and playful path to programming, using a platform familiar to the emerging generation that furthermore is directed to women as well as men (and the percentage of women in the computer sciences is an embarrassingly low number).

Quote of the day:

Alice laughed, "There's no use trying," she said, "one can't believe impossible things." "I daresay you haven't had much practice," said the Queen. "When I was your age, I always did it for half-an-hour a day. Why, sometimes I've believed as many as six impossible things before breakfast."
Lewis Carroll


Monday, March 5, 2007, posted by @ 9:12 PM
Software Engineering Radio
Markus Voelter recently interviewed me for Software Engineering Radio. Check out SE Radio's archives where you'll find a number of fascinating podcasts.

Quote of the day:

An investigation may take six months. A quick interview, profile, a day.
Diane Sawyer


Monday, March 5, 2007, posted by @ 8:10 AM
Computer Science Education
My next event is SIGCSE in Kentucky, where I'll be giving a keynote titled Read'n, Writ'n, 'Rithmetic...and Code'n. The gap between the technological haves and have-nots is growing and the gap between academia and the industries that create these software-intensive systems continues to be much lamented. The ACM has pioneered recommendations for curricula, and while there is much to praise about these recommendations, that academia/industry gap remains. I'll be offering some observations from industry why that is so (and what might be done about it).

Quote of the day:

Eventually hardware fails; eventually software works.
Michael Hartung


Thursday, March 1, 2007, posted by @ 8:03 PM
NUMB3RS, Crime, And The UML
The CBS series NUMB3RS is a highly rated and very entertaining police drama with a twist: FBI Special Agent Don Eppes (played by Rob Morrow) teams with his brother Charlie (played by David Krumholtz), a genuis who uses his mathematical skills to help solve crimes. The math behind the series is unusually advanced for prime time television, but according to a number of professional mathematicians, often dead on correct and germane to the crime being investigated.

In that light, check out the February 23, 2007 episode, One Hour. Charlie and his graduate student Amita Ramanujan (played by Navi Rawat) determine that the kidnapper's actions are event driven. Amita then suggests that they write a state machine to describe that behavior, and so Charlie states "Right, using Unified Modeling Language."

Duuude...way cool.

Quote of the day:

Mathematics is the language with which God has written the universe.
Galileo Galilei


Sunday, February 18, 2007, posted by @ 9:29 AM
Yahoo, Google, And Microsoft
Here's a wonderful story about one intern's experience working at Yahoo, Google, AND Microsoft.

Quote of the day:

The new company health plan is Google. From now on, employees must use Google to diagnose their own illnesses.
Catbert


Friday, February 16, 2007, posted by @ 11:06 PM
Wiki Patterns
Reader Johan Nagels sent me this fascinating site, offering a variety of patterns and antipatterns for using wikis.

BTW, if you'd like to understand the software behind the Wikipedia and indeed all the projects of the WikiMedia Foundation, check out the MediaWiki.

Quote of the day:

What's the simplest thing that could possibly work?
Ward Cunningham


Friday, February 16, 2007, posted by @ 9:44 AM
Mashups
Mashups seems to be coming of age, with a goodly amount of innovation going on thanks to the programmable edges exposed at Google, Amazon, eBay, and now even Facebook (plus many others, such as Yahoo Pipes which I mentioned in yesterday's post), edges that are presented in the form of APIs, classic Web services, or toolkits.

The fact that such things exist at all is an interesting evolutionary step in maturation of these system's architectures. Here you've got software-intensive systems each with a considerable user base and each with an incredible amount of very tangible information (e.g. Google's maps and Amazon's book listings) as well as exploitable metainformation (e.g. the online behavior of its users). Making such information available programmatically from a variety of sources creates an opportunity for combining that information in unexpected ways, ways that transcend each individual source but in turn elevate the value of each such site. While there is no question of the cool factor of what can be done, it remains to be seen how the business model for such mashups evolves: can you build an economically-interesting system on interfaces you can't control and that will likely change? will the providers of such interfaces seek compensation for the value of the information being used? are there unforeseen problems of public privacy? Time will tell.

Quote of the day:

You can do anything you set your mind to when you have vision, determination, and an endless supply of expendable labor.
www.despair.com


Thursday, February 15, 2007, posted by @ 8:11 AM
Web Architectural Styles
Roy Fielding's dissertation, Architectural Styles and the Design of Network-Based Software Architectures is a must-read regarding the Representational State Transfer (REST) style. Another must read is Bill Higgin's paper on the topic.

Speaking of architectural styles for the Web, check out Yahoo Pipes, a wonderfully elegant mechanism for, as Yahoo puts it "rewiring the Web."

Quote of the day (also by me):

Sometimes a pipe is just a pipe.
with apologies to the late Dr. Sigmund Freud


Wednesday, February 14, 2007, posted by @ 8:41 AM
I Do Not Like Email And Spam
Just a few minutes ago, the sun broke through the clouds, the birds started singing, and two squirrels put on a happy dance outside my window.

You see, I'd just finished processing all of my email in all of my accounts, personal and professional. I have nothing in my in boxes: nada, zero, 'tis all empty, a veritable void, a staggering emptiness of bits. It feels so freeing to say that.

As I'd blogged about before (July 21, 2005), I detest, loathe, abhor, execrate, abominate, anathematize, disapprove of, am appalled, disgusted, fed up, and disabused by, have disfavor and disaffinity for, shudder at the sight of, and just generally Don't Like email. It's a terribly noisy, inefficient, often inappropriate channel of communication. Yesterday, I had an interesting chat with Carol Jones about collaboration, and she observed that there's a generational thing going on with email: while email may be the obvious medium for my generation, there's a generation after Carol and I who have a) grown up not knowing the Web never existed and b) are used to multiple channels of communication: email PLUS instant messaging PLUS text messaging, not to mention blogs, vlogs, wikis, and all the subtle things that come with social networking sites. The future has a way of blindsiding us in the present, and my take is that the assumptions we make about the centrality of email today will be proven naively wrong in the coming years.

Quote of the day (by me):

I do not like email and spam.
I do not like them, Sam-I-am.
I do not like them on my Linux box.
I do not like them on my Macintosh.
I do not like them when I'm home.
I do not like them on my phone.
I do not like them here or there.
I do not like them anywhere.
I do not like email and spam.
I do not like them, Sam-I-Am.
with apologies to the late Dr. Seuss


Tuesday, February 13, 2007, posted by @ 7:33 AM
Architectural Complexity
An elephant is no more complex than a hummingbird. A finely-crafted mechanical watch is more complex than a one ton granite boulder. The three billion base pairs that comprise the human genome form an artifact of staggering complexity.

Can I meaningfully compare the complexity of the architecture of one software-intensive system to another?

Assuming that one can even calculate the complexity of a system's architecture, what value should you expect in that number? Simply knowing that system A has complexity X versus system B (or a different implementation of A) has complexity Y may be a fascinating curiosity, but then what? Does one try to do something (refactor the architecture) to optimize the value of the metric? Possibly, but the danger, of course, is that one may end up optimizing that number but at no material value to the use or economics of the system, or even worse, at the cost destroying some other important aspect of the system.

An observation, then: I think it's a mistake to devise a complexity measure for a system's architecture. Rather, I think that the only meaningful path is to devise a set of measures for each particular view of a system's architecture. This is a subtle difference, but an important one: one may have a system with a relatively simple logical architecture but a very complex deployment architecture (e.g. a nuclear simulation running on a massively parallel machine) or vice versa (e.g. a face recognition system running on a singe processor). Another related observation: across the spectrum of software-intensive systems, you'll find widely varying architectural styles. It seems to me that each style warrants a particular complexity profile (e.g. the structure of a real time system will look very different than that of a layered, Web-centric enterprise system versus or a rule-based system).

It is relatively easy to devise a naive set of architectural complexity metrics (for example, by trying to adapt coupling and cohesion metrics to components at higher levels of abstraction), but it's not clear to me that there's any particular value in doing so. In these matters, i'm more of an inductive reasoning kind of guy. I'd approach the problem by selecting a pile of architectures (you could limit yourself to one particular architectural style, but then you'd have to be careful about applying that suite to other styles), get my mind around how one "feels" more complex than the other, sort them into groups of relatively equal complexity...then analyze the heck out of them to see if I could discern what distinguishes each group from the others. That, I think, would lead to a more useful set of metrics.

Others (such as here and here) have explored this problem. Personally, I think the most fruitful path of investigation ties architectural complexity to entropy, that is, the measure of the disorganization of a system and/or the size of the state space of the system. Clearly, there's work to be done. I can "feel" that one system or implementation is more or less complex than another, but I can't empirically defend that feeling in many cases.
Quote of the day:

Complexity comes from a large number of parts that interact in a non-simple way.
Herbert Simon


Wednesday, February 7, 2007, posted by @ 5:11 PM
Saving Gas Through Software
A Dutch scientist has suggested a way to improve gas consumption in automobiles.

Quote of the day:

The underlying complexity of a given problem is constant. It can be hidden, but it does not go away. Complexity is conserved by abstractions. In fact, apparent complexity can be increased by abstractions, but the underlying complexity can never be reduced.
Matt Quail


Tuesday, February 6, 2007, posted by @ 8:49 AM
Turing Lecture
I've posted my lecture in the blog artifacts.

Quote of the day:

I believe that in about 50 years time it will be possible to program computers to make them play the imitation game so well that an average interrogator will not have more than 70% chance of making the right identification after five minutes of questioning.
Alan Turing


Monday, February 5, 2007, posted by @ 11:03 AM
Catching Up
I'm back from my work in Europe. My next public event is in early March where I'll be keynoting SIGCSE, the technical symposium on computer science education.

A dear colleague, John Stewart, wrote to say that he attended the funeral for Jean Ichbiah last weekend. Among other things, Jean was the principal author of the Ada programming language. Expressions of sympathy may be donated to the Dana Farber Cancer Institute.

I had the privilege of working with Jean over the years, having been involved with the Ada Joint Program Office at its inception. Furthermore, Rational Software's first commercial product was a software development environment for Ada, running on our own machine, the R1000. Although Ada never reached the critical mass of C++ or Java, it was an important influence upon both of those languages as well as all modern languages. For a time, Ada was the dominant language for military work but also crossed over into the commercial world primarily for safety critical systems such as air traffic control systems and railway switching systems.

Quote of the day:

To the well-organized mind, death is but the next great adventure.
Albus Dumbledore


Tuesday, January 23, 2007, posted by @ 4:08 PM
Webcast Of Turing Lecture
A live webcast of my Turing Lecture has now been scheduled for 6:30 PM GMT (London time) on Thursday, 25 January.


Wednesday, January 10, 2007, posted by @ 11:03 AM
Transparency
Bill Higgins has a nice post about the tension between transparency and abstraction. I absolutely agree with his conclusion, namely, that abstractions are imperfect, and often that when they fail it's hard to reason about the roots of that failure because of the very abstraction itself.

There's a phrase from systems engineering that applies here, the principal of least astonishment. When an abstraction fails, a well-designed one will (hopefully) fail in predictable ways. It's when an abstraction fails and it fails in an unexpected way that we have evidence of a leaky abstraction. Unfortunately, I don't think this kind of behavior is avoidable, although it is the case that tracing down the roots of such failures and then refactoring the stuff at those roots will generally lead to a better separation of concerns. The problem is, in software, we generally never take the time to do that refactoring, and so we occasionally continue to be astonished at the most inopportune times.

Quote of the day:

(On visiting Western Europe for the first time) You have riches and freedom here but I feel no sense of faith or direction. You have so many computers, why don't you use them in the search for love?
Lech Walesa


Tuesday, January 9, 2007, posted by @ 11:18 AM
Architectural Governance
The last few days, I've been involved in a vigorous (internal) discussion about putting the A back in SOA. My experience points to the value of using a system's architecture as a central artifact for governance. Often, governance at an enterprise level is carried out through an architecture board chartered with evolving the enterprise's architecture, including making decisions regarding where to plant services, how to harvest them, how to expose them, and how to promote/use them. This, by the way, is an issue much larger than SOA, in that a service-oriented architecture is likely one of many architectural styles that will be manifest inn an organization. To put it another way, all enterprise architectures are not service-oriented architectures, nor are all service-oriented architectures enterprise architectures

Quote of the day (with kudos to the venerable Joe Marasco for sending this to me):

A traveler visited a city where many stone cutters were working. Approaching several, he asked the same question: "What are you doing?" The first stonecutter he met replied, "I'm cutting stone. It's dull work, but it pays the bills." A second stonecutter responded, "I'm the best stone cutter in the land. Look at the smoothness of this stone, how perfect the edges are." A third pointed to a foundation several yards away, and said, "I'm building a cathedral."


Monday, January 8, 2007, posted by @ 2:51 PM
Buried
In snow that is. The Denver area has been at the receiving end of three consecutive and intensive snow storms; another one is predicted to hit later this week. I have drifts up to five feet deep in parts of my yard and the lake behind me is frozen over completely. It's times like these that I'm most grateful to be able to work out of my home. Telecommuting does have its advantages.

It's also nice to be able to travel again, having fully recovered from my open heart surgery last spring. I have bookings from now through June. My first international trip of the year is coming up in a couple of weeks, where I'll be traveling to London and Manchester to give the Turing Lecture for the British Computer Society on the promise, and limits, and the beauty of software. I'll also be meeting with several customers, academics, and researchers, and will have the time to interview a couple of projects for the Handbook.

Quote of the day:

If you want to build a ship, don't drum up the men to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.
Antoine de Saint-Exupery


Wednesday, December 27, 2006, posted by @ 8:26 AM
More On Collaboration
Check out this wiki for the workshop on supporting the social side of large scale software development.


Tuesday, December 26, 2006, posted by @ 9:52 AM
Five Things You Don't Know About Me
Bill Higgins tagged me and so I'm compelled to reply:
  • The first instrument I learned how to play was the accordion (I now play the Celtic harp, bowed psaltery, hammered dulcimer, guitar, and a bit of piano and recorder).
  • I collect stuffed giraffes, wizards, and dragons.
  • Sushi is my favorite food (although chocolate is my favorite comfort food).
  • Were I not into software, I'd probably be an itinerary musician. Or a priest.
  • I'm allergic to mean people.
I switched from the accordion, because it quickly became clear to me that that instrument was not exactly a babe magnet.


Monday, December 18, 2006, posted by @ 11:47 AM
Hm....
Sorry, but it appears that there are some glitches with the developerWorks mirror of my blog; a few of my posts have not been mirrored. I'll have my people talk to their people who will get some other people to fix the problem.


Monday, December 18, 2006, posted by @ 11:42 AM
Computer Architecture
The latest issue of ACM Queue is running an interview of John Hennessy and David Patterson, the authors of the wonderful book, Computer Architecture: A Quantitative Approach. John suggests that there have been four architecture-driven inflection points (remember, we are taking about hardware architecture, not software...): the first generation of electronic computers, the IBM 360, pipelining, and now explicit parallelism (e.g. multicore processors).


Monday, December 18, 2006, posted by @ 9:23 AM
Collecting Patterns
Several people have asked me why I've spent the energy collecting a catalog of patterns, since this is material that will likely never show up in the dead tree version of the Handbook. Actually, this catalog is entirely relevant: one of the more important elements of any architectural description is the naming of the patterns that shape that system. In most cases, the architects themselves have applied a variety of patterns - as a manifestation of the system's essential design decisions - but, unless they work in an environment that values patterns, they would have rarely named these things as patterns or documented them as such. The naming of patterns - just like the naming of cats - is a difficult matter. I don't want to reinvent any patterns, but rather, as I conduct my archeological digs, want to identified the patterns used by drawing from patterns that have already been described.


Monday, December 18, 2006, posted by @ 9:16 AM
Yet More SOA Patterns
Arnon Rotem-Gal-Oz has also pointed me to his emerging collection of SOA patterns>


Monday, December 18, 2006, posted by @ 9:04 AM
SOA Patterns
Eoin Lane pointed me to several SOA patterns he and his team have harvested: data federation, cache mediation, Web services response template, and requester-side caching.


Friday, December 15, 2006, posted by @ 11:42 AM
And You Think That Writing Web Apps Is Hard...
Heat, weight, power - and even solar flares - are among the many things with which developers for software-intensive space systems must grapple.


Thursday, December 14, 2006, posted by @ 2:56 PM
SOA Patterns
Following up to my earlier blog re the Handbook pattern catalog, check out Eoin Lane's blog on building SOA applications with patterns.


Thursday, December 14, 2006, posted by @ 1:40 PM
Blog Spam
The developerWorks mirror of my blog has been subject to blog spam, so I'm taking down comments for a while. Apologies for the inconvenience, but you all know reach me.


Thursday, December 14, 2006, posted by @ 11:13 AM
Paper Generator
Jim Conallen sent me this link to an automatic computer science paper generator. Sadly, some of these papers were apparently accepted at different conference.


Thursday, December 14, 2006, posted by @ 8:49 AM
ObjectView
You'll find an interview with Kent Beck along with some of my ramblings on SOA here, in the latest issue of ObjectView.


Thursday, December 14, 2006, posted by @ 12:46 AM
Frontier Visionary Interview
I was recently interviewed on the topic of "Software Engineering: Past, Present, and Future."


Wednesday, December 13, 2006, posted by @ 11:15 AM
More On Collaboration
My recent posting regarding collaboration generated a number of responses. Joe Marasco wrote to remind me that the Silicon Valley Business Journal's Emerging Technology Awards named RAVEN (the Requirements Authoring and Validation Environment) the winner in the collaboration category.

Another collaboration product, this one in the agile space, is from Rally Sofware Development in Boulder.

Ravenflow and some of Rally's principals are former Rationalites, BTW :-).


Tuesday, December 12, 2006, posted by @ 11:30 PM
Joint Architecture For Unmanned Systems
Check out the DoD's Joint Architecture for Unmanned Systems, an open standard based on the Society of Automotive Engineers Generic Open Architecture which in turn is based on a NASA initiative for space flight systems software.

One the one hand, it's a sign of the maturation of the software biz to see the emergence of domain-specific architectural frameworks such as these; on the other hand, the diversity whereby these frameworks is specified shows that we still don't have a shared reality as to what architecture is and what it is not.

But then, as Jane Wagner wrote and Lily Tomlin performed in The Search For Signs Of Intelligent Life In The Universe, reality is nothing but a collective hunch.


Monday, December 11, 2006, posted by @ 11:19 PM
A Pattern Catalog
Finally.

In my lectures I often remark that, IMHO, one of the most important advances in software engineering in the last decade has been the practice of patterns, because they give us a means of naming and reasoning about societies of classes, designs that are at a higher level of abstraction than individual entities. The past several months, I've been slogging through the patterns literature in order to create a contemporary catalog of patterns (you'll need to be logged in to the Handbook to visit this link). This is not a new idea: in 2000, Linda Rising published The Pattern Almanac and there are many lists of patterns to be found online. I undertook this present work to get a snapshot of the current state of the practice in patterns, so that as I continued with my archeological digs for the Handbook I'd be able to apply the patterns that had already been identified. In this journey, I learned a number of things, but three stand out.

First, there has been a considerable maturation of the patterns literature over the years since the publication of the Gang of Four's Design Patterns book and the first PLOP conference (not to be confused with Scott Adam's short-lived cartoon of the same name). If you study some of the earliest documented patterns and compare them to recent ones, you'll see that the form and rigor of patterns documentation has advanced greatly.

Second, I was touched by the vitality of the patterns community. I've cataloged almost 2,000 patterns, realizing that there are many more out there that I've not cataloged. My capricious and arbitrary pruning of the patterns literature followed a simple rule: I included a pattern if its source was accessible (this favored patterns published in books and proceedings and rejected those only found online, as they were likely to be inaccessible over time). Patterns that had gone through a shepherding process were generally selected over those that had not.

Third, I was surprised by the breadth of patterns that have been documented. In the literature, you'll find a number of domain-specific pattern languages, patterns for non-software systems, and even many metapatterns and antipatterns.

As my work on the Handbook proceeds, I'll continue to augment my patterns catalog, but for the moment, I've reached a stable point: I've researched all the interesting (to me) sources of accessible patterns, and will now turn my attention to doing more archeological digs. My research assistant, Celso Gonzalez, will be helping me in the coming weeks clean up the catalog: we need to tighten up the references, add mention of the pattern languages from which some of these patterns are drawn, and spend some time rethinking the classification of the various patterns. I'll also task my sysadmin (oh wait...that's me!) to fiddle with my Google Mini - which I use to provide searching on the site - to make searching the patterns catalog a bit easier.


Monday, December 11, 2006, posted by @ 10:17 PM
Practicing Programming
Another IBMer (and clearly also another night owl like myself) Josh Staiger wrote me shortly after my last blog entry, pointing me to a brilliant piece by Steve Yegge (who at the time was working at Amazon but now blogs here). Thanks, Josh, for the reference.

Check out Ka-Ping Lee's (older) course on Beautiful Code.


Monday, December 11, 2006, posted by @ 9:22 PM
How To Begin
There's a fascinating thread on Slashdot by a recent CS grad. The writer notes that "...for some of the software being written nowadays, I would have absolutely NO IDEA how to even begin writing it." It will take a bit for you to slog through all the responses, but there are many good ones, the essence of which is typically the same advice as given by many writers: to become a good programmer, you need to read lots of code written by others and you need to practice by writing lots of code of your own.

Professional singers work hard to polish their voices; good writers write and write some more; world-class photographers take lots of pictures; athletes train their bodies through hard yet thoughtful workouts. There is no royal road to becoming a great programmer: it takes dedication, passion, and lots of hard work.


Friday, December 8, 2006, posted by @ 7:23 PM
Collaborative Development Environment
Back in 2002, Alan Brown and I coined the term Collaborative Development Environment, or CDE for short. We observed the evolution of the developer experience - from CLIs to IDEs to XDEs - and projected that the Next Big Thing for the developer would be tooling to support collaboration. We published a paper in Zelkowitz's Advances in Computers and around the same time, my keynote at the first EclipseCon elaborated on the history of development environments.

IBM's alphaWorks has launched a portal about CDEs which you'll find here. I've got an editorial coming out soon in Dr. Dobb's on the same subject.

Architecture and collaboration are my two (professional) passions at the moment, and the two are not that distant from one another.


Thursday, December 7, 2006, posted by @ 7:53 AM
Testing Excellence
My dear colleague Bill Higgins pointed me to a blog by Ward Cunningham and Bjorn Freeman-Benson. There are a number of interesting posts, but I particularly enjoyed this one about James Bach and the profession of testing.


Thursday, December 7, 2006, posted by @ 6:42 AM
Page Rank
As mentioned in Slashdot, the American Mathematical Society has an article by David Austin regarding Google's page rank algorithm.


Tuesday, December 5, 2006, posted by @ 2:36 PM
Empowering The A In SOA
This Thursday, December 7th, I'll be hosting a developerWorks chat regarding empowering the A in SOA and the connection of that work to this week's v7 release of the new Rational toolset.


Tuesday, December 5, 2006, posted by @ 11:35 AM
User Friendly
I get a kick out of J. D. Frazer's User Friendly (I even have a stuffed Dust Bunny in my office), but today's strip had me laughing out loud.


Tuesday, December 5, 2006, posted by @ 11:15 AM
Bjarne
From an interview at the MIT Technology Review, Bjarne Stroustrup writes:

I think the real problem is that "we" (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. We perform many minor miracles through trial and error, excessive use of brute force, and lots and lots of testing, but--so often--it's not enough. Software developers have become adept at the difficult art of building reasonably reliable systems out of unreliable parts. The snag is that often we do not know exactly how we did it: a system just "sort of evolved" into something minimally acceptable.


Monday, December 4, 2006, posted by @ 8:47 AM
Must See Blog
Check out this blog, Adding Simplicity by Dan Pritchett, an architect at eBay. Although there are only a few posts currently on his site, it is well-written, full of interesting insights, and very pragmatic. In the "items of interest" section of Dan's blog, you'll find the slides he used at a recent SDForum meeting.


Wednesday, November 22, 2006, posted by @ 10:31 AM
Research Assistant
In late October, I'd posted an appeal for a research assistant to lend me a hand with the Handbook. I received around 50 replies and in between customer visits have been sorting through them all. I was flattered by the breadth of responses. I had many from the US, but many more from India, Asia, and South American; offers came from everyone from undergrad and grad students to senior architects of some large companies. Thank you all for getting in touch with me.

It was not easy to choose, but in the end I selected another IBM colleague, Celso Gonzalez to lend me a hand. Thanks to Amazon, I'm filling out Celso's library a bit so that he can first work on reorganizing the almost 2,000 patterns I've already cataloged. You'll see some subtle changes in that part of the Handbook site over time (and I'll blog about those changes as they unfold).


Friday, November 10, 2006, posted by @ 6:37 AM
Happy Birthday, Intel!
This is time for birthdays; this month marks the 35th anniversary of the Intel 4004 microprocessor.

I had the opportunity to speak at an event with Gordon Moore a few years ago. I'm sure this very dialog was not the first time Gordon had encountered it, but I had to say it anyway. Speaking just before him, I quipped that, while I absolutely admire all the contributions he'd made, without software, Intel's chips would be nothing more than a pile of sand. Gordon then started his presentation with the remark that, without his chips, our software would be just marks on paper.

Such is the yin and yang, the eternal cosmic dance of hardware and software.


Tuesday, November 7, 2006, posted by @ 9:02 AM
Happy Birthday, Eclipse!
In celebration of Eclipse's 5th birthday, parties are being held around the world. If you can't make it to one of these events, then sign the birthday card.

For those of you in the US, today is election day, so remember to vote early and vote often.


Friday, October 27, 2006, posted by @ 7:28 AM
Seeking A Research Assistant
This is a shameless, self-serving request for help.

The growth of the Handbook is such that I find myself in need of hiring a research assistant for some random part-time work. In the short term, I need someone to sweep through the patterns I've cataloged thus far to verify their classification, augment their references, and group them by pattern language. In the medium term, I need someone to help me with the flood of correspondence I have for each system I'm investigating, including tracking down references and getting permissions for appropriate artwork. Also in the medium term, I could use another set of eyes on the models for each such system. As for the long term, we'll see how this goes for the earlier tasks.

You can be anywhere in the world; that's the joy of collaborating over the Web. An understanding of patterns and the pattern literature is a must, the ability to write well is also a must, and you also need to be a detail-oriented person, for there will be a million little loose ends that will need tying together. You'll also need patience with me: my work on the Handbook tends to go in bursts, because of all the other IBM-ish things I must do. If you are interested, please email me.


Thursday, October 26, 2006, posted by @ 11:17 AM
The US At 300 Million
Somewhat old news, but the United States recently surpassed a population of 300 million (the world's population currently tops 6 billion). When I was born in 1955, the US's population was only 166 million and the world's was 2.78 billion. Many other economists, sociologists, environmentalists, and politicians far more informed than I (well, perhaps except for the politicians....) have pontificated about the implications of this growing population relative to the organization of human life and the depletion of the earth's resources. I don't want to add any noise to the cacophony already there, but from my perspective as a computer scientist, I expect that one thing this means is that, over time, people will increasing live, play, and work in virtual environments.

Ray Kurzweil's intriguing book, The Singularity Is Near, offers his prediction of the growing indistinction between biological and non-biological life (I'm reminded of Orsen Scott Card's entry to Wired's short stories: "The baby's blood type? Human, mostly"). I'm skeptical except for perhaps in the long term (think hundreds of years). In the shorter term, virtual worlds such as Second Life are, I believe, the sign of things to come. Second Life currently has a population of over one million virtual citizens, and is home to a flourishing economy (linden dollars are the hard currency of the realm, currently running at 250 linden dollars to one US dollar) and a vibrant cyber society. The Second Life Herald even offers daily news about interesting events in that virtual world. The denizens of Second Life represent a microcosm of society: there are entrepreneurs, families, and companies, tourists and players, the virtuous and the villains (both of whom seem to play at various times in a vibrant underworld where all the things you might think that are there are, well, there). I am told that the biological counterparts of a few of the virtual citizens are even able to earn a living in the real world because of their work in the virtual one.

Consider then: in a world of shrinking resources, limited space in which to live, and with chaotic political and economic circumstances that are far outside the control of most individuals, reinventing yourself in a virtual world is not necessarily a bad place to be. Second Life is relatively new on the scene, but expansive metaverses such as the World of Warcraft are evidence that people can be drawn deeply into these virtual worlds. Setting up a home, a job, a persona, even a personal look is far easier, far lest costly, and far more malleable in a virtual world then in this one, and thus the emotional appeal to a life in such a world is compelling for some.

The human spirit seems to lust for freedom and open space. When one physical frontier closes, we seek another; when all such physical frontiers close, then living in a virtual world is enticing, for it is a manifestation of a seemingly limitless frontier.

I'm a fan of the British series Red Dwarf (actually, I read the books before I ever saw the TV show). I was particularly delighted by the plot of the second volume, Better Than Life in which the characters in the first book slowly come to the realization that they are actually living in a game called Better Than Life, a game that is fiercely addicting simply because it is, um, better than life.


Thursday, October 12, 2006, posted by @ 7:44 AM
Snake Oil-oriented Architecture
Snake oil, in its uncomplimentary form, denotes a miracle drug guaranteed to cure all that ails you, yet whose mechanisms are shrouded in inscrutable details that wither in the uncompromising light of science. As nations expanded their empires - most notably the United States in a rush to fulfill its Manifest Destiny in the 1800's - grifters would rumble into frontier towns in order to extract precious dollars from unsuspecting and ill-informed citizens, selling them secret elixirs of amazing potency. These medicine men would put on a great show for a town typically lacking in entertainment, short of the local saloon which was already so mundane to the locals. These people were looking for a release, a cure that required no effort, a turn to "modern science" that would relieve them of their sufferings and perhaps more importantly, their fear of the unknown which was vast in this unscientific age.

Alas, there continue to be snake oil salesmen (and now saleswoman), but their elixirs often take a form that's far more illusive than liquid medicine. Most modern day grifters no longer ride into town on a wagon, but rather use late night TV, well-placed "scientific" advertisements, or the Internet to ply their wares. The better-capitalized ones will fly in to town with their entourage, set up a meeting at a high-class hotel, dazzle an unsuspecting and ill-informed audience with their PowerPoint wizardry, then fly away, leaving their local representatives to rake up the cash that's been thrown on the floor. Almost immediately, these local citizens will feel wiser and stronger, simply having been exposed to these confident, polished, and well-fed men and women and their shiny brochures - why, even the articles in trade magazines proclaim that It Is Good! - but once back at work and faced with the real world, they quickly find that instituting some of these new-fangled ideas is not as easy as they were led to believe and that these elixirs are not so far-reaching as promised them. A little later, some of them will get an uneasy feeling that maybe - just maybe - there are some simple fundamentals on which their organization is not executing well, and that the whole elixir exercise was worse than useless, because it actually diverted them from their real problems while creating new ones. Far too many of those people will get over their discomfort just as soon as the next medicine show rolls into town: a little distraction now and then is always a nice way to avoid reality and give your bosses the illusion of progress.

Now, let me make something excruciatingly clear, lest you misunderstand me and thus send incendiary emails and/or impel my IBM management to take me behind the woodshed for a good thrashing: I am a strong proponent of Service-Oriented Architectures (SOA).

However, I tremble at the realization that the fundamental technical benefits as well as the costs and trade-offs of SOA are sometimes lost in the guise of Snake Oil-oriented Architecture.

IMHO, SOA's value proposition begins with the A in its acronym: architecture. There is sound, proven value in governing and growing a system's architecture; there are also hard decisions that must be made, many decisions of which cannot be known a priori (which is why a process shaped around the rhythmic incremental and iterative release of executables is so important). There are many things we already know about what constitutes a good architecture and what does not. Stripped away of all the hype, a Service-Oriented Architecture is essentially a variant of well-proven message-passing architectural patterns. The variance comes in the form that services are cleverly designed to take advantage of the Web-centric infrastructure that pervades many organizations: services allow you to send and receive semantically rich messages through firewalls.

Having said that, there follow a multitude of hard technical and process decisions that must be made, which the Snake Oil-oriented Architecture showmen often neglect to tell you about: what distinguishes a good service from a bad one? what should the granularity of a service be? when should I offer up a stateless service versus a stateful one? as for the stateful ones, how to I express their semantics, and how do I ensure their their misuse doesn't corrupt my system? how do I express the semantics of a society of services (only the most trivial services work in isolation)? how do I decide upon the semantics of the information transmitted by these services so that locally they are efficient and useful but that also globally they are consistent? how do I expose some services to some clients and hide them from others? how do I offer up variants on a service, so that different clients see a different face to that service? how do I ensure the security of critical services, such that I am confident I'm not opening up holes in my enterprise that will let the bad guys in? what services should I expose to the world, and what services should I keep hidden? where are services appropriate, and where are they not? how do I best expose services in a legacy system? who should own/maintain these services? are there alternative architectural patterns I should employ instead of services, and where, and why?

These are all architectural and process decisions, which is why I tend to emphasize the A in SOA. If you ignore the S in SOA for a moment and shine an uncompromising light on your organization's software development practices, you may come to realize that there perhaps are some simple fundamentals you need to work on first, so that you can then approach the S in SOA in an appropriate, confident manner, and derive the true value from this technology.

If you do otherwise and accept the unprovable proclamations of the Snake Oil-oriented Architecture salesmen by pouring their elixir on the aching muscles and oozing wounds of your organization's people and software assets and doing nothing else, than all I can say is that you will probably get the results that you deserve.


Wednesday, October 11, 2006, posted by @ 10:18 AM
More On Yahoo's Pattern Library
Bill Scott at Yahoo and I have been in correspondence, and he pointed me to this page regarding design patterns as well as this blog where the discussion will be continued in a posting sometime next week.


Tuesday, October 10, 2006, posted by @ 10:51 PM
Yahoo Pattern Library Curator
Yahoo is looking for a curator for their public pattern library. Check out this description of the role.


Tuesday, October 10, 2006, posted by @ 9:50 AM
The Most Innovative College In America
Ok, I'll admit up front that I have a conflict of interest in posting this: I'm on the university's advisory board.

The Spellings commission report recently cited Neumont University in Salt Lake City for "innovation in curriculum development and program delivery."


Friday, October 6, 2006, posted by @ 9:02 AM
Orbiting The Giant Hairball
Hm, that sounds a little too juicy, so I'll stick to the "big ball of mud" title.

Dennis Hamilton emailed me, pointing me to Brian Foote's web site, containing the latest version of the big ball of mud pattern as well as several others.

"Orbiting the Giant Hairball," BTW, is the title of a book by Gordon MacKenzie detailing his thoughts about creativity and the corporate world.


Thursday, October 5, 2006, posted by @ 3:34 PM
Big Ball Of Mud
Today I was rereading PLOP 4, and in particular the chapter by Brian Foote and Joseph Yoder on an architectural pattern they call a Big Ball of Mud. There is such wisdom and insight in their work that I just had to share some passages. Please, go amazon yourself a copy of PLOP 4 (and while you are at it, order PLOP 1, 2, 3, and 5 as well) so that you can read about their entire pattern language:

Why does a system become a Big Ball of Mud? Sometimes, big ugly systems emerge from throwaway code. Throwaway code is quick-and-dirty code that was intended to be used only once and then discarded. However, such code often takes on a life of its own, despite casual structure and poor or nonexistent documentation. It works, so why fix it? When a related problem arises, the quickest way to address it might be to expediently modify this working code, rather than design a proper, general program from the ground up. Over time, a simple throwaway program begets a Big Ball of Mud. Even systems with well-defined architectures are prone to structural erosion. The relentless onslaught of changing requirements that any successful system attracts can gradually undermine its structure. Systems that were once tidy become overgrown as piecemeal growth gradually allows elements o the system to sprawl in an uncontrolled fashion. If such sprawl continues unabated, the structure of the system can become so badly compromised that it must be abandoned. ? As with anything else in the universe, counteracting entropic forces requires an investment of energy. Software gentrification is no exception. The way to arrest entropy in software is to refactor it. A sustained commitment to refactoring can keep a system from subsiding into a Big Ball of Mud. ... Some of these patterns might appear at first to be antipattterns or strawmen, but they are not, at least in the customary sense. Instead, they seek to examine the gap between what we preach and what we practice. ... Still, some of [these patterns] may strike some readers as having a schizoid quality about them. So, for the record, let us put our cards on the table. We are in favor of good architecture. Our ultimate agenda is to help drain these swamps. Where possible, architectural decline should be prevented, arrested, or reversed. ? In part, our attitude is to ?hate the sin, but love the siner.? ? Not every backyard storage shack needs marble columns. There are significant forces that can conspire to compel architecture to take a back seat to functionality, particularly early in the evolution of a software artifact. Opportunities and insights that permit architectural progress often are present later than earlier in the life cycle. A certain amount of controlled chaos is natural during construction and can be tolerated, as long as you eventually clean up after yourself. More fundamentally, a complex system may accurately reflect our immature understanding of a complex problem. The class of systems that we can build at all may be larger than the class of systems we can build elegantly, at least at first. A somewhat ramshackle rat's nest might be a state-of-the-art architecture for a poorly understood domain. This should not be the end of the story, though. As we gain more experience in such domains, we should increasingly direct our energies to glean more enduring architectural abstractions from them.

Well said, Brian and Joseph.


Wednesday, October 4, 2006, posted by @ 4:33 PM
Yet More Patterns
Published in 2000, Linda Rising's Pattern Almanac provided a comprehensive index to the many patterns that had been documented in the software community. Unfortunately, Linda's book is now out of print. Additionally, since that time, the patterns literature has matured considerably, especially thanks to the efforts of the Hillside Group, with their writer's workshops and PLOP conferences.

While by no means as comprehensive as Linda's original work, I've now cataloged a little over 1200 patterns, and I figure I have several hundred more to add. You'll find an index to these patterns here (you'll need to be logged in to the Handbook site) where you can sort them by name, kind, and source and for each read the problem they address and the solution they offer. Several people have written to me saying that they have used this catalog often, and so over the next week or so I'll improve search within my site so that you can scan the entire site, the the patterns, and other sections.


Friday, September 29, 2006, posted by @ 10:42 AM
Good Bye, Amigo
Jim Rumbaugh has announced his retirement from IBM. I've enjoyed working with Jim over the years, and am particularly proud of what we accomplished in merging OMT and the Booch method into what became the original version of the UML.

Jim will be staying in the Bay Area and will continue to write and lecture. Farewell, Jim, I wish you well.


Tuesday, September 19, 2006, posted by @ 4:10 PM
More Patterns
I've posted several dozen more patterns in the Handbook's catalog of patterns (remember that you'll need to be logged in to the Handbook site).


Friday, September 15, 2006, posted by @ 2:34 PM
John Backus
Last week, on behalf of the Computer History Museum, I had the opportunity to interview John Backus, who led a team at IBM in the 1950's to produce FORTRAN. Later in his career, John pioneered work in functional programming.

John is now in his 80's, and is still a very energetic and bright man. We met at his home in Ashland, Oregon, where he lives near one of his daughters following his wife's death a little over two years ago. The purpose of our interview was two fold: the Computer History Museum continues to conduct a variety of oral interviews, and the ACM is in the process of interviewing all its Turing Award winners (John received the Turing award in 1977).

Our interview covered a wealth of topics: his recollection of the FORTRAN project, his contributions to ALGOL, his experiences at IBM, his work on functional programming (and why it failed to achieve mainstream success), and his work with many other luminaries of the time. John reported that his FORTRAN work was not well received by IBM senior management at the time (Tom Watson senior in particular) but that Tom Watson junior really got the vision for the future of computing. Much of the FORTRAN work was so groundbreaking that his team had to discover and then solve a multitude of problems along the way. Interestingly, John noted that the assumptions for which FORTRAN was created - to see if one could write efficient programs in a high-order language - are really no longer valid, although the industry is still faced with a "cesspool of complexity," as he put it.

John is still a wired guy: he's got a Palm, a Tivo, and a Dell. Currently, he's working on publishing and distributing a book his wife was working on up until her death.


Friday, September 1, 2006, posted by @ 8:47 AM
Reboot Or How I Spent My Summer Vacation
That is, if you define "vacation" to include intense, non-monotonically decreasing pain, episodes of debilitating depression, and some cognitive and physical hiccups.

The good news, of course, is that which was surely going to kill me (namely, an aneurysm of the ascending aorta) has been expunged from my life. Thanks to the incredible care I received at the Mayo Clinic in Rochester, Minnesota, my demise is now more likely to come from being hit by a bus or via a tragic paper cut. As the only surviving male of the Booch lineage, since those immediately before me and after me have all died of the same condition, I owe my survival to early detection and the skill of the surgeons, physicians, nurses, and staff of the Mayo. The death of my nephew at age 20 was a gift of life to me, for it led to my being tested and that CT scan revealed I had the same condition. We were able to monitor the state of my aneurysm through 2005 and early 2006, and made the decision for elective open heart surgery at the end of May this year. This summer, as readers of this blog will know, I've been largely offline, recovering from surgery. Earlier this week, I returned to the Mayo Clinic for some follow up tests, which mark the beginning of the end of my recovery.

I had hoped for a bit more closure from those tests, but alas, that was not to be (and in that context I recall a speech by the mayor of Colorado Springs some years ago, in which he noted that, in this life, there is no closure). Physically, my surgical scars have pretty much healed although they'll never go away completely. The replacement of my aortic root took well, with no leakage or other such complications. There are unknowns with regard to my aortic valve. Technically, I underwent a modified Davis procedure, a valve-sparing replacement of the aortic root. This technique is still sufficiently new that the long term implications for my valve are unknown: will the tips of the valve wear out faster because they might rub against the Dacron graft? My left ventricle had begun to enlarge to compensate for the abnormal fluid dynamics inside my heart resulting from the aneurysm, but an echocardiogram earlier this week revealed that my left ventricle has shrunk (that's a good thing) and that my heart is actually operating more efficiently than before the surgery. I do still have some fluid around my heart that should have been absorbed by now, and that's a little concerning as it is indicative of some continuing inflammation of the heart, so I'm under yet another drug regimen to attack that issue. My endurance and upper body strength are not back to pre-surgery levels, which is not surprising given that for most of the summer as my sternum healed, I couldn't lift more than 10 pounds. Also, during this recovery, I lost over 20 pounds, mainly because I've lost much desire to eat.

Mentally, I'm pretty much back to normal, whatever that means for me. Being a person who lives in his head, the risk of cognitive decline was a very real concern, and the various studies from Duke University that I read before surgery gave me pause. During my recovery, I did have problems with concentration, the so-called pump head syndrome from being on a heart/lung machine for an extended period, but now I find that those problems are largely gone, and I'm pretty much back to where I was.

The emotional issues were the hardest. Although I knew in my head that depression after such major surgery is not uncommon, knowing it and experiencing it are very different things. If you are interested, the book Coping With Heart Surgery And Bypassing Depression by Carol Cohan, June Pimm, and James Jude provides the most honest discussion I've read about that element of the recovery process. Although I am an intellectual person, I'm also a whole emotional person as well. I have a propensity to melancholy as it is, and surgery then recovery greatly amplified those emotions. Happily, I am in a happier place again. Spiritually, this was period of growth and grace for me, having been surrounded by the love and care of family and friends, and - as Philippe Kruchten noted to me and as I blogged about before - having had many people in many parts of the worlds in many languages and in various systems of belief pulling for me.

It's been three months since my surgery, and I'm now starting to return to a rhythm of work. I'm back on my IBM email, and I'm starting to take on some work tasks. Most importantly, I'm using this reboot to be intentional about what I will take on and what I will shed: as I look at the long list of things I was doing before surgery, I'm stunned by how many of them just accumulated over time and really were not essential to helping me advance the practice. To that end, that I'll be returning my primary attention to the goals of the Handbook and following the evidence of existing architectures where it leads me.

I'm also starting to resume my travel. My first business trip will be to Oregon, where I'll be interviewing John Backus on behalf of the Computer History Museum, and from there I'll travel on to Ottawa to continue work with IBM Rational's Jazz project.

It's really good to be back.


Thursday, August 31, 2006, posted by @ 12:00 AM
Empty
No entries were posted this month, as I continue my recovery from open heart surgery.


Wednesday, July 26, 2006, posted by @ 11:25 AM
Status
It's been over a month since I last blogged. Yesterday was the eight week anniversary of my open heart surgery and although my incisions have healed, my body and spirit are not yet operating at 100%. I was able to start driving a couple of weeks ago (a most welcome increase in my level of independence) and can now start lifting items heavier than a gallon of milk. While it no longer hurts to cough or sneeze (indicating that my sternum has healed), it's clear that my body chemistry is still wacky. Most days my blood pressure runs around 100/60, but some days it drops to 80/50 and on those days I feel like a lump of protoplasm. Most days I'm emotionally up, but as all the physicians and literature warned me, some days I just have to crawl into my cave where I sit inconsolable.

I'm not yet back on my work email and thus I expect I've got a backlog of messages numbering in the tens of thousands. Please pardon me if i've been ignoring you, but slogging through my email is not my highest priority right now. This week, I've begun to return to research for the Handbook. As August rolls around, I'll start planning - but not yet doing - any other work activities. I hope to resume some level of travel in September.

So much has gone on in the software biz these past eight weeks: BillG has announced his retirement; Myspace.com has gained critical mass; Google continues to innovate with elements such as their windowing toolkit; IBM posted a solid quarter; Apple posted an incredible quarter; software mashups al la Web 2.0 technologies have gained traction. Still, so much is the same: developing, deploying, and operating complex software-intensive systems is still fundamentally hard; the world's current economic conditions still means doing even more with even less.

Thanks again to the people who have emailed me and snail-mailed me their greetings. I do look forward to jumping back into the fray and fighting the good fight as soon as I can.


Sunday, June 18, 2006, posted by @ 9:08 PM
Home Again
I'm finally back home. The mile high air smells sweeter, the sunsets appear brighter, and it feels sooooo good to be back in my own bed, unencumbered by the assorted wires and tubes that had been attached to various parts of my body.

As Bill had mentioned in an earlier blog, there were some complications that kept me at the Mayo Clinic longer than I'd first expected. Specifically, my body had stopped producing red blood cells and I had a couple of episodes of irregular heartbeats.

I have such a deep respect for the medical staff at the Mayo Clinic. Dr. Thoralf Sundt was my surgeon, and his team was augmented by Dr. Enrique Gongora (his resident), Dr. Naser Ammash (a cardiologist specializing in congenital heart disease), Dr. Rajiv Purithi (a hematologist), and an incredibly competent, professional, and caring nursing staff, into whose hands I placed my life. The Mayo Clinic is so well organized that as issues arose, world-class experts were brought in immediately for consultation. It is wonderful that such an institution exists, and its reputation is well-deserved.

I continue to be amazed by the ability of the human body to heal. I still have minor aches and pains and my endurance is far from where it was before the surgery, but every day I get just a little bit stronger. My doctors advise that my recovery will take around eight weeks. I can't drive, I can't lift more than five pounds, I don't yet have the focus to sit in front of a computer, and the simple act of sneezing is a painful event. Therefore I'm doing something I've not done for about thirty years, namely, taking a summer vacation. So that my body and spirit have time to heal properly, don't expect to see me re-engage in work until late summer.

I want to offer my thanks to the many people - some of whom I know, many of whom I don't - who held me and continue to hold me in their thoughts and prayers.


Thursday, June 8, 2006, posted by @ 1:28 PM
Out Of Hospital, Continuing Tests
(Bill Higgins posting on behalf of Grady)

Grady has moved out of the hospital and is in good spirits. He must remain in the area near the hospital due to continuing medical concerns and testing.

Grady would like to thank the people who wrote the software for the machines that kept him alive.

Everyone's prayers and well wishes are appreciated.


Monday, June 5, 2006, posted by @ 2:28 PM
Dealing With A Few Post-Surgery Issues
(Bill Higgins posting on behalf of Grady)

Grady is continuing the post-surgery recovery and has experienced some issues which have been dealt with.

He continues to be in good spirits and will be in the hospital longer than expected.

Our thoughts and prayers continue with Grady and his family.


Friday, June 2, 2006, posted by @ 2:20 PM
Post-Surgery Continues Normally
(Bill Higgins posting on behalf of Grady)

Grady continues to do well and is progressing through the normal post-surgery challenges.

The thoughts, prayers, and well wishes flowing in are gratefully received, welcomed and requested as he moves forward.


Thursday, June 1, 2006, posted by @ 5:52 PM
The Recovery Continues
(Bill Higgins posting on behalf of Grady)

The recovery continues on track and according to plan.

Grady is up and walking around more and enjoying lunch with the family. By now the pain killers from the surgery have worn off; in spite of this he is in great spirits and doing very well.

The personal comments on the blog are much appreciated; however Grady wishes the network at the hospital was much faster!


Wednesday, May 31, 2006, posted by @ 4:10 PM
Day After
(Bill Higgins posting on behalf of Grady)

The great news continues!

As you have seen Grady has been blogging from his hospital room and he is already out of ICU. His mobility is very good as he is sitting up, has walked the hallway, and is eating well.

You can use this blog site to provide comments as Grady is monitoring them.


Wednesday, May 31, 2006, posted by @ 2:36 AM
Inside The I.C.U.
This has to be a first. I am inside the ICU at Mayo clinic, just a few hours after my open heart surgery. Steve, my ICU registered nurse, is my eyes and fingers typing this blog. As you can tell by the very fact that I am blogging I am not dead yet.

Thanks to all of the prayers and good thoughts people have sent me around the world


Tuesday, May 30, 2006, posted by @ 7:55 PM
Post Op Update (Great News!)
(Bill Higgins again posting on behalf of Grady)

Great news!!!

Grady successfully went through a 6+ hour procedure today and is doing very well. The medical staff indicated that there were no surprises and that he was stable through the entire procedure. The aneurysm is gone and he is recovering well in ICU. Amazingly he is awake and communicating with his family already within hours of completing the surgery.

The family and friends express gratitude to all for the many prayers and thoughts on behalf of Grady.


Tuesday, May 30, 2006, posted by @ 10:38 AM
Pre Op Update
This is Bill Higgins, a colleague of Grady's at IBM Rational. Grady asked me to update his blog on the day of his heart procedure (today) and in the days following until he's ready to take it back over.

So far all is going well and he and Jan are in good spirits. They expect the procedure to start at 10am EST. They expect this to be a 5 or 6 hour procedure, and expect him to be back to ICU around 4PM EST.

More updates throughout the day.


Saturday, May 27, 2006, posted by @ 9:19 PM
A Clean Heart
I've returned home for the weekend from my pre op tests at the Mayo Clinic. The echocardiogram and angiogram revealed that my heart itself is in excellent shape for a person my age, which means that my upcoming surgery will be relatively straightforward in that it will only involve repairing my ascending aorta. This is good news in that it means that my surgery will only take 4-5 hours, with around one hour on the heart/lung machine, rather than more like 6 hours.

This will likely be my last blog post until after surgery. Bill Higgins will be blogging for me on the day of my surgery and immediately following, so as to update my status.

Thanks again to the many people who have written offering their thoughts and prayers.


Wednesday, May 24, 2006, posted by @ 9:15 PM
Pre Op
Although my surgery is not until Tuesday, I'm here at the Mayo Clinic for pre op tests so that my surgeon can form a map of my innards. Between CT scans, an echocardiogram, an angiogram, and a chest X-ray, there is little more that one can learn short of cutting me open.

Philippe Kruchten sent me a nice email from ICSE 2006 in China. He reported that the very international gang there is praying for me in various languages and systems of beliefs.

I'm in good spirits, and I'm thoroughly annoying all the medical techs here with my questions about the equipment they are using, their thoughts on the UI of each, and the software anomalies they've noticed. The Mayo is one very wired place.


Monday, May 22, 2006, posted by @ 11:23 AM
Pause
I've spent the past several days pausing all the work in my life, in preparation for my surgery on May 30th. Thank you again to all who have written me with their prayers and good thoughts. I feel confident that I'll get through this well, and be back later this summer to continue my work on the Handbook.

Mike Devlin, co-founder of Rational, is among those who wrote. Mike reports that he's still in Alaska, and has started Redhawk Productions, a video company shooting independent documentaries.


Tuesday, May 16, 2006, posted by @ 8:10 AM
Connections
First, a great big thank you to the many people who have sent me email and/or posted comments to my blog, wishing me well. Having the love of family and so many friends and colleagues is very comforting.

My surgery has been scheduled for Tuesday, May 30th at the Mayo Clinic in Rochester. I'll travel to the Clinic late next week for my pre op tests, home again over the weekend, then back out the day before surgery. Surgery will take approximately 4-5 hours after which I'll go to ICU and - amazingly - be sitting up and talking that evening. The next day I'll be taken to the step down unit, then after that 3-4 more days in the hospital, then 4 or so days in the area after my release from the hospital to ensure that there are no complications. Once I return home, it will take about 4-6 more weeks until I'll be back to normal.

Well, whatever normal means for me.

This week, I'm in in the process of shutting down work and otherwise preparing for surgery and a month and a half of recovery. I'm in the process of working out a mechanism to have someone blog my condition, so that we aren't flooded with calls.

Yesterday, two things happened that demonstrated a lovely synchronicity. First, I had lunch with Phillip Wogman, interim president of the Iliff School of Theology. Dr. Wogman is a noted author and Christian ethicist, and was also the spiritual advisor to President Bill Clinton. The main purpose of our meeting was to discuss opportunities for leveraging Iliff on the the Web, but then our conversation turned to my surgery. President Clinton had open heart surgery not too long ago, and so Phillip was able to tell me about how Bill coped. Hey, if Bill can do it, so can I!

Second, later in the day, I was burning and pillaging through my masses of email, and noted one from IBM's Mayo Clinic team, asking if I'd meet with Mayo's IT committee. IBM has already carried out some important collaborations with Mayo, including medical imaging and clinical genomics, both of which I have personally benefited by. I offhandedly suggested we could conduct a meeting in the ICU. Actually, I've told them I'll be happy to work with this team after I've recovered. It will be sort of a payback for me.


Friday, May 12, 2006, posted by @ 7:38 AM
Change Of Plans
It appears that my days as a body double for Tom Cruise are slowly coming to an end.

I blogged about this matter in late 2005/early 2005 but to recap, in December of 2004 I was diagnosed with an aneurysm of the ascending aorta. This is the very thing that killed my father and his brother (both while in their late 70s) and my nephew (just before he turned 21). My sister (6 years older than I am) was diagnosed with it as well. Needless to say, there's a strong familial relationship at play here (and for that reason I'm now engaged in some genetic studies). There are no overt symptoms of an aneurysm except when it dissects, at which time the primary symptom is death which is not very predictive. Happily, there are non-intrusive means of monitoring my condition using computed tomography (CT). Evidence indicates that when the absolute size of the aortic deformation reaches a certain point or when the rate of change of the deformation is sufficiently high, the risk of surgery becomes less than the risk of the aneurysm rupturing. From an engineering perspective, it's all wrapped up in Laplace's Law.

When I was first diagnosed with this aneurysm, we set out to located the best surgeon for my case, and selected Dr. Sundt at the Mayo Clinic. 2005 was a bit of an emotional roller coaster, but in the four visits I took there last year, my aneurysm was stable. As such, this necessitated no fundamental lifestyle changes. I'm a healthy guy otherwise, although given that I've likely been living with this condition my entire life, it's amazing that USAFA didn't' kill me. I did cut off my international travel for the year, and I only had to stop weight-lifting and other vigorous exercise and take on a beta blocker to radically lower my blood pressure. I decided to stay away from all mean people, too. Life is too short for that crap.

Earlier this week, I went back to the Mayo Clinic for an 8 month check up. While the absolute size of my aneurysm has not hit the critical point, the rate of change of the deformation has. Indeed, in examining the CT scans with the doctor, even to my untrained eye you can see that the aneurysm is now irregularly deformed which raises red flags in my engineering mind: you can just see the stress points in the aorta. Now, the other very good news is that this condition is treatable. Sometime in the next month or two, I'll undergo open heart surgery at which time the deformed bits of my aorta will be replaced. Open heart surgery is a common thing these days, but what makes this surgery a bit more risky is that I'll likely have to undergo circulatory arrest, which means that my body will be shut down for a while (the bit of the aorta in question is just above the heart and just below where the blood supply splits off to the brain). There is also a slight risk of cognitive loss, and being a guy who lives in his head, this is something my doctor and I don't take lightly. Nonetheless, the alternative is certain death, and that's no option for I have a long list of things I'd like to do before I shuffle off this mortal coil.

I'm not fearful of death or of the operation. My faith tells me that, in the grand scheme of things, this is but an instant in eternity. I approach the situation with confidence in the medical staff who will treat me and in the love of my family and friends who surround me.

In the coming days, I'll be shutting down all the activities in my life, with the expectation that after my body has been rebooted, I'll be able to return to normalcy sometime the second half of this summer.


Sunday, May 7, 2006, posted by @ 9:49 PM
John Backus
Len Shustek, chairman of the board of trustees of the Computer History Museum contacted me a few days ago, asking if I'd be willing to conduct an interview of John Backus for the Museum and the ACM. Of course, I jumped at the chance, and have since made contact with John to arrange an interview with him at his home later this summer. John invented FORTRAN and, later in his career, function-level programming. John received the Turing Award in 1977.

There's a lovely sense of closure in this for me. The first programming language I learned was FORTRAN, work that John carried out at IBM, and now here I am a part of this same amazing IBM organization. During my career, I've had the privilege of meeting and in some cases directly working with a number of the great programming language designers, including Grace Murray Hopper (COBOL), Jean Ichbiah (Ada), Bjarne Stroustrup (C++), Anders Hejlsberg (C#), James Gosling (Java), and Gregor Kiczeles (AspectJ).

To prepare for my interview with John, I've started to pour over some of his original papers and other interviews of him over the years. If you have a question that you think I should ask John, email me.


Friday, May 5, 2006, posted by @ 8:11 PM
More On Aperture
Shortly after I posted my last blog entry, I received an email from a kind soul (who shall remain anonymous) noting that, while my analysis of the architectural issues of Aperture were apparently right on, there exists some controversy in the blogosphere regarding the ThinkSecret link I'd posted earlier. I've no desire to add to the rumors about the back story of Aperture including issues of functionality and the development team - I'm an architect, not a gossip columnist - and so to offer a fair and balanced treatment of the subject, offer up this link and that one sent to me by the aforementioned reader (plus another story I came across).

In short, Aperture still lives, but there seems to be consensus that something dark permeates its architecture.


Friday, May 5, 2006, posted by @ 1:21 PM
A Failure Of Architecture
Don't get me wrong: I'm a rabid Mac fan. I've pretty much purged everything Windows from my life, and run my world only on Macs and Linux appliances. Therefore, I'm reticent in posting this message about Apple's Aperture photo editing software, because I prefer to celebrate successful software rather than cast stones at bad software. However, there was a statement in this report that caught my eye: "Aperture's problems stem not from any particular area that can be easily remedied but rather from the application's entire underlying architecture." I've not studied this particular piece of software personally, but the report goes on to allude to fundamental problems with the system's image processing pipeline.

One of the fundamental values of an development process that grows a system's architecture through the incremental and iterative release of executables is that it forces you to attack technical risk. It is very hard to make a system do what it is suppose to do if the underlying architecture is broken, and trying to patch that architecture to do so will only make things worse.


Friday, May 5, 2006, posted by @ 8:48 AM
Architecture Products
I met Michael Russell at the Systems and Software Technology Conference earlier this week, and he pointed me to this article of his. I particularly like how Michael describes architecture as serving to answer questions.


Thursday, May 4, 2006, posted by @ 9:12 PM
Interview
John Simmonds has an interview of me here.


Thursday, May 4, 2006, posted by @ 3:38 PM
Blogger Gathering
The IBM Rational Software Development Conference will be held at the Swan and Dolphin Resort at Walt Disney World in Orlando, Florida, on June 4-8, 2006. That Tuesday night (June 6th) from 6PM to 8PM, I'll be hosting a blogger gathering at the lobby bar. We'll talk about blogging at IBM, Rational activities, industry gossip, and anything else that you'd like to cover.
Best of all, the first round of drinks is on me.


Wednesday, May 3, 2006, posted by @ 4:40 PM
Computer Science Education
A recent article in Computerworld speaks about ways to revitalize computer science education. In this article, Gary Anthes does a nice job (i.e. he asks some very good questions) interviewing Kenneth Birman (professor of computer science at Cornell), Randal Bryant (dean of the school of computer science at CMU), John Canny (chairman of the computer science department of UC Berkeley), Jaime Carbonell (director of the Language Technology Institute at CMU), Bernard Chazelle (professor of computer science at Princeton), and William Dally (chairman of the computer science department at Stanford).

Now that I'm 614 months old, I really do hope that I'm not turning into a curmudgeon, but there was something about the responses from this distinguished group that bothered me. I slept on the article and my response, but consistent with my apparent current curmudgeonly trajectory, I felt compelled to reply. Just to be clear about my world view, my perspective comes from industry although I am very invested in academia, for this is the pipeline through which the next generations of software professionals will come. I'm involved in IBM's university relations program, I've met with the department chairs of most of the computer science programs in the University of California system, I've lectured at Oxford, Imperial College and elsewhere in Europe, I'm on the board at Neumont University, I've volunteered at the computer classes at a local high school, I've been asked to keynote next year's ACM SIGCSE conference. I really do want academia to be wildly successful in breeding the next generation of innovators. However, Gary's article reinforced to me the wide gulf that still exists between academia and industry.

In many of my public lectures, I talk about the elements that separate vision from execution (this is wrapped up in my discussion about the limits of software; you'll need to be logged in to my Handbook site to follow that link). Some of these elements are purely the domain of computer science: the laws of physics, the laws of software, the challenge of algorithms, the difficulty of distribution and concurrency. Some of these elements are purely the domain of software engineering: problems of functionality, impact of economics, the influence of politics. A few of these elements lie at the intersection of computer science and software engineering: the problems of design and the problems of organization. So, in all fairness, the academics polled by Gary are focused on computer science, while I care more about software engineering and the development, deployment, and operation of real systems. These are two subtly different worlds, but at their point of overlap, they serve to address a common landscape.

I violently agree with Birman, Chazelle, and Carbonell about the importance of computer science. As I often quote Bjarne Stroustrup, our civilization runs on software; software has changed the way individuals, organizations, companies, countries, entire economies, and modern civilizations move through the world. For this reason, I find Canny's declaration that computers aren't very valuable and that IT does very little to be out of touch with reality. That being said, I do not disagree with him that much more is possible - this is why our industry needs dreamers and why the computer sciences can and should be a vibrant field. Gary next asks this group where they think the next most interesting advancements will come from, and it is this set of replies that display the wide gulf I see. Chazelle mentions algorithms; Bryant names statistical methods; Birman talks about trustworthy computing; Carbonell mentions artificial intelligence. While these are all noble areas of study, they do not strike at the fundamental points of pain that I see in industry that separates vision from execution. Chazelle and Bryant both refer to Google as instances of value from their point of view. While I don't deny the importance of contributions such as the Page Rank algorithm or various statistical methods to the Google way, Google delivers an effective solution to the market only partly because of these technologies, but primarily because they have addressed the systems engineering issues of providing good enough answers over a massive data set, and that involves some very interesting innovations in distribution, load balancing, and massive parallelism. As for trustworthy computing and SOA, I think that Birman is right on, although from my world view the former involves far more human issues than computer science issues to solve and as for the latter issue, he is already several years behind: most interesting enterprises (and if you expand this to the military world) are already incredibly interoperable and heterogeneous, so it's not an issue that it's going to be a big thing, it already is a big thing for industry.

As for the end of Moore's Law, I think that Canny offers some really profound remarks. Our industry is at an economic cusp, and more computational cycles is no longer what it's all about. What disappointed me about all of the answers to this question, however, is what was not said: the chip manufacturers, from Intel to AMD and even IBM have spoken, saying that it's no longer about frequency, but now it's becoming all about intimate concurrency and thus symmetrical and asymmetrical multiple processors on a chip. As I've also said before publicly, the average developer does not - does not - have as a core competency the ability to build secure, concurrent, and distributed systems. From a computer science perspective, we've made only incremental advances in the past 20 or 30 years regarding mechanisms for reasoning about concurrency (and don't get me started on security), yet none of these topics were mentioned. Again, these are things that, from industry, cry out for help.

Gary then asks how computer science can be made more attractive. I like Canny's answer that we've neglected the social aspects of computer science. Chazelle also has a good response regarding outsourcing, but I think that's always a convenient excuse: one can never outsource design or innovation, and it is those creative regions that are at the heart of the fun of this industry. Surprisingly, no one mentions that the upstream pipeline is seriously broken: many students reach colleges already turned off on the computer sciences because they are discouraged in high school (and women in particular are discouraged), or they've received such a shallow education on the power and potential of computing that they think they already know everything they need to know. I cannot count the times parents have come to me saying "oh, my son/daughter knows computers too" and when I probe them on what they know, it's usually limited to downloading music, successfully installing the latest Microsoft security patch, or helping their computer-impaired parents carry out some task on their PC. We aren't teaching the inner beauty and fun of software.

Gary picks up on this point when he relays Chazelle's comment about the need for a computer science popularizer such as Feynman and Carl Sagan as examples from other fields. I chuckled at Dally's suggestion of creating a prime time TV show, not out of derision but because he's probably right for this current generation. Can we get a programmer on Beauty and the Geek? Don't forget the UK sitcom The IT Crowd or the syndicated cartoon User Friendly. I was amused that of the names suggested as potential candidates for a popularizer, they all from from inside academia. While I don't deny the charisma and expertise of folks such as Raj Reddy or Nicholas Negroponte, these are a bit incestuous choices, and neglect the work of Dick Gabriel (Patterns of Software), David Harel (Computers, Ltd.), and - although dated - Tracy Kidder (The Soul of a New Machine). One might even argue that the ACM and IEEE should set up marketing programs to the general public, promoting the computer sciences as cool. Well, one might argue that, although I wouldn't: the great advances in physics, chemistry, biology and the other hard sciences didn't come about because they were wildly promoted, they came about because, as Feynman said, of the joy of finding things out. There is incredible underlying beauty in software, and teaching that is something that I think universities could do to encourage this field (thus my early blog posts about the need for code reading courses, and the work I've done at the Computer History Museum on the preservation of classic software).

So Gary, thank you for your article, for it got me thinking. To each of the folks interviewed therein, know that I greatly respect your various programs and acknowledge the good things that have come out of them - but I think that much more can be done.


Wednesday, May 3, 2006, posted by @ 7:27 AM
Observations From The Road
It's spring, which means that my travel has kicked in to high gear. Managing my travel schedule is perhaps the most challenging time management problem I have. I am grateful that there are so many people who want a piece of me, but currently I'm staring at a five page document that enumerates all the requests for my time and it's frightening in its scope. I could easily schedule myself to travel every week for the next two years and still not exhaust the list. That list contains all the usual places in the United States both inside and mostly outside IBM, but it also contains requests from every populated continent on earth. Don't get me wrong for I love to travel and seeing the world and the many different ways of living has been a humbling and life-expanding journey, but I have to say no more than I wish I had to.

Last week, IBM Rational hosted an executive seminar in Phoenix wherein we flew in about one hundred CTOish types from around the world and from various industries. I gave a talk on best practices in software development, which covered my usual shtick about architecture and process. A good time was had by all over the three days in the sun. This week, I just returned from Salt Lake City where I attended the DoD's Systems and Software Technology Conference and was presented with the Stevens Award. Among other things, I had a very engaging discussion with Kelly Miller, principal director of engineering for the NSA.

Given where I am in my life and career, I have nothing left to prove and thus not only try to lead from the perspective of my world view, I'm also not timid when it comes to telling the emperor he has no clothes. To that end, I think I managed to at annoy/make uncomfortable many of the generals and program managers in the crowd. Specifically, I discussed three topics that were likely very controversial and certainly not the common group think. First, I noted that while I find architecture to be an essential element in building quality software, standards such as the DoDAF were dangerous, because when used (all to easily) improperly, they gave you the illusion you were doing architecture, without really doing any real architecture at all. I made those same comments at a lecture in Washington, DC recently, and unbeknownst to me, two of the primary authors of the DoDAF were in the crowd. Needless to say, we had a lively discussion after my talk, and suffice it to say that the ongoing work of a UML profile for DoDAF is a good thing plus I'm trying to do what I can to assist with the next instantiation of DoDAF. Second, there was some chatter at the SSTC over systems engineer and the degree to which software issues should be considered germane. I made it clear that it would be insane to deprecate any discussion of software issues, for from the perspective of all interesting contemporary systems, the software therein was essential to the functionality of that system and moreover was the source of most of that system's technical risks. Third, I made my usual observation between project success and a high CMM rating: there is only an accidental correlation. Project success in a commercial sense can be measured in capitalistic terms, namely, the return on investment; project success in a government/military sense can be measured in terms of carrying out the assigned mission in a timely, efficient, and predictable fashion. CMMI measures process maturity. These are very different things, for I've seen CMMI 5 shops that are economically unsuccessful and so risk aversive as to be totally lacking in innovation. From my experience, CMMI 3 is an honorable place to be, and anything more gets you into serious organizational psychological issues of number envy. It's this last topic that led to the frosty reception I received from a general who prided himself on running a CMM 5 shop. Still, I stand behind what reality tells me.


Thursday, April 20, 2006, posted by @ 9:34 AM
TagCloud
To aid navigation, I've added a tagcloud to the bottom of my primary blog page.


Thursday, April 13, 2006, posted by @ 3:50 PM
IBM Architecture Sites
If you are new to this blog, don't forget to check out the developerWorks architecture portal and the related IT architecture forum.


Thursday, April 13, 2006, posted by @ 3:46 PM
Subcollections
Because the content of the Handbook is growing, I've added an advanced search mechanism to restrict searches to particular parts of the site.

As I'd previously blogged, I'm using a Google search appliance to index the site, which made it trivial to add subcollections over which to search.


Wednesday, April 12, 2006, posted by @ 2:03 PM
Software Engineering Jobs
This Slashdot post points to a CNN article suggesting that software engineering is one of the best jobs in America.

Speaking of jobs, among other things I'm on the advisory board for Neumont University, a relatively new institution focused on software engineering. I'm delighted to report that their first graduating class - and this is even before graduation in a few weeks - has a 100% placement at the $60,000+ salary range. To me, that's a sign of a healthy market and that Neumont is doing some very good things with their project-based approached to education.


Wednesday, April 12, 2006, posted by @ 8:04 AM
Gossip
This Slashdot post points to a CNN article suggesting that software engineering is one of the best jobs in America.

Speaking of jobs, among other things I'm on the advisory board for Neumont University, a relatively new institution focused on software engineering. I'm delighted to report that their first graduating class - and this is even before graduation in a few weeks - has a 100% placement at the $60,000+ salary range. To me, that's a sign of a healthy market and that Neumont is doing some very good things with their project-based approached to education.
For those of you who like to follow the human side of our industry, check out Valleywag.

This Slashdot post points to a CNN article suggesting that software engineering is one of the best jobs in America.

Speaking of jobs, among other things I'm on the advisory board for Neumont University, a relatively new institution focused on software engineering. I'm delighted to report that their first graduating class - and this is even before graduation in a few weeks - has a 100% placement at the $60,000+ salary range. To me, that's a sign of a healthy market and that Neumont is doing some very good things with their project-based approached to education.


Monday, April 10, 2006, posted by @ 3:52 PM
More Retro Computing
As mentioned in Electronic Engineering Times (and then circulated to the software collection committee at the Computer History Museum), check out Harry Porter's relay computer.


Monday, April 3, 2006, posted by @ 9:22 PM
Celebrating The Moments
Dick Gabriel passed this on to the Hillside Group:

I got this from a colleague: "As you may have noted, on Wednesday, at two minutes and three secondsafter 1:00 in the morning, the time and date will be 01:02:03 04/05/06. Unless you are very young, or live a very long time, this is probablyyour one chance to observe this date. Whoop it up."


Monday, April 3, 2006, posted by @ 4:38 PM
Quote Of The Day
Jim Barton, cofounder and CTO of Tivo notes that "one of the greatest challenges of designing a computer system is in making sure the system itself is 'invisible' to the user" (as quoted in ACM Queue, vol. 4, no. 3).


Monday, April 3, 2006, posted by @ 4:10 PM
RetroNET
Here's an interesting project: RetroNET is an attempt to reproduce the early ARPANET.

I received my first email address in 1980.


Monday, April 3, 2006, posted by @ 2:20 PM
Graffiti Robot
Here's a video clip that caught my eye. Hektor is based on the scriptograher plugin for Adobe Illustrator.


Monday, April 3, 2006, posted by @ 9:12 AM
Travel
Amazingly, I don't travel again for two whole weeks! Having been on an airplane every week the past four weeks was a bit tedious. Don't get me wrong: I love traveling, seeing the world, working with projects, but I have to force myself to say no to more requests than to which I say yes, else I'd be traveling every day of every week of every month of every year. It's easy to agree to urgent things, but my battle has been with fending off all those urgent things so that I have time to do important things.


Tuesday, March 28, 2006, posted by @ 10:43 AM
Cap
Caspar Weinberger died today at the grand age of 88. A few years ago, I appeared on a television program hosted by Weinberger. We met before the program and engaged in some small talk, but when we went on air, Caspar introduced me as "Grant Pooch."


Tuesday, March 28, 2006, posted by @ 9:04 AM
Postmortem Of Microsoft Vista
I struggled with this post. On the one hand, I'm not trying to cast stones at Microsoft; on the other hand, there are some deep lessons to be learned from Microsoft's slip of Vista. Every organization attempting to deliver a continuous product stream in the face of considerable legacy code and a large installed base will confront these same issues. Those who break through these issues will persist; those who do not will collapse.

Mini-Microsoft, a Microsoft developer, recently posted his reaction to the Vista slip. A number of other (anonymous) Microsoft developers posted additional comments. While many of these postings are full of noise and exhibit angst suggestive of considerable organizational frustration, if you blow past those you'll see some interesting trends: the lack of architectural governance, uncontrolled feature creep, insufficient testing, heavyweight processes, lack of trust in the engineering staff. I particularly liked one comment: "Want to see Vista ship? Get rid of 90% of the process that goes between writing the code and getting it checked in." Collectively, these comments suggest that the root problems are not technical, but rather orbit the region of design and organization in my characterization of the limits of software.

IBM is a company that has experienced a near-death experience and has thus far been able to break through to the other side; Microsoft seems be going through a bit of a mid-life crisis; Google is perhaps best characterized as an exuberant adolescent who has not yet discovered his mortality or limitations.

That's not to disparage any of these organizations: the fact that this marketplace has such a diverse set of organizational styles at various levels of maturity is actually the sign of a vibrant industry.


Thursday, March 23, 2006, posted by @ 8:58 PM
Game Developer Conference
I just finished my gig at the Game Developers Conference in San Jose.

What a kick this was! The gaming community is incredibly vibrant and full of innovation. A number of people and journalists (ok, journalists are people too, please don't get me wrong) asked me why IBM had such a large presence and why I was there. As for IBM, do recall that the cell is what powers every new generation console, so not only is there the obvious hardware play, there's also a tools play and a data center play (consider the computational power needed to support a large online multiplayer game). As for me, gaming architectures are themselves quite interesting and worthy of study, plus this is a community that's at an inflection point of embracing the fundamentals of sound software engineering practice, encompassing architecture, patterns, process and all the other topics of which I'm passionate.

In addition, this is one of the few software-intensive domains wherein fun is an essential use case.


Thursday, March 16, 2006, posted by @ 11:39 PM
The Next Big Thing
IBM's own Nick Donofrio recently commented on the next big thing.


Sunday, March 12, 2006, posted by @ 11:32 AM
OO Quarks
Dennis Hamilton has an interesting commentary on Deborah Armstrong's equally interesting article; you'll find it here.


Saturday, March 11, 2006, posted by @ 10:54 AM
ObjectiveView
Mark Collings-Cope pointed me to his e-magazine.


Saturday, March 11, 2006, posted by @ 8:42 AM
SOA Best Practices
I just returned from some work with the SEI in Pittsburgh and then in Washington, DC where I conducted a number of customer visits primarily focusing on service oriented architecture.

Comments about hunting with Dick go over really, really well with the DC crowd.

My take on the whole SOA scene is a bit edgier than most that I've seen. Too much of the press about SOA makes it look like it's the best thing since punched cards. SOA will apparently not only transform your organization and make you more agile and innovative, but your teenagers will start talking to you and you'll become a better lover. Or a better shot if your name happens to be Dick. Furthermore, if you follow many of these pitches, it appears that you can do so with hardly any pain: just scrape your existing assets, plant services here, there, and yonder, wire them together and suddenly you'll be virtualized, automated, and serviced.

What rubbish.

SOA is, first and foremost, about the A part of the acronym (architecture). Organizations who already have a solid approach to architecture will likely do reasonably well with SOA; organizations who already have a broken architecture and/or a broken architectural governance practice will likely fail with SOA and then blame SOA on all their problems.

If you follow the history of web-centric systems, services (with a small s) are a very logical progression of web mechanisms. From a technical perspective, SOA is nothing revolutionary, it's evolutionary. BTW, in this context, the concept of an enterprise service bus can be easily explained as a very elegant and simple pattern for location independence/message translation.

There are places where SOA is suitable, and places where it is not. SOA, from my experience, is one specific architectural style appropriate for systems of systems wherein some but not necessarily all of those systems are already web-centric. This is an important point: SOA is a useful but insufficient mechanism for architectural decomposition. Some would suggest that SOA is all you need. This is seriously wrong.

To that end, services (with a small s) are best suited to relatively large grained/low frequency interactions rather than small grained/high frequency interactions. For that latter situation, other, more traditional, mechanisms of RPC and/or message passing are better suited.

A serious gap in the current state of the art of services is that we simply don't know how to specify quality of service very well at all. It's one thing to wire together services a la National Instrument's LabView, it's another if there are quality/performance/reliability/security/dependability issues for each of those channels and each of those ports.

There are also services with a big S: there is a conceptual kind of service that is not manifest as a pure WSDL service but rather something else. Think of a service as a port on a system, with that port having a well-defined interface consisting of a vocabulary of classes, a protocol, and a particular set of messages and resulting behavior. It is a good thing that you can conceptualize a system as a web of services, some of which are Services and some of which are, well, services.

Going back to the A part of SOA, the issue then is one of abstraction, separation of concerns, and all the usual fundamentals of architecture. I've seen some folks suggest creating an SOA from the bottom up: look at a silo, identify the potential services, and publish them, then weave a system together from them. This is in essence technology first. In my experience, this is a recipe for disaster and/or serious over-engineering. You've got to start with the scenarios/business needs, play those out against the existing/new systems, zero in on the points of tangency, and there plan a flag for harvesting a meaningful service. These styles, and their resulting costs/benefits, are rarely discussed.

In a couple of weeks, I'm off to a very different venue, where I'll be giving a talk at the Game Developer's Conference in San Jose. Developing software for games is big business, and this community is starting to discover that the fundamentals are important: you can't build an enduring a business just by hiring bright people, throwing them in a room together, and hoping that they'll do great things.

But, enough about Google...


Saturday, March 4, 2006, posted by @ 4:02 PM
How Far We've Come
The other day, Steve Mellor asked this question of the IEEE Software board, and I replied:

The past decade, we've learned how to build systems of scale and utility that we could only then dream of; the past decade, we've come to a place where so many individuals, communities, nations, and societies rely upon the products of our labor that our industry has irreversibly changed the face of humanity.

In the coming decade, both of these statements will remain true


Thursday, March 2, 2006, posted by @ 11:38 PM
Patterns, Patterns, And More Patterns
I've finished cataloging close to 900 patterns here (you'll need to be logged in to the Handbook).


Thursday, March 2, 2006, posted by @ 5:30 PM
On Design
The aforementioned Dick Gabriel posed a question to the Hillside Group: what is design? Here's my reply to him:

As a noun, design is the named (although sometimes unnameable) structure or behavior of an system whose presence resolves or contributes to the resolution of a force or forces on that system. A design thus represents one point in a potential decision space. A design may be singular (representing a leaf decision) or it may be collective (representing a set of other decisions).

As a verb, design is the activity of making such decisions. Given a large set of forces, a relatively malleable set of materials, and a large landscape upon which to play, the resulting decision space may be large and complex. As such, there is a science associated with design (empirical analysis can point us to optimal regions or exact points in this design space) as well as an art (within the degrees of freedom that range beyond an empirical decision; there are opportunities for elegance, beauty, simplicity, novelty, and cleverness).

A few related terms:

All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.

In any given genre of systems, the same designs are found again and again. Insofar as we can name these designs and codify them in a relatively general fashion, they are the patterns of that domain.

Sometimes we will speak of a particular style (or school) of design. A style is a named collection of a set of designs that is observably identifiable from other styles.


Friday, February 24, 2006, posted by @ 6:13 PM
Difference Engine
I wonder if this machine will run Vista?


Friday, February 24, 2006, posted by @ 4:05 PM
More IBM Rational DNA
Last week, I reported on a number of Rationalites who went on to become CEOs of various companies. I overlooked Doug Earl, who co-founded Palladio along with Jon Hopkins, and is now at Serlio Software, which was started by Doug and three others.


Friday, February 24, 2006, posted by @ 3:28 PM
People, People Who Need People
According to this report, there are twice as many people in the world today as when I was born.

With regard to global warming, has anyone considered the wattage of 6.5 billion humans and the contribution that makes to the environment? That in turn reminds me of this scientific discussion (which has absolutely nothing to do with software, of course, but it's still interesting to ponder).


Friday, February 24, 2006, posted by @ 3:11 PM
Software Architecture Kit
I recently produced some podcasts for the IBM software architect kit


Friday, February 24, 2006, posted by @ 6:37 AM
Choosing A Framework
There's an interesting thread at Slashdot regarding choosing a Web client framework.

A decade or so ago, extreme innovation took place in languages; now it's happening in frameworks, largely (IMHO) because a) the cost of entry and the barriers to success of a new language are much higher today and b) our collective consciousness has not yet self-selected the optimal abstractions relevant to building systems on the edges of a Web-centric system.


Thursday, February 23, 2006, posted by @ 10:15 AM
A Sure Sign Of the End of Civilization As We Know It
The theme from Sesame Street, in Klingon.


Wednesday, February 22, 2006, posted by @ 7:42 PM
Patterns of Software
I've just finished rereading Dick Gabriel's book, Patterns of Software. Dick is one of the most lucid :-), most human, most fully alive programmers I've had the pleasure of knowing (that sounded so final; don't worry, he's not dead yet). The quality of his writing is something to which I aspire. Take this passage from page 232:

The salt sweet tears, the edgy new love affair, the first birth, the exhaustion falling on exhilaration, frustration, and anger, the kicked heart of rejection, and all the world of life finds its way into the lines of code, the designs, the architectures and frameworks we find essential to running our system of life in the political and economic world.


Wednesday, February 22, 2006, posted by @ 10:45 AM
Organizational Patterns
As I continue to form a catalog of patterns for the Handbook, I've been pouring through references I'd previously read, including Jim Coplien and Neil Harrison's Organizational Patterns of Agile Software Development.

This is such a brilliant book; if you don't have a copy, amazon one right now (every noun can be transformed into a verb, as in "I just googled my boss."). I didn't realize until I read their work a second time how much wise advice they offer about architecture.

One quote from the book that's stuck with me all day: "Programming is the act of deciding now what will happen in the future."


Monday, February 20, 2006, posted by @ 10:40 PM
Upcoming Events
I'm in the midst of preparing for several upcoming events. In a couple of weeks, I'll be at the SEI in Pittsburgh and then will travel on to Washington, DC for some seminars and customer work. After that, I'll be speaking at Game Developer's Conference in San Jose...a far cry from the typical enterprise systems one usually finds associated with IBM, but then again, IBM's supplying the chip for every next gen. game console.


Friday, February 17, 2006, posted by @ 8:38 AM
IBM Rational DNA
Earlier this week I posted an entry about Joe Marasco, CEO of Ravenflow. He wrote back, observing that there were quite a few people who grew up in the Rational culture then later moved on to become CEOs of other software companies. Joe and Dave Bernstein collected the following list (which I've put in alphabetical order):
Other former Rationalites who later became CEOs include Rob Dickerson, Adam Frankl, and Pamela Roussos. Additionally, other former Rationalites who are not CEOs but still hold key positions in their companies include Robert Gersten (Hyperion), Burton Goldfield (Hyperion), Rich Reitman (Adobe), Tom Schultz (Codefast) and several others. Serving on several boards of directors include former Rationalites Bob Bond and John Lovitt.

Finally, two other notable former Rationalites include Vinny Smith (at Rational for only a few months but now CEO of Quest) and Reed Hastings (founder of Pure Software which was acquired by Rational, and now founder and CEO of Netflix).


Friday, February 17, 2006, posted by @ 6:59 AM
Data Management Services
IBM has announced that we'll radically bump up our investment in data management services.


Thursday, February 16, 2006, posted by @ 10:15 AM
VoIP
I'm on the verge of making the switch. I currently have a T1, an ISDN line, and three analog lines running into my home, but VoIP is looking more and more attractive, bringing all but the ISDN line into one package at roughly 1/3 my current cost (if you include the least of the frame relay line, Internet access, voice lines, and long distance). It's a wonder that the telcos are making any money at all.

Has anyone else out there made the switch and have some war stories to offer?


Thursday, February 16, 2006, posted by @ 10:11 AM
Survey On Software Architecture Workstyles
Pedro Campos at the University of Madeira has a survey on software architecture workstyles. Feel free to contribute.


Thursday, February 16, 2006, posted by @ 9:27 AM
Plop, Plop, Fizz, Fizz
The call for papers for PLOP 2006 is out; all you pattern authors out there take note.

This PLOP is not that plop (although you have to admit it's a snappy name for a conference).


Wednesday, February 15, 2006, posted by @ 4:09 PM
Ravenflow
Joe, former Rationalite and now a CEO, reminded me of the name change of his company from N8 Systems to Ravenflow.


Wednesday, February 15, 2006, posted by @ 9:49 AM
Projection
Again from Slashdot, a report on a tiny laser projector.


Tuesday, February 14, 2006, posted by @ 12:49 AM
Google/IBM
Via Slashdot, this article in which Chris DiBona, Google's open source program manager, speaks of his admiration for how IBM has approached open source.

I agree with you, Chris!


Tuesday, February 14, 2006, posted by @ 10:40 AM
Yahoo Patterns
A dear colleague just pointed me to these patterns from Yahoo.


Tuesday, February 14, 2006, posted by @ 9:39 AM
URL Must Die
Apologies to all of you Dixie Chicks fans for co-opting one of their song titles.

I've had this gnawing feeling for sometime that explicitly visible URLs are annoying, distracting, evil - and yet another sign of the bones of the Web sticking through. They should be banished from sight of the average user.

The growing use of Web services will accelerate this banishment, I suspect. When one app. talks to another, as a user you really don't care how it does so, and thus touching a service will simply be part of the plumbing. Nowadays, that plumbing is overt, and you see it every time you enter an address in a browser or roll your cursor over a link and see the URL flash in your browser's status bar. Simple URLs are memorable (http://www.ibm.com) but most extended ones are ugly and meaningless to the average user.

No idea why I'm ranting about this nit today, except just to make a prediction that URLs will likely go the way of old telephone numbers, such as FLeetwood5-1273.


Tuesday, February 14, 2006, posted by @ 9:29 AM
Security
A colleague who runs a modest but growing financial business called me in a panic the other day. It seems that he replaced his IT support person with a new contractor. New guy comes in, begins working on the system, then midway through discovers he's been locked out. The owner, not having any other administrative account, even though he has physical access to the server, is shut out. I suggested there were one of two possibilities: incompetence on the part of the new guy, or something sinister on the part of the old.

Turns out it was the latter: old guy, disgruntled over having been replaced, logs in to the system remotely while new guy is working, changes all the passwords, then essentially blackmails the owner, offering to release the system for a certain sum of money.

Ouch.

A number of lessons here. Putting all your trust in one person who can bring down your system yet is not an vested member of your team is dangerous. Not having alternative means of getting control of your system is a Bad Thing. Managing the transition among IT staff is critical. Having mechanisms in place to ensure an orderly change of command, immediately shutting out people who are no longer authorized to access your system, is important.


Friday, February 10, 2006, posted by @ 12:28 AM
The IT Crowd
Check out this Web sitcom from the UK.

Another one of my favorite satires of the high tech world is User Friendly.


Friday, February 10, 2006, posted by @ 9:28 AM
A Potpourri of Sites
I've collected several sites worth sharing.

The IBM cell has been in the news lately; not only it is the dominant platform for every new generation game console, it's also getting play in the fields of medical electronics and defense computing. Other cool IBM technology in the news lately involves our developments with speech technology. Speaking of play, the recent announcement of Pixar and Disney points out the fundamental shift in the entertainment industry caused by the presence of software-enabled businesses; this kind of deal would have been unheard of a decade or so ago. Speaking of shifts (don't you just love my segues?), this one a victim of technology, Western Union has decided to stop sending telegrams. Other much-lamented victims of changing economics include Sony, who has decided to stop production of their robotic dog, the Aibo, and Konica Minolta, who has gotten out of the camera market.

Turning my attention to the needs of all you ubergeeks out there, check out Andrew Carol's implementation of the Babbage Difference Engine, made entirely of Legos. Are you lusting after some Google stats? Check out this study on web authoring statistics. Need a code warrior/are you a code warrior with spare cycles? Check out this site that brings together both. Interested in the latest buzz in Silicon Valley? Check out ValleyWag. Finally, if you long for a nostalgic look at the web, check out the very first banner ad on the Web.


Wednesday, February 8, 2006, posted by @ 1:54 PM
Borland
The startling news out of Borland is that they've decided to divest their IDE business.

Wow.

I'll follow the repercussions of this seismic event over the coming days.


Monday, February 6, 2006, posted by @ 4:07 PM
Gallery Of Software Architecture
I've added 15 more examples to my gallery of software architecture (you'll need to be logged in to the Handbook).


Friday, February 3, 2006, posted by @ 8:18 AM
IBM Advertising
DigiBarn, an online computer museum, has a collection of IBM advertising from 1948 to 1954.


Thursday, February 2, 2006, posted by @ 11:10 PM
Waterfall And Patterns
Last week I'd made mention of the forthcoming conference, Waterfall 2006. I'm delighted to report that our very own Per Kroll has had a paper accepted at this august conference.

For those of you following the Handbook, I've now cataloged slightly more than 400 patterns.


Thursday, February 2, 2006, posted by @ 6:56 AM
Why I Hate Frameworks
Check out this wonderful discussion of the topic. Hats off to my dear colleague Philippe who sent this my way.


Tuesday, January 31, 2006, posted by @ 8:23 PM
New Toy
I have a relaxing evening planned: I'll be installing an expansion kit for my network attached storage appliance, which I'm upgrading from one to two terabytes. Currently, I've only been able to run daily incremental backups on my most critical files, but if I include images of all the disks on my network, it comes to just about 1.5TB. Expanding my NAS gives me a little more breathing room, although I can only do so if I configure the appliance to RAID0 (but then, I also have a streaming tape drive that I use to back up my backup monthly).

So far, the uptime on my NAS appliance and my firewall, all of which are Linux boxes in disguise, is around - let's see, um - two years (save for one reboot to install a new OS).

I just love technology that, after I install it, simply disappears from view.


Tuesday, January 31, 2006, posted by @ 7:49 AM
Naked Objects
A colleague pointed me to this site on the Naked Objects Framework. I wish I could have seen the look on the face of the government official with whom the founders submitted the legal paperwork to register the Naked Objects Group in the UK.

Seriously, though, this framework seems to have some real traction in Ireland. I honestly know little about the work myself, but I've begun to remedy that by ordering Richard and Robert's book from Amazon.


Monday, January 30, 2006, posted by @ 10:24 AM
IBM Happenings
As noted on Slashdot, IBM has released a free version of DB2 as well as some very interesting speech recognition technology.


Friday, January 27, 2006, posted by @ 2:01 PM
Waterfall Process
Be sure to register for Waterfall 2006, to be held in early April in upstate New York. I'm particularly looking forward to Bank's keynote on Super Model Driven Architecture.

Thank you, Joe and Philippe, for bringing this important conference to my attention.


Tuesday, January 24, 2006, posted by @ 9:19 PM
On Classifying Patterns And Architectural Styles
The past few days I've been cataloguing several hundred architectural and design patterns (you'll need to be logged in to the Handbook to follow that link). A metapattern is emerging, with a number of clusters of related patterns becoming obvious. It's a little early to say so definitively, but my current hypothesis is that groupings of these clusters can be aligned along each of the views in Philippe's 4+1 model view; in other words, there are logical patterns, process patterns, implementation patterns, deployment patterns, and use case patterns.

Most of the patterns I've cataloged thus far are solidly design patterns, meaning that they represent some named society of classes or components that interact. Some of the patterns I've studied are classified by their authors as architectural patterns, but I'm rapidly coming to the conclusion that that's the wrong name for this genre: they are in every case really a pattern associated with one view of a system, not its entire architecture (although they are larger than a society). I'm not sure what to call them.

The other issue I'm wrestling with is the distinction between an architectural pattern and an architectural style. We don't yet have a lot of good named instances of either, although we seem to be able to smell them when they are nearby. For example, "Web-centric" is a candidate style, for it implies a collection of interlocking view-specific patterns (in terms of deployment, it's a classic distributed system involving application servers; in terms of components, it involves static components such as HTML, dynamic ones such as DHTML, and operational ones such as beans and relational databases; logically, there are a plethora of design patterns commonly at play). DoDAF is another candidate style. Or is it an architectural pattern? Perhaps it simply a documentation standard? One can argue effectively for each of these positions.

By the way, this very issue is one that a working group of the IASA is tackling right now, in its metamodel work.

It seems all too often in our industry we chase a methodology by starting with some broad ideas and deducing instances. What I'm trying to do here is the reverse, working inductively by starting with the instances and identifying the underlying general principles.


Monday, January 23, 2006, posted by @ 3:53 PM
Happy Anniversary
According to this report, it's the 20th anniversary of the first PC virus.

Living on a Mac, however, I've never had to spend a moment worrying about it. :-)


Wednesday, January 18, 2006, posted by @ 5:34 PM
More Patterns
For those of you tracking this, I now have over 200 patterns cataloged here (you'll need to be logged in to the Handbook).


Tuesday, January 17, 2006, posted by @ 10:12 AM
Use Cases And Amazon
I responded to an email from Amazon, requesting my approval for a delay in shipment, and was delighted and amused to note that the URL contained the parameter "useCase=approve." Tis nice to see that the developers at my my favorite online store use use cases :-).


Monday, January 16, 2006, posted by @ 11:36 AM
Starting A New Year
'Tis a cold and snowy day here in Colorado. I'm back from my latest travels, and am back to updating the patterns catalog in the Handbook (remember that you'll have to be logged in to visit the catalog).


Friday, December 30, 2005, posted by @ 9:35 AM
Future Of Databases
One of the insanely cool things about working at IBM is the ability to connect with some insanely bright people. The past few days, I've had an exchange with Bruce Lindsay, another IBM Fellow and a major contributor to the evolution of RDBM technology, standards, and products. We were responding to a customer who had wondered about the future of databases. I am distinctly not an expert in this space, so I asked Bruce who replied (and I'm paraphrasing him here) thusly:

Database management systems will have to support ACID SOA calls. Applications will exploit multiple data repositories. Careful attention to authentication and security will be needed. Distributed two-phase commit will be avoided by recoverable messaging to applications (via services) that consult and modify the database and send a recoverable reply. Database size will become a non-issue. We'll see lots of low-latency asynchronous replication of reference data among databases serving various applications and their associated service interfaces. It's unclear how documents will integrate with database management systems: there may be a content manager in-between. Finally, XML will probably not replace all other document formats. Files will not disappear from application implementations.


Thursday, December 29, 2005, posted by @ 9:10 AM
Cleaning House
I like to start the year with an empty inbox, so for the past few days I've been ruthlessly slashing and deleting my email. I'm happy to report that - at least for this one, brief moment in time - all my email accounts are zeroed out.

Please don't email me your congratulations.

While house cleaning, I came across a number of random yet interesting links I'd collected from various sources over the past few months, which I now offer up for your enjoyment.

I've written before about the legal and ethical forces that weigh upon some types of software; now where is this more apparent in the recent controversy regarding NSA's wiretapping. Whichever side of the issue you take, the presence of software-intensive systems is the only reason that this work is even possible. Speaking of security, Apple has a patent for tamper-resistent code I suppose in the near future Eclipse will come with child-proof caps. Speaking of the bad guys for which the aforementioned wiretapping is directed, one of the deep problems - both on and off the battlefield - is understanding what your friends as well as your foes are saying: thus enter a universal translator, yet another device brought to you by software. Oh, regarding the battlefield, GPS is essential to doing war these days, but more importantly it's found its way into a myriad of commercial applications. Realizing that GPS is fundamentally a military system with residual commercial benefits that are not necessarily guaranteed at all times, the European Community has started its GPS-equivalent, the Galileo project. While these and many other software-intensive systems continue their slow yet deliberate oozing into the interstitial spaces of society, the impact of software failures becomes greater, as evident in this list of spectacular bugs. In contrast, software-intensive systems have the potential to catalyze incredible social change, as with the one laptop per child program.

The fact that a $100 laptop is even possible is testimony to the vibrancy of the personal computer market, as this market history illustrates; check out this interview of Woz one of the great innovators in this space. Continuing with this historical theme, for a blast from the past check out the wayback machine and the very first browser. If you are gamer, you can relive your past playing games from the 80's. There's an interesting dance between developments in games and developments in computer graphics and animation; for you film fans out there, you too can explore the role of software in contemporary special effects and animation.

Zipping to the future, a number of folks have offered up their predictions for the coming years in areas as specific as user interfaces and as general as basic technology trends. Of course, Microsoft has some things to say on the topic and now even Google has its own metarules that drive its future. Speaking of Google, check out their searching zeitgeist for 2005.

Since a large percentage of visitors to my site are programmers, check out one programmer's bookshelf plus this personal essay from a programmer on how to become a programmer. If you are more visual, there's also a movie about programmers. If you are itching to read some code this day, you'll find more than enough to satisfy your urges at this site. Finally, while interest in pure computer sciences degrees may be on the decline, there's no lack of demand for those with pragmatic development skills. As I've said many times before, the fundamentals never go out of style. While you are dreaming, you may ask what a gazillionire geek does with his/her money: well there's the incomparable Bill and Melinda Gates Foundation, and a number of techies are looking to jumpstart commercial space travel.

Ah space: the final frontier. If you are a trekker as am I, you'll enjoy this parody, Star Wreck, or this more serious prequel. If reality is not good enough for you, you can always find a second life here.

For those of you who have been following my blog, thank you; I'll be back blogging after the new year (I am curious if any of you are reading my blog via this RSS device). In the meantime, do note that I'm only one of many IBM bloggers.


Tuesday, December 20, 2005, posted by @ 8:48 PM
Ajax Patterns
Check out this site by Michael Mahemoff; there's some wonderful work developing here.


Tuesday, December 20, 2005, posted by @ 7:54 AM
Pattern Format
Dennnis Hamilton pointed me to this interesting format for documenting a pattern.


Sunday, December 18, 2005, posted by @ 7:32 AM
Tim's Blog
Tim Berners-Lee has a blog.


Friday, December 16, 2005, posted by @ 11:42 AM
Patterns
I've entered 100+ design patterns for the Handbook in this section, which permits you to sort and search them in various ways. I need to finish the definition of their kinds, and I have a few hundred more to input, so stay tuned. There are no architectural patterns yet to expose, so please continue to be patient with me.

I just noticed that I have two comments on the developerWorks mirror of my blog. To those posters, please note that I've gotten your comments, and will post a response here shortly.


Tuesday, December 13, 2005, posted by @ 10:30 AM
Domain-Specific Languages
Sigh.

It's sad how one can be misquoted and then for that misquote to be picked up by someone else with both then making a spin of the events to support their position. How silly is that.

Juha-Pekka Tovanen quoted me from my OOPSLA panel as saying that "when the project gets closer to the delivery you normally throw away UML models." Juha-Pekka then went on to extol the virtues of DSM - which one it was not clear - declaring how every other artifact, from executables to test cases, documentation, and configurations, could be derived. Harry Pierson picked up on Juha-Pekka's post and in turn Harry's was picked up by Steve Cook.

Let me be excruciatingly clear: Over the years I have been consistent in saying that in a) the most important artifact of any software development organization is executable code and yet b) modeling is essential in constructing such executables. This is because c) models help us reason about, specify, construct, and document software-intensive systems at levels of abstraction that transcend source code (and the UML is the accepted open standard for doing so). That being said, it is a pragmatic reality that d) some models are essential (and should be retained) while others are simply scaffolding (and should be discarded). I have never said and do not say now that one should throw away all models, as Juha-Pekka then Harry then Steve imply.

While I'm ranting, Juha-Pekka, Harry, and Steve, would you please point me to just one DSM out there in production (meaning that toy languages are profoundly uninteresting to me) that does all that Juha-Pekka says it can do (namely, to generate the complete executables, test cases, documentation and configuration from the domain specific models, making it such that I never have to touch much less look at source code)?


Tuesday, December 13, 2005, posted by @ 8:53 AM
Describing Patterns (Update)
In my previous post I neglected to mention that the patterns catalog of the Handbook is now operational.


Tuesday, December 13, 2005, posted by @ 7:38 AM
Describing Patterns
As my previous post indicated, I'm working on the Handbook site to make it better suited for organizing all the patterns I've collected from external sources. Among those sources, there's a considerable diversity in the way that people document patterns (not unlike the diversity in the way people document architectures, as Paul Clements surveys in Documenting Software Architectures). In her book The Patterns Handbook, Linda Rising describes a number of these approaches including those from Alexander, the GoF, PLOP, Coplien, Beck, and AGCS. My research has uncovered subtly different approaches from Fowler, Kircher, Schmidt, Buschmann, Trowbridge, and many others.

How then to document the patterns I'm uncovering in my archeological digs?

This is the issue with which I'm currently struggling. This is yet another incremental and iterative activity: I won't feel comfortable until after I've documented all of the architectural patterns I've discovered. For now, however, I'm studying these other sources, extracting a canonical form for documenting patterns, and trying to document a few new patterns against this form.

In the meantime, for your reading pleasure while I munch on these issues, here's the structure of a few of these forms:
    AGCS (form, aliases, problem, context, forces, solution, resulting context, rationale, known uses, related patterns, sketch, author, date, references, keywords, example) Beck (story) Beck and Johnson (preconditions, problem, constraints, solution) Buschmann/Schmidt/Kircher (description, example, context, problem, solution, structure, dynamics, implementation, variants, example resolved, known uses, consequences, see also, credits) Coplien (problem, forces, solution) Fowler (how it works, when to use it, example) GoF (name, kind, intent, also known as, motivation, applicability, structure, participants, collaborations, consequences, implementation, sample code, known uses, related patterns) Grand (synopsis, context, forces, solution, consequences, implementation, code example, related patterns) Kerievsky (motivation, mechanics, example) Patternshare (view, role, aspect, summary, context, problem, solution, related patterns, publication, attribution) PLOP (problem, solution, context, forces) Pont (context, problem, background, scoluion, hardware resource implications, reliability and safety implications, portability, overall strengths and weaknesses, related patterns and alternative solutions, example, further reading) Portland (forces, solution, name, part of) Sane (title, abstract, intent, motivation, solution, trade-offs) Trowbridge (context, problem, forces, solution, approach, design considerations, example, resulting context, benefits, liabilities, testing considerations, security considerations, operational considerations, known uses, related patterns)
Please feel free to email me if you have a particular form you've found useful.


Saturday, December 10, 2005, posted by @ 9:15 AM
Patterns Catalog
If you've been poking around the Handbook site, you may have stumbled into an emerging section on patterns. Just as I have started collecting a gallery of software architecture and a code reading list, in the patterns section I've begun a collection of patterns. My intent in this new section is to write up the architectural patterns I've discovered in my archeological digs as well as to provide a brief reference to many of the classic patterns that have been discovered by others and that are in common usage (such as those documented in various books and sites). Yes, at the moment this site has dangling links (namely, to specific pattern instances) but that's because a) being a low-budget operation I don't have a testing server and therefore b) as I finish writing the various beans behind the site, they are posted to the active site and thus c) what you see is what I've just written. So, be patient with me; I'll finish getting this region of the site stable first and then I'll continue to populate it.

BTW, it's refreshing to code on an early, snowy morning, a steaming cup of Starbucks at my side and my favorite Internet radio station playing (CelticMelt). Life is good. :-)


Friday, December 9, 2005, posted by @ 7:22 AM
Go Air Force!
Being a grad of the United States Air Force Academy, I was fascinated to see this report in Slashdot about the Air Force's new mission statement which now includes defending US interests not only in space but in cyberspace.

Pause for dramatic effect.

The article goes on to define cyberspace as including "network security, data transmission, and the sharing of information." A couple of years ago, I met with the Chief Technical Officer of the AF, and he reported to me that his greatest (technical) concern was the security of the several hundreds of thousands of DoD computers accessible on the public Web, a declaration that immediately brought to my mind the 1983 movie WarGames.


Thursday, December 8, 2005, posted by @ 11:18 PM
Code Reading
On November 22nd, I blogged about creating a code reading list. Alan Grosskurth and Michael Smith wrote to suggest that I include gmail and the C++ Standard Template Library. Note that I've already started gallery of software architecture that's part of the Handbook.

Diomidis Spinellis, author of Code Reading also wrote and told me of a sequel to his book called Code Quality which should be available in March 2006.


Wednesday, December 7, 2005, posted by @ 4:24 PM
Coding For The Holidays
For some reason, my posting about the eBay developer challenge fell off the developerWorks mirror of my blog (it's still in my archives however). Anyway, check it out, it's a very cool idea.

I'm currently brain dead. I've been in a review since 6 AM this morning planning Rational's work with IBM Research for 2006, and we walked though a couple of dozen very cool proposals for our consideration. I must admit that this is one of the things I love doing here: helping plant the seeds and nourish these research teams is one way we ensure a steady stream of software engineering innovation. I've been on the phone with folks from China, India, Israel, the the US today: the breadth and depth of the IBM Research talent pool is staggering.

And I would have blogged that even if I were not an IBMer. :-)


Monday, December 5, 2005, posted by @ 9:24 PM
Gifts For Geeks
If you need to buy a fellow geek a gift for Christmas, do consider this DVD.


Tuesday, November 29, 2005, posted by @ 9:35 PM
Cell Processor
As reported on Slashdot IBM has released a simulator for the cell broadband engine processor on alphaWorks along with an interview of the IBM Mambo team.


Tuesday, November 29, 2005, posted by @ 4:41 PM
Legal Forces
As another example of legal forces that may shape a software-intensive system, check out this latest regarding patents that have impacted eBay in a case that's headed to the Supreme Court.


Tuesday, November 29, 2005, posted by @ 3:44 PM
On The Edges
In my previous posting, I spoke of innovation on the edge of an enterprise. IBMer Greg Hamilton pointed me to a great example of such an activity, as described in this tutorial on developing applications with web services and the eBay SDK. By the way, eBay is running a developer challenge.


Tuesday, November 29, 2005, posted by @ 2:10 PM
SOA
A reader emailed me asking my take on service-oriented architectures. developerWorks has launched a portal addressing this very topic, and you can find the latest here. Duplicating what I wrote there:

In the enterprise space, a considerable amount of innovation is happening in two dimensions: on the edges of the enterprise and in the spaces between enterprises. On the edges, we see energy being spent in frameworks that live above middleware (domain-independent ones, such as Ajax, as well as domain-specific ones, aligned around specific industries) and those that work in conjunction with devices [classical mobile devices and devices with Radio Frequency Identification (RFID) tags]. In the spaces between, we see the formation of systems of systems (both legacy and new systems).

In the context of such Web-centric systems, services have proven to be an essential mechanism in both dimensions. On the edges, services deliver behavior in a manner that transcends the underlying technology. In the spaces, services provide a powerful means of semantically rich communication between systems of various kinds.

That being said, services are an important but insufficient mechanism for the construction of systems. This statement is a gross simplification, but in general, services are less well-suited for high-frequency or very small-grained connections. Furthermore, services are certainly not the only mechanism of decomposition suitable for the architecture of individual systems.

On the edges, services deliver behavior in a manner than transcends the underlying technology. In the spaces, services provide a powerful means of semantically rich communication between systems of various kinds.


Tuesday, November 29, 2005, posted by @ 12:56 AM
Making Water Not Wet
I love what Bruce Schneier is quoted as saying in this article: "Making digital files not copyable is like making water not wet.".

This is a wicked problem (delivering music and video digitally while preserving IP rights of said media) and I don't see any resolution in sight any time soon.


Monday, November 28, 2005, posted by @ 4:41 PM
References
I've added a few new books to the Handbook's references.


Monday, November 28, 2005, posted by @ 1:56 PM
Architectural Thinking
A review of Microsoft's Visual Studio 2005 lists the features its reviewer deems important for collaborative development, and notes that "The single biggest missing link in IT development today, platform aside, is the lack of proper architectural thinking in application development."

Needless to say, I agree. :-) However, one must be clear on what "architectural thinking" means. For me, it encompasses three things: design that is intentional, the presence of a process that grows a system's architecture through the delivery of executable artifacts, and a focus on design and architectural patterns. Architecture for architecture's sake is generally always the sign of a dysfunctional project, but architecture as a mechanism for governing the development process and for managing the evolution of a system once deployed is a good thing.


Sunday, November 27, 2005, posted by @ 3:06 AM
John Vlissides
It is with great sadness that I report the death of John Vlissides who passed away last Thursday, having been diagnosed with brain cancer in early 2004. John was one of the Gang of Four and a brilliant researcher, but above all a kind and gentle man. He will be missed.

John is survived by his wife and children. Dru Ann wants to create a scrapbook for their children in celebration of John's life, so if you knew John and have an anecdote to share, please visit this Wiki.


Tuesday, November 22, 2005, posted by @ 11:24 AM
Code Reading
On October 3rd, I'd blogged about Diomidis Spinellis' delightful book, Code Reading. Dimodis emailed me this morning and among other things told me of a course he's been teaching the past two years, titled "Software Comprehension and Maintenance." He also pointed me to last year's projects here.

For some time, I've been pushing the idea of (code) reading lists for software engineering, not unlike what one finds for literature studies. I was happy to hear that this is exactly what Dimodis has done in his course. Building on the work in his book, he requires students to study real code from a variety of open source projects.

I've encouraged this concept with other academics, but what better way to lead than to demonstrate by example. In addition to the gallery of software architecture I've started on my Handbook site, I'm starting to collect a code reading list which I'll soon post. At the top of my list is the source code for MacPaint, which - thanks to Bill Atkinson and Andy Hertzfeld - is now sitting at the Computer History Museum (along with a multi-hour interview I conducted with Bill and Andy regarding MacPaint). There's a handshake deal with Apple permitting the Museum to release the code to the public, but we are apparently still waiting for Steve to say the magical words to the legal folks at Apple so that they can cut a suitable letter. Stay posted: this really is a beautiful piece of code.

Do any of you have examples you think I should include in this list? Please email me if you do.


Tuesday, November 22, 2005, posted by @ 2:36 AM
On Creating A Handbook Of Software Architecture
I've placed the invited talks I gave at OOPSLA and WICSA in the blog artifacts.


Monday, November 21, 2005, posted by @ 10:44 AM
The Location Of Truth
At the recent WICSA, a debate was held on the topic "which matters more: the architecture as designed or the one the running system happens to have?"

A bit flippantly, I realize, I remarked in my keynote that this was a silly topic. It's akin to asking what matters more to water, oxygen or hydrogen?

In short, my take is that both matter, depending on what you are trying to do. Remember my personal bias: the primary artifact of any meaningful software development organization is running software - not documentation, not models, not even source code. However, my personal bias continues to suggest that this does not mean these other artifacts are irrelevant - source code is the ultimate human-readable statement of the running system, models represent abstractions of that system from various points of view (most models should be tossed and only some retrained) and documentation serves to capture design decisions not reflected in the code.

That last phrase demands some explanation, for it's the key to why I also suggest that the architecture as designed is important. In every interesting system there exists a software design entropy, meaning that there is a loss of design information from vision to execution. In other words, there are some design decisions that are not directly observable from the running system or its source code. We know how to recover some design patterns automatically from source code; we don't yet know how to recover higher level patterns automatically from source code, largely because a) we haven't codified all the patterns we are trying to recover and b) its a wickedly hard problem to identify the signature of such higher-level patterns from the noise of the source code. For this reason, the architecture as designed is significant, if and only if what we mean by architecture encompasses the significant design decisions that are not recoverable directly from the source code.

This balance is also key to avoiding the over-engineering of a system's architecture. If your design can be expressed in code, do it; if it can't then model it first.


Friday, November 18, 2005, posted by @ 10:38 AM
Bad Architectures
After my invited talk at OOPSLA, a gentleman asked me if I intended to document failures as well as successes. I replied that my intent was to limit my study to successful systems, because I wanted my work to provide good examples - not antipatterns - of good architecture. In retrospect, I realize that my answer was quite inadequate.

As I state in my goals for the Handbook, I'm "codifying the architecture of a large collection of interesting software-intensive systems" where the operative word here is "interesting:" architecturally interesting, interesting to the marketplace, and interesting to me personally. An obvious question this raises is if there is a correlation between a successful system and a good architecture. It is true that all of the hyperproductive projects I've encountered tend to develop their systems by growing an architecture through the incremental and iterative release of executables. However, it is also true that the resulting architectures are never by any means perfect. Rather, they are always good enough and so full of the warts, nicks, blemishes, and discontinuities you'd expect to result from any pragmatic engineering activity. In fact, I've seen some beautiful architectures that were commercially a failure (building a better mousetrap does not necessarily mean the world will beat a path to your doorstep) and I've seen a number of overwhelming commercial successes whose architectures are nothing to write home about (but do note that those organizations usually suffer for it in the next generation of systems).

So, what distinguishes a "good" architecture from a "bad" one? I don't have enough hard data to say conclusively, but it is fair to say that good architectures are simpler, more understandable, more resilient to change, looser, more regular, and more full of patterns then ones that are bad. Now, if you read that last sentence carefully, you'll realize that some of the attributes I list are emergent (i.e. more resilient to change) while others are more fundamental (i.e. more regular and full of patterns). I know a good architecture when I see it; I know a bad one when I see it too. But I'm not at a point where I'm self-aware enough to tell you how I know the difference.


Thursday, November 17, 2005, posted by @ 9:47 AM
Intimate Concurrency
As my blog reported earlier this week, I've returned from six weeks of back to back travel. Happily, I plan to stay put for the rest of the year so that I can get back to the Handbook. In my travels, I particularly enjoyed returning to OOPSLA, having been away from the conference for several years. This was also my first year at WICSA where it was wonderful spending time with a number of the pioneers in software architecture. Speaking of pioneers, while in Vancouver, I also had a chance to meet up with my dear colleague Philippe Kruchten.

From these travels, I've accumulated a number of architectural issues I've been remiss in blogging about, so here I begin, in random order.

The term intimate computing has popped up from time to time, mainly in the context of human/machine interaction. Ray Kurzweil has taken this concept to it's natural conclusion in his latest book, The Singularity Is Near.

Lately, I've been working with a number of customers using IBM's cell processor, a nine-processor shared memory chip. As I've said many times, the average developer does not have as a core competency the ability to write distributed, concurrent, and secure systems. This is not meant to be a reflection on the skills of any individual or group of developers: writing correctly functioning multi-threaded systems is intrinsically hard. Most developers are experienced in single-threaded applications; even on the Web which is inherently distributed, one can merrily ignore issues of concurrency, simply because the disparate threads and processes are hidden in lower layers of abstractions. In such loosely-coupled distributed systems, this is as it should be. However, when you have tightly-coupled processors arranged around shared memory such as with the cell, you have a very different problem. Exploiting the power of such multiprocessor systems puts the problems of concurrency squarely in the developer's face, a programming problem I call intimate concurrency. In this space, the classical problems of resource locking, race conditions, deadlock, livelock, and starvation are ever-present. Compounding the problem is the fact that software tooling is lagging the hardware: there are only a handful of good tools out there to help one reason about the behavior of intimate concurrency.

What is the proper engineering reaction to this issue? First, you can ignore it by keeping everything single-threaded (but you miss out exploiting the theoretical computational capacity). Second, you can hide it. Hiding can happen in a number of ways: in the language (this is what the X10 programming language is all about), in patterns (see the work at the Center for Distributed Object Computing at Washington University, or in middleware.

Is concurrency a legitimate architectural issue? Absolutely. Furthermore, returning to fundamentals, having a clear separation of concerns between the logical view of a system and its process view is a good thing, which is why in my architecture metamodel I separate these two, following Philippe's 4+1 model view.


Thursday, November 17, 2005, posted by @ 7:45 AM
Saving The Net
As first reported on Slashdot, Doc Searls has posted a very thoughtful article on the future of control of the Net.


Wednesday, November 16, 2005, posted by @ 1:05 PM
IBM And Architecture
IBM has launched an architecture area on developerWorks.


Monday, November 14, 2005, posted by @ 11:05 AM
Back Home
I'm finally back from a brutal six week travel schedule. Among other things, I gave an invited talk at OOPSLA and keynoted WICSA (both on the topic of software architecture), and worked with a variety of customers. I have a pile of events to report, but let me triage my email, vmail, snail mail.


Tuesday, October 18, 2005, posted by @ 8:21 PM
Best Practices
We've made a major update to the Rational Unified Process' best practices, which you can read about here.


Tuesday, October 18, 2005, posted by @ 11:52 AM
Ward Cunningham
Some months ago, I was surprised when dear colleague Ward Cunningham joined Microsoft. I was doubly surprised to learn that Ward has just resigned from Micosoft to join the Eclipse Foundation.


Friday, October 14, 2005, posted by @ 11:12 PM
Dating Design Patterns
I'm up late preparing for my invited talk at OOPSLA, wherein I'll be speaking about developing the Handbook. While collecting my notes, I picked up Dating Design Patterns by Solveig Haugland from my bookshelf and found this in the front matter:

It's funny how dating maps so well to software architecture. We think it's kind of creepy, actually.

Software architecture is often compared to civil architecture, but this is definitely one of the more creative analogies I've seen.


Friday, October 14, 2005, posted by @ 8:42 PM
Gallery
I've added a number of diagrams to the gallery of software architecture in the Handbook. I've been collecting these diagrams by sampling the literature and capturing the various ways that different architects describe their systems. In all fairness, these do not represent complete architectural descriptions of any given system, but are just one diagram from one view.


Thursday, October 13, 2005, posted by @ 1:39 PM
Free Software
Sean Egan, the main developer of the open IM client Gaim was just hired by Google. I love what Sean says on his site regarding open source software:

One of the most important freedoms of free software is the freedom to study how a program works. This freedom has allowed me to build my knowledge upon the efforts of other, more experienced developers before me.

Well said, Sean. This is one of the reasons I'm developing the Handbook, to enable developers to build upon architectures that have proven themselves.


Thursday, October 13, 2005, posted by @ 7:51 AM
The Architecture of Google
I've been digging into Google's architecture; Stanford's archives offer some very interesting reading.

I love the Web.


Wednesday, October 12, 2005, posted by @ 3:30 PM
Archeology
I found this buried deeply in my pile of Handbook notes.

Archeologists were working in Italy. They dug down one meter and found strands of copper wire. After much research, they determined that during the time of Leonardo da Vinci, the Italians already had a phone system.

Not to be outdone, another team of archeologists working in Greece dug two down two meters and found strands of glass. They concluded, after much extensive research and debate, that there was a fiber-optic communications system at the time of Aristotle

A third team of archeologists working in Israel were digging as well, and at five meters they found neither copper wire nor glass strands. From this they concluded that, at the time of Joshua, the indigenous population had an extensive wireless network.


Saturday, October 8, 2005, posted by @ 10:19 AM
Eolas Patent
Dennis Hamilton sent me this link offering a balanced treatment of the latest with the Eolas patent.


Friday, October 7, 2005, posted by @ 8:55 PM
Another Architecture Blogger
John Troxel is blogger who writes about architecture, and is associated with the DenverJUG OOA SIG, for those of you in the local area.


Monday, October 3, 2005, posted by @ 4:02 PM
On Writing
I love writing, the pure creative act of taking words and assembling them in interesting patterns so as to communicate facts, ideas, and passions in an engaging and approachable manner. One of the reasons I blog is simply to exercise my writing skills: as with any ability, it only improves through exercise and practice, and so I advise my colleagues who want to write to, well, simply write, so that they might develop their own voice.

I admire good writers, which is one a reason why I read so much. I've never read a novel by Stephen King - I find his plots to be silly - but I admire his passion and skill for writing, which he describes in On Writing (the only work by Stephen King I've read; in this work, by the way, he relates how writing saved him after his serious accident a few years ago). Norman Mailer's The Spooky Art, William Zinsser's On Writing Well, and Christopher Volger's The Writer's Journey are other good works. In the software space, there's Joel Spolsky's The Best Software Writing and Diomidis Spinellis' Code Reading.

I've mentioned this before, but no one bit on my comment: in universities, there are fine arts courses in reading the classics, but I've yet to see a technical course in selected readings of software source code.

Another contemporary writer I admire is Aaron Sorkin. You may love or hate The West Wing, but Mr. Sorkin created powerful dialog for that series.


Monday, October 3, 2005, posted by @ 10:37 AM
More On The Web And The Law
For some reason, this report gave me the chills. You can read the FCC policy statement here; in particular, check out page three of that report where it reads "to encourage broadband deployment and preserve and promote the open and interconnected nature of the public Internet, consumers are entitled to run applications and use services of their choice, subject to the needs of law enforcement." The emphasis is mine, and that's the bit that's disturbing; the previous point in the FCC report makes it clear that "consumers are entitled to access the lawful Internet content of their choice" (well, that applies if and only if you are in the US, as there has been recent precedence that such entitlement is not granted in certain other countries), but the "subject to the needs of law enforcement" clause seems to me to be a rather curious addendum to the right of choice and free access.

As always, these opinions are mine and do not necessarily represent that of any other person, living or dead, or of my employer, so if you've got an issue with my world view, email me.


Monday, October 3, 2005, posted by @ 9:59 AM
A New Point of View
For you film fans, check out this remix of West Side Story as a horror flick, The Shining as a chick flick, and Titanic as a scary movie.


Monday, October 3, 2005, posted by @ 9:21 AM
OOPSLA BoF
OOPSLA is coming up in the next couple of weeks. It's literally been years since I've attended this conference, although I was a regular attendee it its early days. I'll be participating on a panel with Kent Beck, Larry Constantine, Brian Henderson-Sellers, Steve McConnell, Rebecca Wirfs-Brock, and Ed Yourdon plus conducting an invited talk and a birds of a feather on the Handbook. To entice your presence, here's the description of the BoF:

Ten years ago, Bruce Andersen led a series of workshops at OOPSLA to develop a handbook of object-oriented software. The world has changed a wee bit since then: objects are mainstream, patterns are too, and then there's this little thing called the Web that seems to have caught on.

In short, it's time revisit the handbook.

It is a sign of maturity for any given architectural discipline when we can name, study, and apply the patterns relevant to that domain. In civil engineering, one can study the fundamental elements of architecture in works that expose and compare common architectural styles. Similarly, in chemical engineering, mechanical engineering, electrical engineering, and now even genomic engineering, there exist libraries of common patterns that have proven themselves useful in practice. Unfortunately, no such architectural reference yet exists for software-intensive systems. Although the patterns community has pioneered the vocabulary of design patterns through the work of the Hillside Group and the Gang of Four (in their seminal book, Design Patterns), our industry has no parallel to the architecture handbooks found in more mature design disciplines. The primary goal of developing a Handbook of Software Architecture is to fill a void in our fields by codifying the architecture of a large collection of interesting software-intensive systems. The language of our times, patterns will be used as a basis for exposing and comparing the essential elements of these systems.

In this BoF, we'll examine the Handbook project and discuss its potential content and the process for completing it. Associated with this effort is a project at the Computer History Museum on the preservation of classic software, and so this BoF will also cover what can be done to contribute to that effort.

The panel and talk on both scheduled for Thursday the 20th and the BoF is scheduled for the previous evening.


Sunday, October 2, 2005, posted by @ 8:57 PM
The Architecture Of Dance
Because I'll be on the road almost every week from now until Thanksgiving, I filled last week's evenings with a number of social events, including The Wizard of Oz at the Boulder Dinner Theater, Cinderella at the Ellie Caulkins Opera House, Wicked at the Buell Theater, and Cleo Parker Robinson Dance at the Newman Center, all in the Denver metro area.

I love dancing; it's such a beautiful and open expression of the human spirit. It may surprise you to know that I took ballet in elementary school, and in college did a bit of modern dance for a musical (but that's another story).

There are many genres of dance: ballet, jazz, salsa, hip hop, tap...the list goes on. There are also many identifiable dance masters each with their own visibly distinctive style: Bob Fosse, Debbie Allen, Michael Baryshnikov...that list goes on as well.

It seems to me that there's a curious relationship between dance and software architecture: in both disciplines, there are only a limited number of patterns available, each genre assembles those patterns in specific ways that define a particular genre, and furthermore, most knowledge is passed on through tribal memory, from one dancer or architect to another. In dance, by the way, some attempts have been made to define a graphical notation (labanotation) for describing dance movements, just as we have the UML for visualizing, specifying, constructing, and documenting software-intensive systems.


Friday, September 30, 2005, posted by @ 2:28 PM
Web Architecture
Every software-intensive system has an architecture, be it intentional or accidental. The World Wide Web has an intentional one, as described here by the W3C.

I particularly like the introduction to this document, which notes that "The World Wide Web uses relatively simple technologies with sufficient scalability, efficiency, and utility that they have resulted in a remarkable information system of interrelated resources, growing across languages, cultures, and media." Simple is better; select the right set of simple things and you create an architectural foundation from which structures and behaviors its original architects could not have even conceived of flourish.


Friday, September 30, 2005, posted by @ 2:28 PM
More On ICANN
The International Herald Tribune has another report on the US/EU controversy over control of the Internet's root zone files.


Friday, September 30, 2005, posted by @ 1:38 PM
The Web And The Law
A tempest is building regarding control of the Internet's backbone, as reported in this recent article in Business Week. The target of the gathering storm is the Internet Corporation for Assigned Names and Numbers (ICANN), a US corporation under the direction of the Commerce Department.

Simultaneously, recent patent activity raises some intriguing issues that may "affect all Web pages involving dynamically loaded browser extensions that use external data and which feature some kind of interactivity." The patent in question (US Patent 5,838,906, owned by the University of California and licensed via Eolas Technologies) "covers mechanisms for embedding objects within distributed hypermedia documents, where at least some of the object's data is located external to the document, and there is a control path to the object's implementation to support user interaction with the object. The implementation can be local or distributed across a network, and is automatically invoked based upon type information in the document or associated with the object's data."

If this news leaves you frustrated on a Friday afternoon, consider sending a reply via this new keyboard.


Thursday, September 29, 2005, posted by @ 10:24 PM
Architectural Patterns
We still don't yet have a good understanding of the architectural patterns that are found across domains. Mary Shaw and David Garlan have conducted pioneering work on basic architectural patterns, Fowler has done the same for enterprise systems, and Pont has done likewise for embedded systems. There are no industry studies that cut across the entire spectrum of software-intensive systems, and as such we just don't have the data from which to compare and contrast architectures and architectural patterns across domains. This is problematic: first, as development cultures become more entrenched within a particular domain, it becomes more and more difficult for an individual developer to cross domains; second, my experience is that there is only a modest number of unique architectures, and yet we as an industry tend to reinvent them in each domain because we have no good way to talk about them.

What might we name those distinct architectural patterns? The short answer is that I don't yet know enough to say; I have many more systems to study before I can feel confident in an answer. However, building on Mary and David's work and augmenting it with what my intuition tells me yields the following list:
    Layered Pipe and filter Message passing Semantic network Blackboard Event driven Time division Interpreter
I know that this list is wrong: among other things, it's a curious mixture of structural and behavioral patterns, and thus there's really not collectively a good separation of concerns It will be interesting to revisit this list next year to see how my understanding has changed.

I'd be interesting in hearing from anyone out there who might have other architectural patterns to suggest.


Wednesday, September 28, 2005, posted by @ 10:44 PM
Visions of Science
Check out these photos from BBC News.


Wednesday, September 28, 2005, posted by @ 7:58 AM
Linux And Legislators
Hearing legislators talk about software is a disturbing sight; it's kind of like watching a slug try to perform the more emotional bits of Hamlet. Larry Druffel - former director of the Software Engineering Institute, ditto for the Ada Joint Program Office, and also a former VP at Rational (plus an instructor at USAFA when I was in school there) - once told me the story of a meeting he had with a congressman regarding the SEI, in which, after Larry had filled the gentleman in on the importance of software, the congressman replied something to the effect of "I gotta get me some of that software stuff."

Anyway, it's interesting to see that Peru has joined Brazil, China, France, Germany, Japan, South Korea, and others in moving forward legislation that requires the use of Linux and other open source software. California is on on the action as well as is Massachusetts.


Monday, September 26, 2005, posted by @ 1:05 AM
Happy Happy Joy Joy
I spent most of the weekend in my wiring closet, moving out my last remaining Windows box, installing an old Mac to serve up audio via iTunes through the house, and installing a Google Mini search appliance. The Google box was a snap to configure: I did it all plus indexed my site in a couple of hours. I next need to update all my Handbook pages to include a suitable Google search button, but that will be a trivial task.

Time for some sleep.


Wednesday, September 21, 2005, posted by @ 11:54 AM
Distraction
I've been on the phone since 6 AM local time; it's now almost noon. My brain is fried, my ear is likened unto a cauliflower, my spine is in knots. I rarely have days like this, but a few times each year the planets and my schedule align to make it so.

During one of the more boring bits of on of these calls - I won't tell you which one - I came across this very creative use of Post-It notes.


Tuesday, September 20, 2005, posted by @ 4:39 PM
Microsoft Reorg
Microsoft is restructuring into three bits: platform/services, business, and entertainment/devices, with Eric Rudder taking on a new role to work directly with BillG on technical strategy and advanced development.


Monday, September 19, 2005, posted by @ 9:45 PM
Searching
I've been searching for a good solution to add search to my Handbook site; I'm already having a hard time finding things on its private pages. My requirements are straightforward: I need to enable public and private searching, I need to be able to search Web pages as well as various document types, and I need it all to be ultra-simple (I don't want installation, spidering, reporting, or maintenance to get in the way of my primary work). After much consideration, I selected the Google Mini search appliance, which I expect to receive in a few days and will install over the weekend.

This adds one more stack to my wiring closet (where I already have a heating problem - this isn't something that one normally worries about in a residence) and one more Linux box (I have a dedicated Linux firewall to keep the Bad Guys out, as well as a Linux terabyte file server). I'll blog the process of installation as it unfolds.


Monday, September 19, 2005, posted by @ 3:59 PM
A Minor Retraction
The venerable Joe Marasco pointed out that e raised to the power of i times pi is negative one; I'd incorrectly quoted a degenerate form of Euler's formula, which is simply e **(i * pi) + 1 = 0

Thus, it is more correct to say that "the absolute value of three times e raised to the power of i time pi people emailed me about my blog outage". Thank you, Joe, for keeping me honest. I think I'll keep my day job and stop pretending I'm a mathematician.


Monday, September 19, 2005, posted by @ 3:28 PM
Is Google Research The Next PARC?
Xerox PARC (the Palo Alto Research Center) was an amazing place in its prime. It's a shadow of its former self, but other groups have fared even worse: HP 's research group has seen large cuts (including Alan Kay's group), and even Lucent has closed the department that created Unix (lest I be pummelled, note that IBM Research is doing quite well, thank you very much). There's no question that Google's labs are in a very vibrant period, having recently snagged Vinton Cerf and Daniel Russell. The most telling sign is that Google's moves are really annoying the folks in Redmond (for more see the recent article in Informationweek).

I love competition; it makes us all less complacent and ultimately serves the industry and its customers as a whole.


Monday, September 19, 2005, posted by @ 1:43 PM
Generations Of Software Architecture
The more I study software architecture, the more I come to understand the extend of what I don't know.

One of the biggest things that currently nags at my ignorance is the lack of a suitable vocabulary for naming the architectural styles that I encounter. Mary Shaw and David Garlan, in their seminal book Software Architecture, posit the existence of a handful of architectural patterns: batch sequential and pipes/filters for dataflow systems, main program/subroutine, object-oriented, and hierarchical for call-and-return systems, and communicating sequential processes and event systems for systems of nearly independent components. I think these are all quite useful, but I don't have enough data that leads me to assert that they are sufficient, necessary, and independent. My intuition says that they are not, but I can't yet enumerate the patterns that are.

One quick aside: the move from algorithmically-decomposed systems to object-oriented ones in software is akin to the shift in materials found in civil engineering: bridges made of wood then stone then steel and now gossamer cables each exhibit different architectural styles, enabled and constrained by the physics of the underlying components.

Anyway, I'm diagnosably into classifying things (The Order of Things by Kipfer is my idea of good bedtime reading). One enumeration I have made a stab at is an identification of the generations of web-centric software architectures (a topic I lectured on at the last week's SDForum).

In order of oldest to most recent:
    Simple documents Colorful clients Simple scripting Rise of middleware Rise of simple frameworks Emergence of dynamic frameworks Semantic web
Simple document web-centric systems are like those that Tim Berners-Lee first created: they have hyperlinks and simple formatting, but little more. The second generation - colorful clients - had more engaging content and more precise formatting, but were often little more than eye candy (does anyone use the blinking text tag anymore?). The next generation introduced simple scripting, and thus we saw the rise of scripting languages such as Perl, PHP, and JavaScript (plus dynamic HTML as embodied in Microsoft's Active Server Pages and the rest of the world's Java Server Pages). As best practices on the server side accumulated, the fourth generation of web-centric systems were built on emerging middleware, such as .NET, WebSphere, and JBoss, followed by the rise of simple frameworks such as Struts, forming the fifth generation and now the sixth generation of dynamic frameworks (namely, Ajax, at the confluence of HTML DOM, XML, and XMLHTTPRequest, plus service-oriented architectures); most interesting contemporary web sites are on the cusp of these two generations. The next generation of web-centric systems will likely build upon a new set of protocols forming the semantic web, thus leading to new architectures and new classes of functionality.

As with the naming of cats, finding these ineffable, effable, effanineffable, deep and inscrutable, singular names is hard. So, stay tuned.


Monday, September 19, 2005, posted by @ 12:05 AM
Blog-B-Gone
This past week I was in the Bay area keynoting the SDForum - more on that in a future posting - and while I was away, exactly 2 time e raised to the power of i times pi people notified me that my blog on the Handbook site was down. That tells you something about the massive readership my blog gets, although I'm probably being a little pessimistic since the RSS feed and the IBM mirror were still alive.

Anyway, as I'd mentioned in posting from the distant past, I didn't care for any of the then available commercial blogging packages, so I wrote my own. The good news is that I have tuned it to my own particular needs, but the bad news is that I'm also responsible for all its foibles, such as what I encountered this week. Just before I left for the airport, I backed up my computers, which apparently left a vestigial file on my blogging directory, an artifact that my blog.jsp page just didn't know what to do with, so it threw up its virtual hands. I have my firewall locked down very tightly - I regularly get attacks from sites in China and eastern Europe - but so much so that I couldn't even ssh into my own server. Ergo, I had to wait until I returned and could get behind my firewall to remove the offending file. The blog is back up and so life is good once again. More later in the morning.


Monday, September 12, 2005, posted by @ 7:38 AM
Gallery Of Software Architecture
I've started a gallery of software architecture, containing architectural descriptions of a variety of systems from the literature. I don't intend to analyze these representations, I'm just posting them as a measure of what goes on in practice. Do remember that you have to be logged in to the Handbook to see them.

I still have a large stack of papers and books from which to collect these, but if you have an item to contribute, please do email me.


Thursday, September 8, 2005, posted by @ 9:54 PM
Google
Google - flush with cash - has been on a buying spree, picking up top talent from across the board. Their latest acquisition is Vinton Cerf who will serve as their "chief Internet evangelist."

On a much more mundane topic, I reorganized the references on my Handbook site. In my blog references, I've added links to the other blogs and technology sites that I follow regularly.


Tuesday, September 6, 2005, posted by @ 10:39 PM
Changes
As I work on a layout for the Handbook manuscript, I've been making some organizational changes (and some cosmetic changes as well) to the site, so among other things you'll note that the architectural metamodel and the corresponding system parts are subtly different. Also, while I was at it, I purged my user database of all users who have not logged in within the past three months. Sorry if I've inconvenienced you, but you can simply reregister if need be.


Friday, September 2, 2005, posted by @ 9:58 AM
On Design
I forgot to mention a delightful book I've come across: Universal Principles of Design by Lidwell et al. It offers a wonderful, cross-disciplinary study of 100 design best practices.


Friday, September 2, 2005, posted by @ 9:23 AM
NerdTV
I spoke with Bob Cringley earlier this week regarding NerdTV. Do check out his new PBS show next Tuesday.

I've been working on the manuscript for the Handbook most evenings this week. I typeset my most recent books using Adobe Framemaker, but for this latest effort I'm using the Adobe CreativeSuite, and InDesign in particular. It's quite a powerful and easy to use system. As I play some possible book designs, I realize how challenging it is to capture the essence of a system's architecture in an accessible form; it's easy to write volumes about any one system, but distilling that essence is much harder.

In a couple of weeks, I'm off to the Bay Area to speak at the SDForum regarding web-based architectures, so I'm assembling materials for that event.

If you haven't done so already, check out Irving Wladawsky-Berger's blog. Irving is another IBMer, and he regularly posts some thoughtful pieces, the most recent on the topic of software patents. Irving is also quite passionate about the cinema, and he has some delightful riffs on that topic as well.


Thursday, September 1, 2005, posted by @ 7:18 AM
Unglued
With the disaster in New Orleans - when else in modern times have you heard of a city that size being simply abandoned? - yesterday's stampede in Iraq that killed hundreds (mainly women and children), and today's anniversary of the hostage event in Belsan, Russia, it seems a bit callous to blog about software today.

I'll resume tomorrow, before Labor Day Weekend. Anyway, I've shut myself off from the world most of this week to do some writing - a paper for IEEE Software, one for an IBM journal, my upcoming keynote for SDForum, and preparation for some customer visits.

While I have you, let me make a pitch for the Red Cross and their disaster relief fund, in support of the crisis in the Gulf region.


Tuesday, August 23, 2005, posted by @ 9:28 AM
Catching Up
Or, a Posting of Various Amusing and Curious Diversions, Full of Amazing Facts that Will Lift Your Spirits and Delight Your Friends.

In case you didn't know this already, Natalie Glebova, Miss Universe 2005, received her bachelor's degree in information technology management. I have been unable to verify the rumor that she's a frequent poster at the Defcon forum, writing under the name "UniHckrGrrrl5."

IBM continues to populate its pattern solution forum on developerWorks, with the most recent addition - the WebSphere Platform Messaging Patterns Asset - aimed at building service-oriented architectures.

Last night, I produced two fifteen minute videos for Rational's software development conferences being held in India and Brazil. Thank you, Apple for making it so easy to record, edit, and master a professional DVD. I have the printing and audio/video production capacity of a small nation and Final Cut and DVD Studio Pro (and their younger companions, iMovie and iDVD) are my primary tools in this space; they are a real pleasure to use.

Speaking of Rational meetings, you can plug in to our global user community here.

If you are accustomed to writing lots of business correspondence, check out the MBA Jargon Watch. In no time you will gain traction with your mission critical stakeholders by composing actionable best practices for deployment to your scalable centers of excellence. If you encounter any push back during your real-time roll out of those value-added deliverables from those who drink the Kool-Aid, catch me off-line and I'll help you repurpose and synergize your work so that you'll end up with a world-class win-win solution. Bullfighter is another piece of software that might help you out here as well.

Michael Kaplan's blog makes an interesting discovery about the