|
|
|
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 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 Google search engine; you can try it yourself by googling the word "failure." Methinks that the results are not strictly according to the PageRank algorithm.
At Universiteit Twente, check out Project QUIDS on QUality Indicators in Design Spaces.
On Slashdot, there's an interesting riff on the industry's next programming models. While you are poking about, check out a related post from the MIT Technology Review.
Drawing this rambling post to a close, I've been doing my usual technical reading (I still have about one hundred architecture-related technical papers left to slog through) and pleasure reading (this week it's the animation classic The Illusion of Life by Thomas and Johnston, The Radioactive Boy Scout by Silverstein, and A Theological Miscellany by McTavish).
Monday, August 22, 2005, posted by @ 1:43 PM
Passing On
This has been a challenging year.
I just returned from my mother's funeral. She was almost 84 and had lived a full and happy life. I had closure with her upon our last meeting and so I have no regrets; she is indeed in a happier place.
Needless to say, blogging has not been foremost on my mind. I have a backlog of things to post, but they will have to wait for a bit.
Thursday, August 4, 2005, posted by @ 12:08 AM
It's A Small World After All...
Is any one of my readers a member of aSmallWorld?
Wednesday, August 3, 2005, posted by @ 9:18 PM
Joel on Software
I admire Joel Spolsky's wisdom on the business and practice of software development. A recent Slashdot posting led me to his recent article on the value of hiring good programmers in which he notes that "design adds value faster than it adds cost. Or, roughly speaking, if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money."
Well said, Joel.
Wednesday, August 3, 2005, posted by @ 2:23 PM
Booch Festival
Microsoft's initial forays into Google's space may be found here, here, here, and (my favorite) here. Just to explore the capabilities of the site, I did a vanity search and discovered the forthcoming Booch Festival being held on the 13th of August with groups such as the Sheer, Die Apocalyptischen Reiter, Stijn, D.A.A.U. Epica, Krezip and the not-to-be-missed Jaya the Cat. Also, don't miss reading the profile of Sir Booch - a rather remarkable likeness, don't you think? - or the ever more snugly and four-footed Booch. Finally, if you are in need of wedding reception music in the Pittsburgh area, don't miss out on Booch-X Entertainment.
I'm not ready to replace my Google toolbox on my browser quite yet.
Friday, July 22, 2005, posted by @ 10:03 PM
Got Cycles?
Many of you are probably already aware of SETI@home, "a scientific experiment that uses Internet-connected computers in the Search for Extraterrestrial Intelligence." Another global effort worth investigating is the World Community Grid, initiated by IBM in the fall of 2004. The computing topologies of these two efforts are fundamentally different: in the SETI@home architecture, the center of computational gravity lies at each client, who grabs a chunk of radio telescope data, munches on it, then spits back the results, whereas the World Community Grid is a classic grid that, to an application, looks like a massively parallel machine. One of the central projects currently being run on the Grid is the Human Proteome Folding project whose purpose is to predict the three-dimensional shape of various proteins, an analysis that's critical to understanding how a protein works and binds to other compounds (which in turn is key to the creation of new drugs).
At the very moment I'm writing this blog entry, the Grid has over 100,000 devices attached. The project team tells me that about 12,000 years of compute time have been applied to the proteome project. Nonetheless, the projects being undertaken by the Grid are intensely compute bound, and the team would like to have a half a million devices on the grid.
I urge you to visit the site and give some serious though to applying the idle time of your personal machine (or that of your company's) to the Grid.
Thursday, July 21, 2005, posted by @ 9:36 PM
More Random Bits
There's a long thread on Slashdot reporting that Alan Kay has been cut loose. Such a move tells one a lot more about HP than it does about Alan, but then I suppose if you are a Turing Award recipient, you won't need to go looking for a job in the exciting and ever-growing fast food industry. Best wishes to you, Alan; you too are one of my heros who has brought so much innovation to our industry.
I see also that Sun has plans to give away all its software for free. Though I'm sorely tempted to comment further, my legal self-preservation mechanism has kicked in.
Check out the recently formed patterns site on developerWorks.
Finally, on the lighter side, CNET has enumerated the top 10 Web fads.
Thursday, July 21, 2005, posted by @ 8:42 AM
Rant
I hate email.
No, that's not strong enough.
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. Email is the bane of my existence, my nemesis, the stone in my shoe, the fly in my soup, the seed between my teeth, the pea under my mattress, the crud beneath my wings, the monster in my closet that fills me with the gnawing feeling that some Thing is lurking in the shadows ready to grab me. Email is annoying and incessant in its demands, like sitting in the middle row of a hot, crowed airplane on the way to a Colicky Baby Conference. Email is a silent tumor, growing slowly but steadily in the dark. Email is the strange, disheveled, malodorous man holding a suspicious, crumpled sandwich of dubious origins, staring at me from across the subway aisle. Email is the Destroyer of Time, the Mother of All Guilt, the Evil-That-Must-Not-Be-Named, the Gaping Maw whose appetite is insatiable. My email is really gross; my email I hate the most.
Last night I went on a bender, staying up till almost 3AM where, like Jacob, I wrestled with the angel of email, finally bringing it to its knees. When I left it last night, my email reader was sitting in a corner, exhausted and softly sobbing from the torrid encounter. Superior organic intellect had triumphed, leaving me with just three unprocessed emails.
Until I work up this morning when, like a bad burrito, my email came back up, demanding attention.
There's gotta be a Better Way.
But please, don't email me any suggestions...
Wednesday, July 20, 2005, posted by @ 6:09 PM
Legislation As A Force On Software
Earlier I'd written a piece on the limits and forces of software (sorry, you'll have to log in to the Handbook to see that page). There's a recent thread on Slashdot that's a classic example of a legal force: a proposal has been made in Congress to extend Daylight Savings Time.
I would imagine that our federal representatives have not give any consideration to the vast amounts of legacy software, both,embedded (i.e. in a ROM on your DVD player) and patchable (e.g. Windows) that will be rendered incorrect.
Wednesday, July 20, 2005, posted by @ 11:08 AM
Certification Of IT Architects
The Open Group has begun a program to certify IT architects.
Wednesday, July 20, 2005, posted by @ 11:02 AM
Two More Sites
Two more sites you should check out: Dick Gabriel is one of my heroes, plus I recently stumbled onto the blog of Peter Andre, a very passionate, spiritual, and intellectual open sourcer (who, to my surprise, lives in the same area as I do).
Wednesday, July 20, 2005, posted by @ 10:17 AM
Beam Me Up, Scotty
Actor James Doohan aka Scotty of Star Trek was transported from this earthly realm this morning.
Wednesday, July 20, 2005, posted by @ 9:34 AM
My Research Staff Can Beat Up Your Research Staff
Bill Gates addressed several hundred computer science faculty at the recent Microsoft Research Summit. In his address, Bill pondered why more young people are not attracted to the computer sciences. There is considerable evidence that the number of students majoring in comp sci has plummeted in the United States and Europe and that fewer and fewer are considering careers in software. I agree with Bill that our field remains incredibly exciting; I've often lectured on the privilege and the responsibility of being a software professional. At the same time, the reasons behind this decline are complex: there's residual damage from the sucking vortex that was the dot com bust at the turn of the millennium; the press regarding and the reality of outsourcing does raise the specter of fear, uncertainty, and doubt in the minds of those entering the work force seeking an inspiring apprenticeship and a sustainable career; the decline of attention paid to science and math in K-12 has clogged the pipeline; the decline of federal funding for basic research has thrown cold water on radical innovation; the commoditization of software in certain domains has made some segments of our industry downright boring.
Intentional software research by industry is one bright spot in this turbid picture. Microsoft Research has a variety of projects focused on programming principles and tools, systems and networking, computer-mediated living, and machine learning and perception. IBM Research has a much broader mission, covering chemistry, electrical engineering, materials, mathematics, physics, and services as well as the computer sciences wherein there are projects associated with algorithms and theory, artificial intelligence, communications and networking, computational biology and medical informatics, computer architecture, data management, distributed and fault tolerant computing, graphics and visualization, human computer interaction, knowledge discovery and data mining, mobile computing, multimedia, natural language processing, operating systems, performance modeling, programming languages and software engineering, security, services, storage, supercomputing, user interface technology, and the Web.
Monday, July 18, 2005, posted by @ 11:29 PM
Another Kind Of Grand Challenge
Check out DARPA's current Grand Challenge offering a $2 million prize for an autonomous robotic ground vehicle traversing natural and man-made obstacles over 175 miles of desert, to be completed within 10 hours.
Monday, July 18, 2005, posted by @ 10:59 PM
Architectural Tradeoffs
Today I was reading a wonderful albeit older paper by Gene Carlow on the "Architecture of the Space Shuttle Primary Avionics Software System," published in the September 1984 issue of Communications of the ACM. The Shuttle Primary Avionics Software System was developed by IBM; it's remarkable to see how computing has changed since the days of that initial system.
What struck me the most was the author's wonderfully crafted description of the essence of the PASS architecture, in which he notes that "Flight software systems have been characterized by their small size (15k to 30k) and the limited number of functions they perform. Their software architectures reflect a synchronous design approach within which the dispatching of each application process is timed to always occur at a specific point relative to the start of an overall system cycle or loop. A relatively simple streamlined operating system or executive is used, but a lot of care must be taken in the implementation to synchronize the start and completion of the different application processes, and their associated I/O, to prevent overruns at both the process and system levels. A major benefit of this approach is repeatability; however, there is only limited flexibility to accommodate change. Given the increased number and variety of different applications functions that the Shuttle computers are required to perform, and the anticipation that requirements would change as the Shuttle Program evolved, a asynchronous approach was adapted for the PASS architecture. Other basic architectural decisions included the isolation of applications processes from the external I/O and computer redundancy management."
The older, synchronous architecture that Gene describes was (and is still) common in a number of hard real-time domains, wherein the main control flow of a system proceeds by dividing time into a number of frames (and subframes) and then carries out processing within those discrete frames. As complexity and computing power increases, a less rigid control flow is desirable, as is manifest in PASS.
This kind of stuff is pretty foreign to the typical Web-centric developer who can (most of the time) happily ignore hard issues of dead lock, live lock, deadly embrace, computing overruns, and starvation, largely because a) delivery times across the public Internet overwhelm the cost of most client-side computations and b) most of this hard stuff is hidden by middleware.
Monday, July 18, 2005, posted by @ 2:36 PM
Grand Challenge
A couple of weeks ago, I posed the following in my blog: what are the grand challenges of software and software engineering? What do we know we don't know?
I had about a dozen people rise to the question and a lively discussion among many of them unfolded via email. Following are some highlights of that correspondence.
Communication was a common theme. Tom Welsh asked "How do we bridge the communication gap between business (and government, etc.) people who want all the benefits of IT - NOW, cheaply, and without taking much trouble - and the technical experts who know (or can find out) how to build software that works?" Similarly, Arisio noted that "The greatest challenge of software development still is: COMMUNICATION. Communication between our users/clients and us, the developers; communication between the developers in order to understand and implement and test the user's requirements."
A number of ex-Rationalites, existing IBMers, and others tossed about an issue that was first introduced by the venerable Joe (run, don't walk, to buy his book) Marasco who wrote that "it seems to me that after all these years we have not yet sorted out the 'people' versus 'process' conundrum in software development. Debate rages, curmudgeons opine, new processes spring forth, and we make very slow progress. True, our systems are more ambitious, and the bar is constantly raised, but our success rate lags that of other disciplines." Joe goes on to note three common responses to this conundrum: "1. Make every problem a 'small' problem, by devising systems in such a way that we compartmentalize the development of large systems into an array of smaller ones that are tractable by small teams. 2. Improve the quality of the people through better education, training, mentoring, team building, and other devices. Our emphasis here is to raise the level of the profession such that even the weaker players do not pose a threat to effective development. 3. Improve the quality of the processes we use. Here we accept human frailty and attempt to compensate for it by systematically following a discipline of checks and balances. These are not mutually exclusive, and some combination of all of them may be the right approach." He then asks "However, given that resources are always finite, where do we spend our money?" He then then notes that "It's not people vs. process. It's people and process. It's an investment trade-off decision, and we need better tools to make better decisions." Jim Archer picked up on Joe's comment about the quality of people (Joe noted that "The quality of the people is measured by knowledge, experience, work ethic, and the ability to function as a team.") and observed that "I'm afraid that this encapsulates the failure of most software hiring. Even IBM thinks you need these things, especially the last one [the ability to function as a team]. The thing that it does not capture is productivity." Jim went on to relay a story about one of Rational's first programmers who "was just out of graduate school (as were many of us), so experience wasn't that great an asset. He was nobody's idea of a team player, though his ability to largely ignore the team was more productive than some who insisted on destructive engagement. Oddly enough, his a priori knowledge was largely irrelevant. Howard learned what he needed to know when he saw the problem. He had a great work ethic, but so did a number of our least productive members. Howard had the ability to produce systems of code that did something useful and worked, and he produced them at very high speed. It is this ability to produce that software teams need. The secondary attributes are what we mostly hire for."
Dave Bernstein picked up a riff regarding the impact of focusing a development team on customer success and noted that "Focusing on customer success does not mean slavishly implementing whatever customers tell you they need, prioritizing customer requirements over architectural requirements, [or] optimizing for incremental revenue. To focus on customer success, an organization must continuously understand the context in which its customers operate, e.g. problem domain, business environment, organizational style, regulatory constraints, identify opportunities within this context to provide business-critical value, deliver business-critical value, [and] interpret and weigh feedback from customers, prospects, analysts, sales reps, investors, and other stakeholders. For this to be sustainable, the organization must maintain a flexible, well-designed architecture upon which solutions can be efficiently delivered. There is no simple set of rules for resolving the inevitable conflicts and tradeoffs: good judgment is continuously required. The role of 'focus on customer success' as an important component of of forging high performance teams stands in contrast to a less-desirable set of organizational success measures, e.g. span-of-control, features of code contributed, headcount, papers generated, personal retention, [and] title." Ashish Vikram reflected upon the successful projects that he had encountered and noted that they were "successful because they were written by a small set of productive developers that wrote code quickly and got the product to do what they intended the product to do in a short amount of time and with relatively less code-filling in the design as they went along. A lot of design in the hands of unproductive engineers only leads to a lot of bad code, enough bad code that the few good/productive programmers in the team are unable to work around the large volume and get things to work anyway. The best chance of success is for a project with only high level requirements and design with a small team of good people that can take the high level requirements/design and convert them to code."
Rich Hill noted that "The biggest paradigm shift in modern programming would have to be the ability to use visual representation of object in the development process. UML has given us a little taste into this process, but extending the modern basis of UML and actually being able to develop in a purely visual atmosphere could lead to astounding improvements in performance and could easily lead to new patterns that are easily recognizable."
Oskar Ojala offered that the next grand challenge is simply "How to keep significantly raising the level of abstraction in face of ever growing software complexity."
Finally, Bill Higgins asked the brilliant question "Will software developers ever learn their history so that they don't consistently repeat mistakes and bad practices documented 37 years ago?"
Thank you all for your comments (and the dialog continues).
Monday, July 18, 2005, posted by @ 11:15 AM
Software Architecture In The Netherlands
Gert Florijn wrote to inform me about the first Dutch IT Architecture Championship which attracted eleven serious submissions including the information system at the Schiphol airport, a data warehouse for a large retail company, and the architecture of an electron microscope.
My ability to read Dutch is about the same as my ability to speak Farsi but happily, one of the submissions (the electron microscope) is in English.
By the way, if you have a little free time on your hands and you'd like to build your own personal scanning-tunneling microscope, check out this site.
Saturday, July 16, 2005, posted by @ 10:07 PM
Spells And Incantations
Yes, I was one of those people who waited in line around midnight last night to pick up a copy of the latest work of J. K. Rowling. My local bookseller reported that they'd sold 700 books that evening; I was surprised by the size of the crowd (several hundred), their age (there were a lot of high school kids; I suppose they all grew up with Harry), and gender (more girls than boys). Needless to say, I was a statistic aberration.
Speaking of Harry, this evening I was working to put a dent in my pile of architecture papers, and came across an original copy of the workshop proceedings of the very first "Complete Handbook of Object-Oriented Software Architecture and Designs." This workshop, "convened at the behest of King Bruce [Anderson] before its time," as the paper states, was my inspiration for the Handbook. Described as "a manual of guidelines, structures, principles, spells, and incantations to help both novice and experienced practitioners to improve their practice," the OOPSLA workshop members reads like a who's who of software: Bruce Anderson, Peter Bahrs, Kent Beck, Ward Cunningman, Desmond D'Souza, Erich Gamma, John Gilbert, Sanjiv Gossain, Martin Griss, Eiichi Hanyuda, Kim Harris, Bill Harrison, Richard Helm, Ian Holland, Ralph Johnson, Norm Kerth, Adrienne Kleiboemer, Dough Lea, Elgin Lee, Dan Lesage, Cathy Linn, Makoto Minagaw, Xavier Pintado, Wolfgang Pree, Larry Rosenstein, Bill Ruh, Nacho Silva-Lepe, John Vlissides, and Bob Whilelm.
Thank you, all of you, for all that you've done for our industry.
Friday, July 15, 2005, posted by @ 9:03 AM
Two Random Factoids
The end of life of OS/2 has been declared; IBM will cease selling the operating system at the end of 2005.
I love rules of thumb and estimates that bring large, complex things down to understandable and pithy levels, so I was delighted to find that someone has weighed the Internet, concluding that, on any given day, about half a billion users on on the grid.
Thursday, July 14, 2005, posted by @ 12:26 AM
Can You Hear Me Now?
Last week, I ranted about Microsoft's investments in speech recognition and made the observation that IBM had already secured a pile of fundamental patents in this space. Earlier this week, I had a delightful call with Barbara Britt, program director for IBM's embedded ViaVoice products. Among other things, I learned just how far this technology has made it into the world: the ViaVoice architecture is used in General Motor's OnStar system, as well as in the navigation systems for Honda and several other automobile manufacturers. This same technology is being used with Teges' i-Rounds integrated clinical information system, providing hands-free interaction. One surgeon noted that while operating, it's not very convenient to use a keyboard if you are holding someone's heart in your hands.
Very cool stuff, indeed.
Tuesday, July 12, 2005, posted by @ 2:17 PM
Simplicity
One of my IBM colleagues pointed me to a project at the MIT Media Lab regarding simplicity.
Monday, July 11, 2005, posted by @ 2:08 PM
Codebase
For yet another collaborative development environment space, check out eBay's community codebase.
Monday, July 11, 2005, posted by @ 1:48 PM
Koders
Check out koders.com, which provides a Google-like search function over open source code. A plugin for Eclipse is available.
Thanks to the many people who have replied to my Grand Challenges posting last week. I've not have time to respond to you (but will) and will soon post a summary of what you've suggested.
Friday, July 8, 2005, posted by @ 12:34 AM
Cyber Economies
I've mentioned in some of my public lectures the emergence of new kinds of crime and electronic economies. Check out this story from 1up.com about sweatshops that mine wealth in virtual communities.
The presence of millions of camera-equipped mobile phones is simultaneously changing the nature of reporting, offering an immediacy and presence that no traditional news media can match. Check out this story about cell phone video reporting the events in London.
Friday, July 8, 2005, posted by @ 9:51 AM
Language-Oriented Programming
Martin Fowler has posted an interesting article on the emergence of what he calls language workbenches.
Thursday, July 7, 2005, posted by @ 1:41 PM
Papers
I'm steadily slogging through several hundred technical papers I've accumulated on the topic of software architecture. You'll find them slowly accumulating in the references (remember that you'll need to be logged in to the Handbook site).
Thursday, July 7, 2005, posted by @ 8:47 AM
Ten Questions
Activities today are overshadowed by events in London...
The American Association for the Advancement of Science recently marked the 125th anniversary of its journal, Science. In their 1 July 2005 issue, they enumerate 125 hard questions that science faces, questions such as "can the laws of physics be unified?", "what are the limits of conventional computing?", and "why do humans have so few genes?" In science, there has been a rich history of such questions, such as found with David Hilbert's problems proposed in 1900. More recently, the Bill and Melinda Gates foundation established the Grand Challenges in Global Health Initiative in order to stimulate practical research in health care.
The value of even asking such questions is that they force us to admit what we know we don't know. Science advances daily through the cumulative efforts of millions of individuals who investigate the edges of existing knowledge, but these sort of questions help direct the global trajectory of all that local work
What are the grand challenges of software and software engineering? What do we know we don't know? I have some thoughts, but I'd rather hear from my readers. Email me and I'll summarize what I hear from you.
Tuesday, July 5, 2005, posted by @ 2:41 PM
On The State Of Software And Other Such Random Musings
I've been on the road the past five weeks; the gypsy taxi drivers at La Guardia are starting to recognize me which is a clear sign that I've been back east far too many times of late. Happily, I'm home for a while which means that I can try to resume a rhythm. It usually takes me a day or two to get back in that rhythm, and having a long weekend did help me reboot.
Bill Gates recently waxed philosophic about the future of software, wherein he highlighted the importance of web services and voice recognition. I concur with him on the former topic, but am far less enamored of his predictions regarding speech-directed interfaces. Microsoft has poured a lot of money into speech recognition, but don't forget that IBM already holds a number of key patents in this space, some of which it has placed in the open source community. My skepticism comes from the observation that a lot of this technology is already mature (ever managed a flight by phone on United Airlines?) and that the two remaining really hard problems (extraction of conversion in a noisy environment and semantic understanding) are both, IMHO, still deeply wicked problems whose solution is a long way out. Furthermore, simply slapping a voice interface on top of a bad user interface does not a paradigm shift make.
One of my trips this past month led me to a summit with a number of other senior Rationalites, one of whom made the observation that to speak of a system as software-intensive is rather redundant: virtually all interesting human-made systems are already software-intensive. Indeed, most of the world's health care systems, transportation systems, war-fighting systems, financial systems, and so on involve a considerable amount of software, some parts of which operate totally autonomously and others of which involve a human in the loop whose actions and reasoning are augmented by software. It used to be the case - perhaps as recent as two or three decades ago, a mere generation in time - that what we defined as the scope of software was quite narrow. That time is long past: software now touches virtually every part of modern civilization, and as such the field has grown larger and more fragmented.
There are some common threads among all the domains of software and the SWEBOK has attempted to codify some of those concepts and best practices - but I won't get into my opinion of that effort here.
Stepping back from the daily blocking and tackling that developers do in any one of these specific domains, I'd also observe that in the context of that fragmentation, some sectors of software are quite vibrant (games, robotics, mobile devices, in-car electronics, military systems, to name a few) while others are at a plateau (many enterprise systems, for example; the problems therein are mostly ones of execution, with some sparks of deep innovation on the fringes of and spaces in between systems) and some are in the process of commoditization (operating systems, personal productivity tools, tools for the individual developer). In light of recent announcements by SAP and salesforce.com another of my colleagues, Gary Cernosek, recently raised an intriguing question: what is the emerging platform for application development? I agree with Gary that the important war is not being fought between Windows or Linux (Windows is fighting a losing battle), Java or .NET (Microsoft has publicly acknowledged the decline of innovation in .NET) or even Eclipse or Visual Studio. Rather, what SAP, salesforce.com, AutoSAR, DoDAF, and many others are showing is that the real action is beginning to swirl around domain-specific application platforms or frameworks. In the case of SAP, it's NetWeaver; similarly, Oracle is pushing its packaged solution in the form of Fusion.
Saturday, June 18, 2005, posted by @ 7:26 AM
Google Again
Summer of Code "is Google's program designed to introduce students to the world of open source software development". Do check out the site; there are some very cool thinks going on there.
Thursday, June 16, 2005, posted by @ 7:00 AM
Google (And A Lesson In Archeological Digs)
I've mentioned before the value of studying software patents as part of conducting an archeological dig. Slashdot reports on a study at Buzzle on a patent filed by Google regarding their page rank algorithm.
Wednesday, June 15, 2005, posted by @ 10:02 PM
Easily Distracted By Shiny Objects
I'm back from some customer visits in New York City. This summer is turning out to be filled with far more travel than I'd really like. I've just completed three weeks of back-to-back travel and I'll be on the road again the next two weeks. Some time this summer, I need to fit in Seattle, Vancouver, New York City (again!), and Detroit, as well as save some time to Have a Life. This week I also had a board meeting at the Iliff School of Theology (spirituality and software; I do try to lead a balanced life).
A number of random things caught my eye this past week. In my public lectures about the future of software, you may have heard me suggest the advent of novel forms of cybercrime. Slashdot reports on a man who was killed over the theft of a virtual sword in a massively multiplayer game. Continuing (I warned you this was random), the Prototype Robot Exhibition was held in Japan; there's a lot of energy being spent by various Japanese companies building humanoid robots. Sci-fi writer Neal Stephenson explains why he is a sporadic emailer (I sympathize: I absolutely hate email as a medium of effective communication. If I recall correctly, Dante placed email somewhere near the deepest level of hell). Kuro5hin reports on the history of Google's acquisitions. Finally, check out another IBM blogger, Irving Wladawksy-Berger
End of transmission; all your base belong to us.
Monday, June 6, 2005, posted by @ 9:45 AM
Odds And Ends
Bob Meade wrote me to point out a competition held in Sydney in which a 93 year old telegraph operator beat out a 13 year old SMSer. Age before beauty, I suppose.
On a different front, by now I'm sure you've heard that Microsoft has announced that they will provide XML-based filed formats in Office 12. Until we see this in reality, it won't be clear just how open/proprietary these formats will be, but it does represent a significant state change in Microsoft's attitude toward openness. Once the details of these formats become readily available, it won't be long until some enterprising person will find a bridge between Microsoft Office and Open Office. Increasingly, the core products of Microsoft are being commoditized, from Office to Windows, which is a good thing for users but I'm sure continues to make BillG super nervous.
Barry Graham from IBM wrote me, among other things asking aloud about song recognition software (the ability to automatically recognize a song from live audio). It turns out that there's considerable action in this space, from open source solutions to commercial ones. Music providers are paranoid about the leakage of royalties (as they should be) and so pure economics has driven this market. And now for something completely different, check out a project at Cornell on the automatic recognition of bird songs.
Friday, June 3, 2005, posted by @ 5:47 AM
Old Vs New Again
Iain Gavin just sent me this notice about the London Tower Bridge - built in 1894 - being brought to its knees by contemporary software.
I think I'll just sit in a dark room today, with all the lights off and the windows closed.
Friday, June 3, 2005, posted by @ 5:17 AM
Morse Code Vs SMS
Jay Leno staged a competition between a pair of Morse Coders and a pair of SMSers, with the Morse coders winning hands down. Check out a commentary and video here. While you're at it, run, don't walk, to your nearest browser and subscribe to O'Reilly's Make. Make reminds me of its wonderful predecessor, the very fun and very influential Byte Magazine which has been reincarnated as a webazine. Before Byte, there was (but sadly no longer is) Popular Electronics.
Thursday, June 2, 2005, posted by @ 2:02 PM
Links
Frank replied to one of my postings, offering amazement at how I am able to read, write, and discuss as much as I do (this was a typical week for reading: I finished a biography of Frank Sinatra, the collected letters of Richard Feynman, and a book on spirituality). Well, Frank, a) I'm a fast reader with high retention and b) I don't sleep much.
Frank also asked how I manage to inject so many links. There's no magic here: I have perhaps fifty or so links bookmarked on Safari and so those are a click away. Additionally, I didn't like any of the open source blogging sites or software, and so wrote my own, to include various creature comforts that make it easy for me to inject links and other artifacts. In fact, I don't blog directly on the developerWorks site, but rather post on my home site and then run a script which sends the changes to my RSS feed to dW.
Thursday, June 2, 2005, posted by @ 1:45 PM
Puttin' On The Ritz
I'm back from the IBM Rational Software Development Conference and the IBM Corporate Technology Recognition Event. The last night at the CTRE was a delight, for Seal was in concert. For those of you who know me, you know that I rarely if ever wear a suit - but I do like to wear a tux (I own two!) - and so used that event as an excuse to dress up a bit (I really do clean up quite well).
I'm off to Boston and New York next week for some customer visits, so am taking these few days in between to catch upon correspondence.
Wednesday, May 25, 2005, posted by @ 9:22 PM
Dum Dum Da Da, Dum Dum Da Da, Da Da Da....
While those at the IBM Rational Software Development Conference were enjoying a presentation from Thomas Dolby this morning, I was in San Diego for the IBM Corporate Technology Recognition Event (CTRE), listening to a presentation by Sam Palmisano, IBM's CEO, and then Lalo Schifrin, the composer, arranger, and songwriter. Lalo wrote the theme to Mission Impossible and scored a number of hit movies, including Dirty Harry, Cool Hand Luke, and Enter the Dragon.
The CTRE is an annual event at which new IBM Fellows and Distinguished Engineers are recognized, and several million dollars in awards are handed out to master inventors and others who have made critical contributions to technologies that have advanced the industry. In my keynote at the Rational conference, I discussed the nature of innovation; here at the CTRE, it's such a cool thing to interact with so many who have innovated for the company.
Wednesday, May 25, 2005, posted by @ 1:31 AM
Change of Venue
Today was a busy one. My day started in Las Vegas at 6AM and now I'm composing this message after midnight in San Diego. I had an analyst meeting first thing in the morning which I immediately followed with my keynote for the RSDC. Some people get really freaked out talking to large groups, but it's never bothered me; I try to present as if I were having a personal, one-on-one conversation, I try to make my topic approachable, and I also try to make my talk actionable (or at least make my audience learn something or think about the topic in a new way).
Sunday, May 22, 2005, posted by @ 11:13 PM
Elvis Has Left The Building
I've made it to Vegas, although far later than expected. My flight was delayed at the gate for an hour and then another hour once we were on the plane. The reason? Air traffic delays due to construction in Las Vegas. Flying used to be fun. This will date me, but I remember the days when there was absolutely no security; you'd get your ticket and walk straight to the plane. The food was actually good, too. Well, enough of that, I'm sounding like a curmudgeon.
I made it in late enough that I missed most of the Sunday evening events for the RSDC, so I snagged a ticket to Ka, after which I walked back down the strip and did some serious people watching. Actually, that's not true. Many people come to Vegas to partake in some unique combination of the seven deadly sins, but I'm always on the lookout for software: the dancing waters at the Bellagio come to mind.
I'll be up early for tomorrow's start of IBM Rational Software Development Conference. After the keynote, I've got a rehearsal for my keynote the next day and then am consumed with press meetings, customer meetings, and a number of meet and greets. I wish there were more of me to go around (but I am most looking forward to the customer visits).
Saturday, May 21, 2005, posted by @ 4:29 PM
Packing
I've been putting some finishing touches on my keynote for the IBM Rational Software Development Conference (and simultaneously am getting caught up on ripping my CD collection into iTunes). I'm just about packed, but need to select four or five books to take with me. On top of my pile is Richard Feynman's collection of letters, Perfectly Reasonable Deviations from the Beaten Track. If you are one of the two or three people who actually follow my blog, you'll know that the late Dr. Feynman is my hero.
The great thing about being a voracious reader, by the way, is that I never go to bed alone.
Friday, May 20, 2005, posted by @ 7:53 PM
IT Pipeline
In an earlier post, I'd mentioned my forthcoming keynote at the IBM Rational Software Development Conference in which I'll be talking about the innovation pipeline. A few weeks ago, I was in LA speaking to the comp sci department heads in the University of California system; every one of them reported severely declining enrollments. I'd seen the same phenomenon in Europe when I was in London and Oxford last year. Gina Poole, VP of IBM's Academic Initiative recently noted the growing need for students in a meeting this week in Research Triangle Park.
Friday, May 20, 2005, posted by @ 10:21 AM
Blogging At The RSDC
The IBM Rational Software Development Conference begins this Sunday. Rational's senior executives will be blogging this event: Danny Sabbah (Rational's new General Manager), Lee Nackman, Claudia Dent, Roger Oberg, and Buell Duncan will be online, as well as Amy Wohl, Gina Poole, Michael O'Connell, and long time blogger Alan Brown.
It still blows me away that nothing stands between me and posting live on IBM's developerWorks: no lawyers, no PR types, no handlers. IBM really does get the concept of having an unconstrained blogging forum, developer to developer. Sometimes the best thing - yet the hardest thing - a largest organization can do is to simply get out of the way and let communication and innovation flourish, and that's been my experience inside IBM since I was borged in 2003.
I'm looking forward to being back in Las Vegas: it's one of my all-time favorite cities for people watching. I like dining at the Pinot Brasserie at the Venetian, and if there's time late late one night, I'll roam the casinos, contemplating the vast amounts of software running those slot machines and keeping track of all that money.
Friday, May 20, 2005, posted by @ 9:02 AM
Site Work
Last weekend, I upgraded my server to Tiger, which unfortunately broke my mail and web service for a few days. As for mail, I'd been upgrading since the first release of Panther, but upgrading from 10.3. to 10.4 was imperfect and left some mail files in a zombie state. After searching the Apple support logs and chatting with tech support, I had to resort to a fresh install, which cleared up the mail problem. As for the web service, the Handbook runs on a straightforward Apache/Tomcat/MySQL/Java platform, and once I realized that Tomcat wasn't starting automatically on reboot, all was well with the site.
This experience really brings home the notion of a programming model, the conceptual space in which my site and my head lives. There are so many moving parts - I didn't mention the bit about beginning to install a new Linux appliance as a dedicated firewall - and if any one of them takes ill, it soon spreads to bringing everything down. Vibrant software requires attention, else it will rot.
The IBM Rational Software Development Conference is next week, and I'll be giving a keynote on innovation, addressing the issue of how we keep the pipeline of great products filled. In short, a combination of adaptation, skunk works projects, and intentional research are what we use to produce a steady stream of great and useful things, and I'll be talking about examples in each of those spaces. Oh, I'll also talk about some of the more outrageous research projects going on at IBM, ranging from Blue Gene to Millipede.
In addition to the various sites I visit weekly, I've been enjoying Will Wheaton's blog. Will is a writer, a comedian, an actor, and a consummate ubergeek.
Thursday, May 12, 2005, posted by @ 2:06 PM
Links
A few new links for you, courtesy of Mark Doernhoefer from his recent article in the ACM SIGSOFT Software Engineering Notes.
cetus-links has been a useful source of references for some time, and its links on software architecture are quite comprehensive. Ward Cunningham's Wiki has a wonderful catalog of design patterns. Finally, Glen Vandergurg's collection of quotations on software design make for fun reading.
Wednesday, May 4, 2005, posted by @ 4:42 PM
Genres Of Systems
So many problems of software are problems of classification: what is the best way to cluster concepts/structures/behaviors so as to aid understandability, form crisp abstractions, and yield a balanced distribution of responsibilities? So it has been in classifying the systems under study in the Handbook. If you've been following the saga of my work here, you'll see that I've grouped the 100 systems in the handbook in one of nineteen genres. I will be the first to admit that there are some imperfections in my grouping (is an ATM a device or a financial system?) but so far I think it's good enough. I've had a few readers write with questions and observations (thank you!) and as a result have jiggled around a few of the groupings. Today I finished writing up a description of each genre which you can read (assuming you are logged in to the site).
Bill included in his posting (mentioned in my previous entry) the book Women, Fire, and Dangerous Things, a delightful romp through the problems of classification. If you want an even weightier tome, check out Duda's Pattern Classification. A fun and much lighter read may be found in Kipfer's The Order of Things.
Wednesday, May 4, 2005, posted by @ 12:09 AM
Meta Reading
Which of course means reading about reading.
Bill Higgins' recent posting concerning his reading list brought to mind a potentially infinite recursion into which I'd just stepped. I recently finished Nick Hornby's Polysyllabic Spree, a collection of his columns about what he's been reading. Do realize that you, dear reader, are now reading about my reading a book about reading books. I will therefore vow to not read any commentary about this current blog entry, for that would mean I'd be reading about reading about reading about reading about reading, which is quite enough.
On a strikingly different subject, check out the latest edition of the IBM Journal of Research and Development, an issue that focuses on Blue Gene. Blue Gene is the world's fastest computer, rated at up to 360 teraflops across 65,536 compute nodes. Two sentences in this issue that stood out for me: "Software has often been considered the Achilles heel of supercomputers. One of the most challenging aspects of the Blue Gene/L system design has been the development of software that can be scaled to the unprecedented levels of more than a hundred thousand processors."
Tuesday, May 3, 2005, posted by @ 8:47 PM
Coming To A City Near You
Seventy-three cities across fourteen countries.
I finally completed a first pass at the various locations I expect to visit during the production of the Handbook. Happily, many of these cities are clustered together, so it's not like I'll require 73 separate trips; it's also the case that a few of these projects may not require face-to-face meetings and virtually all of them I'll use to support local field engagements for my day job at IBM. Assuming you are logged in to the Handbook you can view these locations by city or by map. I'm relatively pleased with the distribution of these systems over the globe (I'm still looking in India). I've six systems unaccounted for yet, though I have some candidate projects I'm considering in the domain of insurance, DNA matching, P2P, viruses, printer drivers, and war gaming.
Tuesday, May 3, 2005, posted by @ 2:43 PM
Mike Devlin
Mike Devlin, Rational's co-founder and fearless leader for some 25 years, has decided to retire. I've known Mike for over 30 years; he and I graduated from the US Air Force Academy (class of '77) where we were both computer science majors. I wish him much happiness. Mike shepherded Rational from a tiny hardware company that built an Ada machine (that in turn existed solely to host an amazingly advanced software development environment) to a public company to now an IBM division. Mike's work has made a fundamental difference to our industry. Thank you, Mike, it's been an amazing journey.
You can read more about Mike's retirement at eWeek.
Thursday, April 28, 2005, posted by @ 11:04 AM
Aspect-Oriented Programming
I'm not a contributor to the technology behind aspects, but I've touted its potential value for years, ever since Gregor Kiczales introduced me to the concept.. There's a very interesting thread going on in the blog at aspectprogrammer.org. If you are new to AOP, this site is a good starting place as well.
Wednesday, April 27, 2005, posted by @ 10:22 PM
Random Thoughts
I'm in LA for a meeting with the comp sci department heads in the University of California system. With the recent rains, it's amazingly bright and clear such that you can even see the mountains.
I'm still searching for a system to study in India, China, and Australia. Thanks to the folks who've offered me some suggestions already. I've not yet made my decisions yet, and so am quite open to ideas.
This may be a bit controversial, but I'd decided to include the architecture of a computer virus in the Handbook. Despite their annoyance and damage, there's no doubt that some of them are architecturally quite intriguing.
Tuesday, April 19, 2005, posted by @ 1:49 PM
Barbecue Joe
A dear colleague of mine, Joe Marasco (aka Barbecue Joe) wrote to advise me of another pithy observation on simplicity, this one from the classic Elements of Style:
"Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts. This requires not that the writer make all his sentences short, or that he avoid all detail and treat his subjects only in outline, but that every word tell."
Speaking of Joe, check out his book, The Software Development Edge: Essays on Managing Successful Projects. Joe is one of the most effective and successful project managers I've had the pleasure of working with, and this book is full of gems from his long career.
Friday, April 15, 2005, posted by @ 11:40 AM
On Simplicity
All interesting software-intensive systems are messy creations, full of gorp required to address the fringe cases of behavior expected of the system and spotted with scar tissue (from late night, critical, gotta-do-it-or-the-company-tanks repairs) and vestigial organs (formed from old, tired software that no one has had the time to purge). However, at the core of every successful interesting software-intensive system is a sound architecture, which in turn means a simple architecture. Some thoughts on simplicity:
"The ability to simplify means to eliminate the unnecessary so that the necessary may speak." -- Hans Hoffmann
"Simplicity carried to the extreme becomes elegance." -- Jon Franklin
"Simplicity is the ultimate sophistication." -- Leonardo da Vinci
Monday, April 11, 2005, posted by @ 10:43 AM
Snowed In
I have approximately one and a half feet of snow piled in places around my home. We'd scheduled an IBM Academy workshop in Boulder this week, expecting that we would have great weather, but alas it was not so. Attendees from around the world are at this moment still drifting in, since the Denver airport was essentially closed yesterday.
Happily, power was not out at my home office, so I cocooned this weekend and caught up on some reading and attended to various sysadmin duties - ok, I played some Doom too, but that was only for research purposes :-).
Monday, April 4, 2005, posted by @ 11:18 PM
National Medal Of Technology
Congratulations is in order to Watts Humphrey who was awarded the National Medal of Technology for his work on software engineering processes.
Sunday, April 3, 2005, posted by @ 9:42 PM
Continuously-Evolving Software-Intensive Systems
Over the weekend, I performed a bit of site maintenance - installing the latest security patches on my server and preparing my wiring closet for the introduction of a new firewall appliance - and so I'd disabled logins to the Handbook. Sincere apologies for any inconvenience that may have brought you, but the site is now back online.
Most sites don't have this luxury, of course. We live in an age of continuously-evolving software, software-intensive systems that simply cannot be turned off. The navigation system in my car brings such a system to mind: so many commercial devices rely upon the global-positioning satellite system that we take it for granted. One must realize that GPS is actually provided at the pleasure of the US DoD, under the NAVSTAR program. At the same time, the European Union is considering an alternative, non-military system (Galileo) an effort that is rife with political angst.
Friday, April 1, 2005, posted by @ 2:37 PM
Fun With Maps
A bit of diversion from my typical posting. I've been tinkering with the site for the Handbook and wanted to share a bit of the process and design that went in to some eye candy.
As I explained in my previous posting, I'm trying to achieve a regionally-balanced coverage for the Handbook. To make that balance manifest, my vision was to include a map of the world, adorn it with push pins representing the location of each system, and then provide a mechanism for navigating from each city to individual systems found at that location. When I set out, I had absolutely no idea how I was going to do this, but rather I expected that when the time came, I'd find a way.
A couple of nights ago, having slogged through enough paper and itching to do some programming, I decided that the time had come. Some time ago, I'd decided upon a suitable map which I then purchased from The Living Earth, a satellite composite of a cloud-free world in a cylindrical projection.
My next task was to build a suitable data model to manage locations. I'm using MySQL for the site, behind which lies a database with a modest schema consisting of about five normalized tables (which, of course, I'd modeled first with Rational Software Architect). One of those tables provides an abstraction of each system, including its name, genre, type, status, and location. The location key points to another table that collects city, state, and country names, together with simple Cartesian coordinates representing each location's placement on a given map.
Before connecting the database to the page containing the map, I did a few experiments to settle on a simply way to render the pushpins and provide a popup menu for each. In Photoshop I whipped up a 5x5 pixel graphic for the pushpin and then used a div tag to position that image on the map. Next, I needed to attach a popup menu to that graphic, which Dreamweaver made trivial, as this was a behavior that one could drop in with a simple wizard. Studying the code that was plopped in, I simplified it a bit by hand, tweaked the appearance, then declared victory for this experiment: I knew that what I wanted to render was possible.
Next, I needed to slam out some code to generate the appropriate graphics and menus from the database. First, I wrote and tested a bean that let me talk to the location database; this was trivial, as the bean was virtually identical to all the other impedance matchers I'd written for the other tables (thank you, Eclipse). Next, I wrote some JavaScript to generate a few lines of HTML for each location: the div tag containing a link containing the pushpin graphic, adorned with suitable onMouseOver and onMouseOut calls to render a popup menu. My next-to-last step involved cutting some more JavaScript that generated the menu for each location, a simple matter of iterating over the location and systems tables and populating each menu with the name of and a link to all systems found at each location.
That finished my coding task, leaving me only to set the X/Y location of each city/state/country, an effort that I eyeballed with the help of maps from Encarta and Yahoo.
You can see the results (remember, you'll need to be logged into the Handbook first).
Thursday, March 31, 2005, posted by @ 8:22 AM
Location, Location, Location
I added a small creature comfort to the Handbook on the systems page permitting you to view by location: 30 new lines of JavaScript in one Java server page and 5 new lines of code in a one Java bean.
The reason I'm listing locations at all is quite simple: software is a global industry, and I want to ensure that the Handbook itself has a regionally-balanced coverage, although owing to the logistics of my research and the reality of the concentration of projects therein, I know I'll end up being somewhat US-centric. Deciding upon a primary location for each system requires some delicacy, because there's a vast difference among the places where a system was conceived, developed, tested, manufactured, and deployed (and each of those activities might entail multiple locations simultaneously). For simplicity, I've decided upon one primary location for each system, representing the center of gravity for where the system was developed.
As of the time of this blog, only about half of systems have been assigned a location, so don't be distressed if your favorite country/state/city is not yet represented. I likely will include at least one project from India (specific suggestions are welcome), but I probably won't find a project from Uzbekistan, Wyoming, or Yemen.
Wednesday, March 30, 2005, posted by @ 10:14 AM
Diversity, Spring Cleaning, And Frequent Flyer Programs
If you've happened to glance at the list of systems covered by the Handbook, you may have noticed the state of many of them changing from private; I've been slogging through my dead tree notes and getting many of them on the site. Additionally, in order to plan my travel for the rest of the year, I've been trying to determine the center of gravity of each system so that I can cluster my trips. It's fascinating to see the groupings that already exist. I'm trying to not be US-centric - the software industry is truly a global undertaking - but some regions of the world remain underrepresented (for example, Bora Bora). It's also the case that I've yet to find a project that I want to cover that's been led by a female software architect; suggestions are most, most welcome, for this is a gap that I definitely want to fill.
As for spring cleaning, take note that I plan to purge the user accounts of folks who have not logged in to the Handbook site in the last 6 months. I don't want to hang on to stale accounts and it's most likely that all these folks have forgotten their passwords, anyway. If I have a free moment, I'll automate the process so that I don't have to do this manually. Indeed, the number of small creature comforts I need/would like to write for the site is growing, so I'll need to set aside some late night to knock a few of these off.
Back to the travel for this project, do realize that I'm only doing this all for the air miles :-)
Monday, March 28, 2005, posted by @ 9:47 PM
The Dark Side Of Frameworks
I've been engaged in an electronic conversation with some of my fellow Rationalites and ex-Rationalites today, and on the topic of writing software that writes other software, Scott Johnson offered the following (which I quote with his permission):
But the real problem comes when we conclude we have stumbled upon a Great Idea and invite several of our best friends to use it as well. At that point our beautiful theory gets assaulted by a gang of ugly facts. Once we widen our installed base, we discover first that our framework isn't nearly as general as we thought it was. Everything we thought was constant somebody needs to change, and every parameterization variable we thoughtfully included gets set to the same value by all our users, because it turns out there's only one value that actually works. Worse, as we tweak our framework to incorporate the feedback from each user, we discover the other users don't much care for programming in a language whose syntax changes on the odd-numbered days and whose semantics changes on the even ones.
Well said, Scott.
Friday, March 25, 2005, posted by @ 10:50 AM
International Association Of Software Architects
Another sign of the growing maturity of the field of software architecture is the formation of this new group. Bill Zack has invited me to visit the group sometime, and I'll definitely do so (although, as I told him, I'm totally bummed over the reality of the Plaza going condo. This was always my home away from home while in the City that Never Sleeps.
Friday, March 25, 2005, posted by @ 10:27 AM
News Fusion
A more light-hearted entry: check out 10x10, a very clever (and cunningly implemented) site that fuses news feeds in a very unique manner.
Friday, March 25, 2005, posted by @ 9:05 AM
Contemporary Architecture
I just received a most remarkable book, The Phaidon Atlas of Contemporary World Architecture, a monstrous tome that details over 1,000 buildings in almost 100 countries. What's equally remarkable is Phaidon's catalog, which lists full books about the works of specific architects, from Le Corbusier to Richard Rogers and many more in between.
I'd love to read a book about the collective works of Charles Simonyi or even one of my architectural heros, Alex Bell.
Thursday, March 24, 2005, posted by @ 4:24 PM
Legal Limits Of The Web
There's a fascinating case playing out for Yahoo that will certainly set some precedence. The essence of the action regards content that's legal in one place (US) yet illegal in another (France). Quoting from the cited article, "Yahoo says its more than two dozen subsidiaries comply with the law in each nation where they are based. Demands that its U.S.-based portal abide by French law violate the First Amendment, and it's technologically impossible to censor its U.S. site for users in France".
A very tough call, indeed.
On a much lighter note, in case your Web dialect is not quite up with the times, check out this site.
Tuesday, March 22, 2005, posted by @ 9:28 PM
Simple And Complex Architectures
Most enterprise systems are architecturally very simple yet quite complex in manifestation: simple because most of the relevant architectural patterns have been refined over decades of use in many tens of thousands of systems and then codified in middleware; complex because of the plethora of details regarding vocabulary, rules, and non-functional requirements such a performance and security. Systems of other genres (such as artificial intelligence) are often far more complex architecturally.
Artificial intelligence (AI) systems are those that simulate or augment human cognition, locomotion, or other organic processes. AI encompasses systems that reason about and solve problems in the real world. At the extreme, AI seeks to create systems that are sentient or that mimic human behavior. Pragmatically, AI techniques have been applied to problems of artificial life, common sense reasoning, expert systems, robotics, neural networks, and swarm intelligence. AI has crossed over to mainstream domains as well and so may be found in systems for planning, vision recognition, machine learning, agents, and natural language translation.
Production is the dominant force that shapes systems of this genre: it is not completely clear how to form intelligent systems in software. Classic programming techniques, data structures, and algorithms do not appear to be adequate for building systems that exhibit human cognition. For this reason, the AI community has reached out to alternative languages (such as LISP and Prolog) and techniques (such as knowledge-based systems, Bayesian networks, fuzzy logic, genetic programming, and other generative programming methods).
Experience with AI has led to the development of a number of exotic patterns, such as subsumption and blackboard architectures.
Monday, March 21, 2005, posted by @ 2:10 PM
Searching
Over the weekend, I spent some time pondering the best way to add a search facility to the Handbook. Geek that I am, I thought about rolling my own, but also explored some open source options (such as Apache Lucene), free services (such as Google Free, Picosearch, and Atomz) and turnkey solutions (such as the Google Mini).
As I've often said, the best way to reduce the risk of any software-intensive system is to not write any software at all. This rule of thumb first led me to consider any one of the free search services, which are perfect for simple sites with lots of public content; I have to also believe that these services are very self-serving for their providers, for it puts otherwise obscure sites on their radar. However, my situation is a bit more complex, because only a tiny amount of my site is public (the opening page and the blog), while the rest lives behind a password-protected point of entry. Further complicating matters is that each user may have different degrees of visibility into the system. A naive search strategy would give hits for parts of the site that might not otherwise be accessible (and a clever person with lots of time on their hands could reproduce these hidden parts, in the same manner as happened to the Dead Sea Scrolls, much to the annoyance of the researchers who had kept translations private for some years).
So, I have a classic time/money tradeoff here. I'm leaning toward the Mini for its simplicity and power, plus the fact that rolling my own would take longer than I have time to dedicate to writing such a feature (as much as I like to cut code).
In the meantime, though, I've learned a lot about how contemporary search engines and web crawlers are constructed.
Friday, March 18, 2005, posted by @ 10:31 AM
Conference On Software Architecture
I recently had a delightful call with the members of the IFIP working group on software architecture. I wish I could have been there in person - there are many of my personal heros in this group - but unfortunately I had to meet by phone. I filled in the group on my work on the Handbook and they in turn gave me some great feedback and offers for help.
Among other things, this group sponsors WICSA, the Working Conference on Software Architecture. This will be the fifth year for this conference, to be held in Pittsburgh in early November 2005.
Oh, I made some minor changes to the forces discussion in the Handbook, adding a new category of forces, namely, values. I've become increasingly aware of legal constrains upon software (for example, under Windows, each application's window has a menu bar because Apple had patented putting the menu bar at the top of the screen and changing it as each different application became active) as well as ethical and moral ones (in theory, though we'll probably never really know, the CIA's Echelon system has elements that limit its use).
Thursday, March 17, 2005, posted by @ 8:10 AM
Complexity
I just returned from the International Conference on Aspect-Oriented Development where I gave a keynote on the complexity of programming models.
Saturday, March 12, 2005, posted by @ 10:19 PM
Heads Down
I've been heads down for about a month, among other things pushing forward on a number of fronts on the Handbook but also celebrating the 32nd anniversary of my 18th birthday. I'm off to the International Conference on Aspect-Oriented Development shortly, and before I go I'll post my keynote.
Tuesday, February 22, 2005, posted by @ 9:09 AM
Turing Award
Congratulations to Vinton Cert and Robert Kahn, recipients of the 2004 ACM Turing Award Lecture.
Tuesday, February 15, 2005, posted by @ 11:49 AM
Systemantics
One of my favorite books in my reading list is Systemantics by John Gall. The first edition was published in 1975, but there's now a new edition (retitled The Systems Bible) and it's full of wry humor. For example, John notes that "A large system, produced by expanding the dimensions of a smaller system, does not behave like the smaller system." I quoted John in my OOAD book: "A complex system that works is invariably found to have evolved from a simple system that worked" and "A complex system design from scratch never works and cannot be made to work. You have to start over, beginning with a working simple system." On design he observes that "bad design can rarely be overcome by more design, whether good or bad." Another proclamation with which I especially resonate reads "Loose systems last longer and function better," a principle that fits well with emerging service-oriented architectures.
Saturday, February 12, 2005, posted by @ 10:45 AM
Reading List
I'm an insatiable reader with an eclectic taste in books. For contemporary fiction, I enjoy Michael Chabon (The Amazing Adventures of Kavalier and Clay) and Milan Kundra (The Unbearable Lightness of Being); for historical function, Ian Pears (The Instance of the Fingerpost) and Umberto Eco (The Name of the Rose), for science fiction/fantasy, Grant Naylor (Red Dwarf) and Terry Pratchett (Reaper Man), for spiritual, C. S. Lewis (Mere Christianity) and Marcus Borg (The God We Never Knew), for political/critical, Jarrod Diamond (Collapse), for historical, Barbara Tuchman (A Distant Mirror), for anthropological, Joseph Campbell (The Hero With A Thousand Faces), for travel, Paul Theroux (The Happy Isles of Oceanis, a variety of biographies for entertainers (Harpo Marx, Charlie Chaplin), scientists (Richard Feynman, Thomas Edison), and statesmen and woman (Winston Churchill, Margaret Thatcher), plus works on science and mathematics (Fermat's last theorem, string theory) and humor (Mutts, Doonsbury).
On the professional side, I subscribe to Business Week, ECN, Economist, EDN, eWeek, Information Week, InfoWorld, MSDN Journal, PC Magazine, and Science as well as ACM Queue, ACM SIGPLAN Notices, ACM Software Engineering Notes, ACM Transaction on Programming Languages and Systems, ACM Transactions on Software Engineering and Methodology, Communications of the ACM, IBM Journal of Research and Development, IBM Systems Journal, IEEE Computer, IEEE Internet Computing, IEEE Software, IEEE Spectrum, IEEE Transactions on Computers, IEEE Transactions on Software Engineering, MacWorld, MIT Technology Review, Software and Systems Modeling, Software Development, and Wired. Finally, I've amassed a professional library approaching 2000 volumes, a collection that omits the disposable extended documentation that constitutes most of the stuff you'll find in bookstores and instead concentrates on the core topics of engineering software.
And yes, I've read all of most of these books, most of many of them, and the juicy bits of all the rest. It helps to 1) not require much sleep and 2) be a fast reader.
In the books section of the Handbook, you'll find a spreadsheet listing all of the books, journals, proceedings, trade magazines, and other gorp that's in my office. If you look inside, you'll find most of the classics plus some off-the-wall entries. If there's a classic/seminal reference you think I ought to read, please do let me know via email. When they finally carry me out in a box, I'll donate these works to some suitable museum or university, but for now, it's like having the assembled wisdom of many of my heroes and heroines all within reach (the Web is great, but there's nothing like curling up with a good technical book and a cat on your lap).
An extended thank you to all the writers, writers to be, and developers who are so busy building, running, and growing interesting systems such that you don't have time to write in traditional forms: I have learned so much from so many of you, and there is so much I have yet to learn and understand.
Friday, February 4, 2005, posted by @ 1:57 AM
The Information Machine
Check out this charming movie from the late 50's, developed for the IBM Pavilion at the 1958 World Fair in Brussels.
It's been a while since I've seen punched cards (which reminds me, I still have the first program I'd ever written, on punched cards written for the IBM 1130).
Thursday, February 3, 2005, posted by @ 8:59 PM
Gregorian Chant
At times, I think I was born in the wrong century. I've been doing some assembly language programming in the evenings where I'm thinking in microseconds, and yet there are days - to quote a line from Tracy Kidder's Soul of a New Machine, where I long for no unit of time shorter than a season.
If you are into Gregorian Chant, check out this site. I've been working on a piece for performance next week, Misereris omniumm, a traditional introit for Ash Wednesday. Thanks to Steinberg's Cubase for the Mac, I was able to reverse engineer a recording and create suitable sheet music.
Wednesday, February 2, 2005, posted by @ 10:58 AM
Architecture Metamodel
For those of you with Rational Software Architect, I've posted the metamodel I'm using for the Handbook.
Tuesday, February 1, 2005, posted by @ 9:51 PM
Speaking of the Mac
A little humor for the day, from one of my fav sites.
Monday, January 31, 2005, posted by @ 11:11 PM
Stress-Driven Development
Tis much wisdom therein.
Monday, January 31, 2005, posted by @ 6:59 PM
Bravo, Mr. Gates
This week's issue of the Economist has a couple of interesting articles regarding the most recent grant from the Bill and Melinda Gates Foundation, some $750 million for the Global Alliance for Vaccines and Immunization. The article goes on to suggest that "biology is basically a software problem in which biochemical pathways stand in for computer algorithms." A bit naive of a comparison, although increasingly it appears that one limiting factor in genomic research is the ability to develop the right software.
On a FAR more mundane subject, I'm toiling away this evening on the Handbook's architecture metamodel. I've been classifying the three foot pile of notes I've collected on various systems, and have realized that there were some gaps and overlaps in instantiating the earlier version of the metamodel. As I mentioned, I've been using the Rational Software Architect, which lives inside Eclipse; it's really very sweet! If you happen to look at the metamodel section while I'm still in progress, you'll find some new models and some old Rational Rose models - the contrast in the visualizations reminds me of the gulf between the first Macintosh operating system and the current OS X.
Sunday, January 30, 2005, posted by @ 11:51 PM
New Models
I've been converting some Handbook models from Rational Rose to Rational Software Architect, so you'll notice some cosmetic changes over the next few days. I'll post the RSA models for the architecture metamodel once they are stable.
Sunday, January 30, 2005, posted by @ 10:01 PM
Limits And Forces Yet Again
The glossary now contains definitions that correspond to the forces I've written about that shape a system's architecture.
Sunday, January 30, 2005, posted by @ 9:03 PM
Auction At Christie's
For those of you with some extra millions to spend, check out Christie's website for an auction of the Origins of Cyberspace Library, a set of fascinating original historical documents collected by Jeremy Norman. You'll find therein letters from Charles Babbage with notes by Ada Augusta, Countess of Lovelace, as well as papers and reports from Eckert and Mauchley, Turning, Shannon and many other luminaries.
The auction will be held in New York City on February 23rd; it just so happens I'll be celebrating my 50th birthday on the 27th of February, just in case any of you feel inspired to do some gift giving :-).
Friday, January 28, 2005, posted by @ 11:54 PM
Limits And Forces Again
I've polished the section on forces: four fundamental forces, twelve subclasses of those forces, and thirty-four children.
Everything is a problem of classification. Indeed, there are two kinds of people in this world: people who divide the world into two classes, and those who do not.
Friday, January 28, 2005, posted by @ 11:28 AM
Limits And Forces
For your reading pleasure, I've been writing some bits of the general architecture section in the Handbook dealing with the forces on a software-intensive system.
Thursday, January 27, 2005, posted by @ 8:30 AM
Hope For The Future
Fast Company has reported on its list of top 25 jobs for 2005, and number three on that list is computer software engineer. I particularly liked the rationale for why this job is considered hot: "It looks like computers are here to stay and that they might have a significant role in the future."
I'm SO relieved to hear that! I was convinced that computers were just a passing fancy and that I should start looking for a real job.
Wednesday, January 26, 2005, posted by @ 11:33 PM
(Civil) Architecture
I've posted a set of books on civil architecture, including ones on theory and patterns on the Handbook site.
Tuesday, January 25, 2005, posted by @ 11:40 PM
Forces
I've been giving some thought to a canonical way to describe the forces upon a software-intensive system - the word "forces" here means "a powerful effect or influence." As noted by Henry Petrosky in Small Things Considered, there is no such thing as a perfect design. Indeed, every engineering process serves to generate a solution that reasonably balances the specific forces upon the system under development; relax a certain constraint or turn up a given force and the team would produce a subtle- to materially-different solution. In the domain of software, many of these forces take the form of ilities, such as dependability, scalability, and maintainability.
I've jotted down a list of about 50 ilities, but need to give a bit more thought to how these specific ilities cluster.
Tuesday, January 25, 2005, posted by @ 9:19 AM
Computer Science And Faith
I'd been cataloging some books this morning and came across a title I'd read a few years ago, a work that fascinated me then and still captivates me today: check out Things a Computer Scientist Rarely Talks About by Don Knuth.
Tuesday, January 25, 2005, posted by @ 7:46 AM
Let The Games Begin
Yesterday morning I wrote of the complexity of offensive and defensive military systems. On the public battleground of sports, there's a similarly complex system in the form of support for the Olympic games. This system is on my list for study in the Handbook and yesterday, following a dialog I had with Graham Berrisford, I came across a case study from Atos Origin on their development of the systems in support of the Athens 2004 Olympic Games, systems known as the Information Diffusion Systems (a large intranet for public and local access to game results, biographies, historical records, and other background information) and the Games Management System (addressing the operations of the games, from transportation to VIP handling to housing to athlete and attendee management). Atos Origin has the contract for the next several Olympic Games. IBM developed and operated the Olympic systems for 40 years, but ultimately business and economic issues driven by the International Olympic Committee led to a new contract with SchlumbergerSema, who was ultimately acquired by Atos Origin in early 2004.
The Atos site has a wealth of interesting information, and the blog by Claude Phillips, Atos Origin's chief technologist, makes for some compelling reading in his daily operational diary.
Monday, January 24, 2005, posted by @ 10:18 PM
Java On A Chip
I've written of my wired home before; tonight I spent a little time on a phone gizmo for my PBX which I lashed together using a Parallax Basic Stamp, a cute little device that's easy to program and easy to interface to the real world. Parallax sells the Javelin Stamp which is far more powerful and runs Java. I didn't need that power for this current project, but have some uses for it to power a multi-legged robot.
Monday, January 24, 2005, posted by @ 10:55 AM
DoDAF
If you think your commercial enterprise system is complex, place yourself inside an operation command and control system for warfighters, and it will make your problem look like HelloWorld. Such offensive and defensive military systems are typically hard or near real-time (rebooting in the middle of a fire fight is a wee bit embarrassing), cannot fail (otherwise people will die or opportunities to get the bad guys will be lost), exhibit bursty behavior (war is generally characterized by long periods of boredom interspersed with brief episodes of intense panic), are not so much applications as they are systems of systems (with lots of legacy and lots of impedance mismatches between systems within which one must stuff people), are warped by historical, organizational, national, and geopolitical forces (imagine having a Senator on your development staff), and are constantly changing (yet individually have incredible inertia and thus resistance to change).
I've got a few such systems in mind for the Handbook, the challenge for me being that some of the really interesting ones are classified, although it's still amazing what some solid detective work will uncover from public documents.
One of the more important architectural standards in this space is DoDAF, the DoD Architecture Framework, a successor to C4ISR, the Command, Control, Communications, Computers, Intelligence, Surveillance, and Reconnaissance architecture framework. DoDAF recommends 26 different architectural workproducts, organized into four architectural views (operational view, systems view, technical standards view, and all view). Having worked in the DoD space, I absolutely respect the standards work people are trying to do here - this is a really hairy problem - but, my personal opinion (and not necessarily that of my employer or of any other person, living or dead) is that the DoDAF (and its predecessors), while well-intentioned, encourages the production of deeply engineered and disparate work products that give the illusion that one is doing systems architecture.
Thursday, January 20, 2005, posted by @ 4:25 PM
Pattern Resources
Today I immersed myself in a sea of books; for your reading enjoyment, I've placed a set of references on patterns in the book references (remember, you'll have to log in).
Wednesday, January 19, 2005, posted by @ 10:45 AM
Site Maintenance
I set aside last night to do some work on the Handbook site, cleaning up some dead links, improving the editing facilities to be more like that found in the Wikipedia, and porting some metamodels to Rational Software Architect. It surprises me - but it shouldn't - at how easily software rot permeates a site unless one adds energy to it on a regular basis.
Thursday, January 13, 2005, posted by @ 9:42 AM
Failure of Imagination
Brian Andreas is one of my favorite artists; in one of his books he writes "In my dream, the angel shrugged and said, If we fail this time, it will be a failure of imagination and then she placed the world gently in the palm of my hand."
Capers Jones (Patterns of Software Systems Failure and Success) and Robert Glass (Software Runaways: Lessons Learned from Massive Software Project Failures) have both detailed various kinds of failure modes in software-intensive systems. In my experience, when complex software system development fails, it does so for one of four reasons: a failure of imagination, extreme overengineering, a benign neglect and lack of involvement of the needs of the system's various stakeholders, and a failure to grow the system incrementally and iteratively. As a recent example of the latter kind of failure, the FBI's Virtual Case File looks like it will be scrapped, with a few hundred million gone to waste.
While on this riff of artists, one of my favorite directors/animators is Hayao Miyazaki the genius behind such wonderful films as Spirited Away. In a recent interview in the New Yorker (January 17th, 2005, page 69), Miyazaki's approach is described as uniquely Japanese: "In traditional Japanese architecture, you start with one room - maybe the alcove, where you hang some pictures. You spend a lot of time tying to pick the right shelves, the right little pillar, what kind of handles the drawers will have. Only when you finish that room do you worry about the next. In the West, you start from the general and go to the specific. A Hitchcock movie might start off with a panorama of the city, and then a house, and then the stairway inside. If you're a Japanese filmmaker, you might start with the railing on the stairway."
For the software architects who read this blog: do you tend to start with the city or the railing?
Wednesday, January 12, 2005, posted by @ 10:29 AM
Other People's Blogs
The past few months, I've taken to tracking a few other blogs, but have been negligent in mentioning them here. Not in any particular order, there are the boisterious belles lettres from Don Box, the jubilant journalism from Joel, and the tantalizing tales from Stefan Tilkov.
Speaking of blogs, check out Mike Marshall's commentary on Don Box's reaction to Stefan's thoughts regarding Don's question about the UML, MOF, and domain-specific languages.
Wednesday, January 12, 2005, posted by @ 9:22 AM
Eating Your Own Dog Food
I've been merrily using Rational Software Architect these past few weeks to capture models uncovered in my archeological digs for the Handbook. Speaking of rational architects, check out what this site has to say about the mindset of the architect.
BTW, why anyone would willing want to eat dog food, whether it's their own or not, has always disturbed me. This is a meme that seems to have been given life inside Microsoft some years ago and then propagated by the dot bomb, er, com, crowd in the 90's. May that phrase rest in peace, along with all the other detritus of the 90's tulipmania.
Tuesday, January 11, 2005, posted by @ 9:11 AM
Company Stuff
For the twelfth year in a row, IBM has earned more US patents than any other company in the world (check out the thread about this story on Slashdot). What's doubly cool is that IBM has opened up some 500 of its software patents to open source developers in an effort to produce a common ground for innovation. While I'm tooting IBM's horn, I neglected to mention a few days ago that IBM has pledged one million dollars in support of the tsunami relief efforts (and that's in addition to all the personal efforts of IBM employees in the effected regions).
This is such a great company.
Monday, January 10, 2005, posted by @ 8:55 AM
Physics Of The Heart
Well, I'm not dead yet.
I just returned from consultations at the Mayo Clinic and the Texas Heart Institute. The advice I received from thoracic surgeons at both locations - contrary to the advice I'd received in Colorado - is that the risk of open heart surgery requiring circulatory arrest currently exceeds the risk of my ascending aortic aneurysm rupturing. Therefore, the plan is to manage my blood pressure via drugs to keep the pressure and rate in the low-normal range and to stay away from weight lifting, then to monitor my condition again every three months with a CT scan, primarily to measure the rate of change of the aneurysm. In short, I still have a live grenade in my chest, but the risk of putting the pin back in currently exceeds the chance of it going off unannounced. At least for this first period of waiting, this puts me in an awkward state of limbo, for if there is a statistically significant change, surgery will be warranted at the end of that period. Pragmatically, this means little change to my lifestyle, though I'll be disinclined to plan international travel far away from medical care I could trust until I have a better baseline of my condition and the first derivative of change.
My sincere thanks go out to the many of you who have written me offering your thoughts and prayers.
Along this journey, I obtained a crash course in the physics of the heart. The underlying principle that dictates my condition is Laplace's Law: there's a limit to the tension that aortic tissue can absorb, and as the size of the ascending aorta grows, there's a point beyond which the risk of rupture grows exponentially. The precise mechanism that causes such aortic defects is not fully understood, although there is some correlation to genetic defects such as Marfan's Syndrome (which I don't have), a condition that affects the body's connective tissue.
The insidious thing about my condition is that it's essentially asymptomatic until it ruptures, and when it does, it's often misdiagnosed in the ER as a heart attack and unless you happen to be lying on an operating table with your chest cut open at the moment of rupture, it's almost always fatal (as in the case of John Ritter). Kevin Helliker of the Wall Street Journal wrote a series of articles regarding his discovery of an aneurysm of the ascending aorta. Kevin and I corresponded, and he's put me in touch with a researcher tracking the genetic connections to this condition. In addition to John and Kevin, I'm in some interesting company: Albert Einstein died of a rupture abdominal aortic aneurysm (a condition that's easily treated today) and Laura Branigan died of a brain aneurysm in early 2004. Though not aneurysm-related, I was amused to see on the wall of one of the thoracic surgeons I visited the photos of various clients he'd treated for vascular issues, including Captain Kangaroo aka Bob Keeshan and Governor Schwarzenegger.
I've essentially lost a month, having been blindsided by this condition in early December and so, enough of these non-software architecture issues for now.
Friday, January 7, 2005, posted by @ 10:29 AM
Debates
Paul Ballard, editor of TheServerSide.NET wrote me to point out a debate taking place on the site regarding software factories. I'll chime in next week after I pull myself back to reality after a week of consultations with various thoracic surgeons around the country.
Sunday, January 2, 2005, posted by @ 10:39 AM
Interdisciplinary Connections
A dear friend of mine, Joe Marasco, sent me a link to the proceedings of a workshop held in Princeton in celebration of John Archibald Wheeler's 90th birthday. Among many other things, Wheeler was the thesis advisor for Richard Feynman, one of my heros. In those proceedings, George Ellis presented a paper titled True complexity and its associatedontology which apparently cited my work in object-oriented design and classification; I've got a copy of the proceedings on order, and methinks I shall track down George and have a lively dialog with him.
I often think that if software had not found me, I would have been a quantum physicist, or a priest, or an itinerant musician. I suppose I've ended up being a little bit of each.
Saturday, January 1, 2005, posted by @ 9:40 AM
Reboot
It is strangely comforting knowing the likely means of one's own death.
My father died of an aortic aneurysm; my uncle died of an aortic aneurysm; this summer, my 20 year old nephew died of an aortic aneurysm; my sister has been diagnosed with an aortic aneurysm; just before Christmas, I too was diagnosed with an aneurysm of the ascending aorta. In effect, I have a live grenade in my chest, and the pin has been pulled. Although I am otherwise in excellent health, over time the risks of my dying from this defect lie on a curve that approaches one. This condition is operable, but it does require major open heart surgery involving circulatory arrest, and thus the risks of neurocognitive deficits, paralysis, rental failure, infection, or death also lie on a curve that approaches one. My current task, therefore, is to make a judgement where those curves intersect, at which time the risk of the aneurysm are greater than the risks of surgery. I have been searching the known universe for the right organization and surgeon to address my case, and thus far my search has led me to the University of Colorado Hospital, the Mayo Clinic, the Texas Heart Institute, and the Cleveland Clinic. IBM's chief medical officer has assisted my search, given the company's vast connections with medical institutions around the world. It is not clear how events will unfold, but in the interim, life does go on.
While this local drama consumes me, my thoughts and prayers go out to a much more global drama, and the lives of those devastated by the recent tsunami. The raw power of the earth and the ocean are humbling indeed, to us who try to control only tiny structures composed of silicon and thought.
This is most somber beginning to the new year, I realize, but let me offer to you my wishes for a healthy, prosperous, and lively year.
|
|
|
|