I just read this story
that the New York Stock Exchange halted trading at 4 PM Eastern time because an apparent system bug was preventing orders to be filled.
I actually see this story as a reminder of how amazingly reliable software can be. Think about it; how many stories have you read about the US stock exchange not working? This is the first I can remember and I've been following stocks for about four years (ever since I graduated from college and was able to afford them).
Just for fun, a non-scientific calculation:
- The NYSE is open all weekdays except US holidays; this is approximately 250 days a year
- Between the hours of 9:30 AM - 4:00 PM (Eastern US) each business day, it must process a huge number of transactions (app. 1.6 billion per day)
- This four minutes downtime today, assuming it was the only downtime in the last four years (which is my understanding) would give the NYSE an availability during business hours of 99.999%
That's an impressive track record and not surprising, since risk of financial loss, mayhem, and lawsuits are strong negative incentives. But fear of financial loss this isn't the strongest negative incentive in the software industry; some systems need to worry about failure resulting in the loss of human life.
A good example of this is the US space shuttle's flight software. As detailed in chapter 6 of the book The Capability Maturity Model
, during critical mission phases (e.g. ascent and descent) the space shuttle's flight software runs redundantly on four of the five onboard computers. In the case of a catastrophic software failure during critical phases, a backup flight system, developed by another contractor
, is ready to go online if necessary. Because of the high quality of the software, this backup system has never been turned on.
Who developed such a high-quality system? IBM of course! The shuttle flight software project detailed in the book was managed for many years by IBM's Federal Systems Division. Sadly, IBM had to sell off this division to Loral in the early 1990s when Lou Gerstner
and co. were desperate for cash and the Federal Systems Division was profitable for IBM but not integral to IBM's resuscitation strategy.
But this story has a happy ending for IBM. Many of the Federal Systems Divisions leaders that left IBM later came back to IBM in the late 1990's. Indeed, almost my entire report-to chain in IBM Global Services (IGS) left IBM for a time but later came back. In fact, Mike Dawkins (head of IGS operations) and Rick Padinha (head of the worldwide Application Services division) both worked on the space shuttle software team.
Every now and again, I'll find myself becoming a little too pleased with myself for some component I've designed or some presentation I've given. When this happens, I like to remind myself about the Federal Systems Division folks in my organization and what they accomplished. This always helps put my contributions in proper firstname.lastname@example.org
if you haven't already. Once again, for those not aware, Irving is responsible for IBM's technical strategy and innovation and is one of our best email@example.com
One of the challenges for people who deal with IBM in some capacity is understanding its breadth. We're quite simply a huge company with a broad set of products and services.
I've worked at IBM since February 2001 and am still learning about it all of the time. I have a pretty good grasp of IBM Global Services
(where I work) and Software Group
(with whom I frequently collaborate) but know less about our other P&L division: Server and Technology Group (STG). I'm working to correct this deficiency.
For those of you also in the dark, STG is responsible for our eServer line of servers
and technology components
Over the last two years I've chatted with STG folks exactly zero times, but today I chatted with two folks. First, I had lunch with Rob Goldiez, who is a manager in the PowerPC custom chip design unit. He works with companies like Sony, Cisco, etc. who want to leverage the Power architecture for their devices. They take the basic Power components and customize them for the companies' devices. I talked to him about the commoditization of software and asked him if something similar was happening in hardware. He said it was, but not for the same reasons as in software. Software has funny economics; it costs a lot to make the initial copy of some software product, but each additional product has a marginal cost of approximately $0 (since software can be infinitely replicated).
Chip design has very different economics, primarily because chips are physical entities (unlike software) and therefore require physical infrastructure to produce. These incur massive fixed costs to create a new plant - witness the $2.5 billion investment IBM made in the Fishkill 300 mm plant
in 2003. So it's not really possible for chip design to be commoditized by open source, simply because even if you had the necessary design know-how (which according to Rob is in short-supply), you'd still need a plant to churn out the chips. However, chip design is being commoditized by lower-cost manufacturers (witness all of the chip plants opened in Taiwan over the past couple of years) and also by "good enough" requirements where more and more customers simply don't need really high-end chips that IBM specializes in.
Fortunately, there are still many customers who do
need IBM's cutting edge technology and customization technologies. A shining example of this is that each of the next-gen video game consoles: the XBox 360
, the Playstation 3
, and the Nintendo Revolution
each will use custom PowerPC technology for their processor(s).
So that was lunch with Rob.
Then I was at the Research Triangle Park Barnes & Noble
to pick up some new software books (a favorite past time) and I saw someone in the cafe with a Lenovo Thinkpad T40
(the current model of choice for IBM employees). I asked him and sure enough he works for IBM as well, in STG like Rob. He said that he works on UI design for the xSeries
(Linux/Windows on Intel) brand of servers. This struck me as odd at first because as I asked him, "hmm, I only ever used a command line interface on a server" to which he responded "you have to design that smartly as well!" I never really thought of a command-line in the context of UI design, but as he explained it, it made a lot of sense. The challenge is to come up with standard commands across brands (xSeries, zSeries, etc.) and also across operating systems (Linux, Windows, zOS, etc.) and also ensure that the command-line level commands correspond well to programming-level APIs.
Well, as I said at the beginning of this post. IBM's a huge company, and there's always more to learn. It sure is fun learning experience though if you're a firstname.lastname@example.org
A while back I wrote some commentary
on an emerging story about an FBI case management software system that had turned into a trouble project.
Today the Washington Post
has a nice follow-up article reporting on the contents of an internal post-mortem that the Post acquired.
Reading the new Post article it is clear that the FBI project encountered no novel software engineering problems; they seemed to have encountered the same problems of software engineering that have been with us for time immemorial
Why do we as an industry have such trouble understanding and dealing with these problems which have been so well documented? Is it because so many people refuse to study their history? Or is it because you can't simply read about the problems, you have to experience them on a troubled project before you truly understand email@example.com
As you may have heard :-) Apple has decided to use Intel chips rather than IBM chips in their desktops and laptop computers
A natural response is to go into damage control mode and enumerate the reasons why this isn't a big deal for IBM, but I don't think that will serve any useful purpose, since everyone would see it as not honest discussion but rather... well... damage control.
So, as an IBMer, I'll simply thank Apple for their 10 years of collaboration, congratulate Apple and Intel on their new partnership, and wish them continued success together in the future.
Let me take the rest of this post to say some positive words about Apple:
- I don't currently own an Apple but am still interested in trying one out in the future, especially when my 1 year old son gets to be a little older.
- I've always loved Apple's hardware designs. My wife and I have browsed in the local Apple store many, many times and marveled at the elegance of their jumbo LCD monitor.
- One of these days I'd really like to own an iPod. For any friends and family out there, let me just remind you that I turn 28 in exactly two months and one day!
PS - Congratulations to Paul Thurrott of WinInfo for breaking this story many, many weeks ago
.4:55 PM EDT update: Just read in this press release that Mac developers will have to pay $999 for a "Developer Transition Kit". That is not firstname.lastname@example.org
Last night I met up with some fellow bloggers at the Raleigh Blogger meetup at Cafe Cyclo in Raleigh.
I don't know my way around Raleigh whatsoever (I live in Durham), so I first drove to Bobby Woolf's
house. We then went together to Cafe Cyclo which turns out to be a groovy little independent coffee shop / bar / restaurant (you know, the kind where the staff wear all black and the menus are drawn in fancy colored chalk).
We got there on time at 6:30, and there were only a few other people in the bar: some attractive females having coffee at a table and some athletic looking guys drinking beer at the bar. We quickly deduced that neither of these two groups were the Raleigh bloggers. But around 6:45, other slightly geeky-looking guys carrying laptops showed up, so we knew that our party had arrived.
Five people showed up. Besides Bobby and myself, there were:
It was a fun evening of tech conversation and beer consumption. I particularly enjoyed talking to non-IBMers Dave and Scott to hear different perspectives on open source, Java, J2EE, blogging, outsourcing/offshoring, the recently published IBM blogging guidelines
, and working at our respective companies.
I had not heard of Dave before but apparently his Roller software is quite a popular blogging package. In fact, I'm pretty sure we use it for our internal blogs, BlogCentral. One very ironic part of the conversation was when I argued that Sun should not
open source Java and Dave argued that they should (typically IBM people and Sun people take the opposite stances).
Another interesting thing is that when we talk about a Blogging interest group, we didn't take into account that some of the people (Bobby, myself) are mere blog users, whereas the other folks (Dave, Scott, and Josh) do a lot with blog software and related technology development.
Overall a fun night. Was very glad to make the connection with Dave, Scott, and Josh, and looking forward to future Raleigh blogging email@example.com
One of my favorite Java books is Effective Java
by Josh Bloch, formerly of Sun, now of Google.
I was just browsing on the Addison-Wesley site and noticed that Josh and co-author Neal Gafter have a new book coming out on June 29th called Java Puzzlers: Traps, Pitfalls, and Corner Cases
. This is definitely worth a look if you're a Java programmer, based on the quality of Effective Java
A couple of weeks ago I wrote about
the Genographic project
that aims to understand the paths that the human race took from our origins in Africa to migrate and populate the world.
A few new items:
According to a recent internal report, 6,000 IBMers have participated in the Genographic project so far. Anyone, IBMer or not, can participate, so if you'd like to, go here
There has been a great deal of discussion around the IBM blogging community and around the greater blogosphere regarding what constitutes "open" or "not open" and what constitutes a "standard". Bob Sutor recently posted a useful diagram
that shows how openness is a spectrum, not a binary value.
I'd like to take Bob's spectrum one step further and turn it into a two-dimensional matrix that expresses two somewhat related concerns: degree of access to the specification and the degree of design inclusiveness.
Some argued that Microsoft's recently announced Office XML format
was not open because Microsoft defined it outside of any standards body. But along with Stephen O'Grady
, I don't think this tells the full openness story because it only considers openness of design inclusiveness. As Stephen pointed out, the Office XML format is an open specification in the sense that its schema has been (or will be) published to the world vs. earlier MS Office formats whose schemas were guarded like the formula to Coca Cola. Of course, the previously unpublished binary schema hindered interoperability; conversely the publicly documented specification will help interoperability since presumably any interested party can create an adapter to produce or consume Office-compatible XML.
But this isn't the full picture.
Along with an openly published specification, we must also consider the degree of design inclusiveness. Many people appreciate that Microsoft has provided open access to the specification, but still dislike the fact that Microsoft developed this specification outside of any standards body and is not legally prohibited from changing the standard unilaterally (though there indeed may be customer pressures not to do this).
So we can say that the new MS Office XML is open in terms of public access to the specification, but it is not an open standard, since Microsoft exclusively owns its design and modifications going forward.
So getting back to extending Bob's spectrum of openness, I would draw it this way to show both availability of specification but also degree of inclusiveness of design (and future modification). I've put a couple of other things in the matrix just for example; we could argue about their exact placement, but they should be considered demonstrative, not absolute.The openness matrix (lovingly drawn and saved in proprietary PowerPoint format)firstname.lastname@example.org
On Friday I was reading TheServerSide.com
web site and noticed an advertisement for a No Fluff Just Stuff
(NFJS) conference in Research Triangle Park (4 miles from my house in Durham).
This was the first I'd heard of this conference, which was too bad because I've heard good things about this conference. Also, I've emailed a few times with Ted Neward
(one of the NFJS presenters) about his recent Effective Enterprise Java
book, and my Rational Edge review of this book
So, just on a whim, I sent an email to Ted, and copied Bobby Woolf
(who has also read Ted's book) and mentioned the conference and asked if there was a chance to get together. Ted responded and to make a long story short, Bobby and I ended up at Stu Halloway
's house on Saturday night to hang out with Ted, Stu, and some of the other NFJS guys.
It was a really fun night. It turns there were a bunch of guys whose books I'd read (Bruce Tate
, Jason Hunter
, etc). Also, there was lots of yummy food and drink, and Stu's house was incredible. Bobby and I both have pretty big houses down here, but Stu's house gave us both house envy.
Bobby played poker with about half of the guys, while I played a board game called Hacker
. It was a lot of fun but I did very poorly (Ben Galbraith
won). After playing Hacker
and eating some more yummy barbecued pork, the guys broke out yet another board game, this one a World War II strategy game that seemed incredibly complex to me. The more experienced players spent 45 minutes explaining the rules to me, and 30 minutes helping me to execute my first move, after which it was time for Bobby and I to leave!
So it was a really fun night, good to put some faces with the names on No Fluff Just Stuff, and also ServerSide.com. Also, we met a couple of guys who are local here (Stu and Justin Gehtland
) so hopefully we'll hang out more with those guys in the future.
If the No Fluff, Just Stuff tour hits your town
, you should try to check it out. These are some really smart and really fun guys.
PS - One other observation - nearly everyone from the NFJS crowd had a snazzy Apple laptop. This struck me as a bit odd at first, but then I realized that this is one of the benefits of working on an OS-neutral development platform
!Update: Bobby Woolf wrote a short post about this as well. email@example.com
This month, I'd like to recommend the book Freakonomics
by Steven Levitt and Stephen Dubner.
This book basically uses economic analysis techniques to challenge conventional wisdom and prove nonintuitive causal relationships amongst a wide variety of topics.
You may be turned off by the idea of reading an economics book for fun. You may have memories (or nightmares) of a long, arduous, boring semester of microeconomics in college. But this book is highly readable. The authors use a conversational tone that is light on economic jargon.
Some of the chapters are better than others. For instance the chapter that explained the economics of an inner city drug gang was fascinating; the chapter on baby naming patters was tedious.
The other thing I liked about this book was how it explained the difference between correlation and causation. I'd frequently heard the saying "correlation does not imply causation" but I didn't really get it until I read this book and saw how Levitt uses logic and data to both disprove pseudo-causal relationships and provide evidence for likely causal relationships.
The only thing I didn't like about this book was the glowing quotes about Levitt between chapters. It seemed as if the publisher was trying to create a cult-of-personality around "the boy genius economist" which was quite annoying. But that aside, it's definitely worth a read.
PS - If you're interested in reading some of Levitt's stuff without buying the book, many of his papers are available online
One of my responsibilities in my IBM Global Services Systems Engineering and Architecture group is to build up our skills in relevant software engineering tools. For client engagements where we have someone playing a consulting architect role, we're moving the department towards the standard use of the Rational Software Architect
and Software Modeler
For modeling software systems, traditionally our more junior architects tend to use PowerPoint
, while our more experienced architects use Rational Rose or XDE (which are now bundled as one product
). So ramping up skill on Software Architect and Software Modeler faces two types of resistance:
- Getting junior architects to move to modeling with strong semantics (vs. ambiguous box-and-line diagrams)
- Getting experienced Rose/XDE users to move out of their comfort zone to a new (better) tool
So to help encourage adoption of RSA/RSM and to help build up our skills, I'm starting an experiment on my blog. Over the next couple of months I'm going to attempt
to write up an ongoing series of posts about how to effectively use these tools to design software-intensive systems.
My goal with this effort is two-fold:
- Document, in a very consumable format, the basic and advanced use cases of the Software Architect and Software Modeler tools. My hope is that members of my department and other RSA/RSM users will build their skill with the tools and use them more effectively in their jobs as architects and designers.
- Learn more about the tools myself, as I study them for my posts.
I have some basic ideas of topics to cover, but I'm open to suggestions, so feel free to post a comment below or send me an email if there's a general modeling topic or a specific RSA/RSM topic you'd like me to cover. Additionally, I've asked several members of the RSA/RSM team to monitor these posts and elaborate on key points and point out any mistakes I make. Hopefully they'll take me up on this offer.
Look for a first post later this week on the differences between RSA and RSM which should help you decide which one is right for you.
In the meantime, I'd like to suggest that you read the article "The Value of Modeling
" by Gary Cernosek and Eric Naiburg, both of IBM Rational. It provides good background on why you should care about modeling in the first place.Technorati: rational software architect, rational software modeler, software modeling, firstname.lastname@example.org
CorporateBlogging.info has a short article
discussing IBM's internal blogging system, including a couple of screenshots. Unfortunately it didn't include the logged-in view of the internal blogs, which shows a personalized view of recent posts, responses to posts, and responses to comments.
As I mentioned last week, our internal blogging system runs on a customized (and horribly backleveled!) version of Dave Johnson
Thanks to Michael Lowry
of IBM Sweden for the heads up (via his internal blog of course!).Update: James Governor of RedMonk posted some commentary on my comment about IBM using backleveled Roller software internally. James Snell and I commented with some additional context.Technorati: corporate blogging, ibm email@example.com
Just heard about
and started using Password Safe
to store all of my different passwords in a strongly encrypted file. Why can you trust it? Because it was designed by Bruce Schneier
, the Godfather of digital security.
I will soon be able to delete my unencrypted "passwords.txt" file that has given me so many ulcers over the years!
Thank you Bruce!
PS - Here is my review
of Bruce's excellent security primer, Secrets and Lies
I mentioned yesterday
that I'm going to start an experiment of mentoring some IBMers on the effective use of Rational Software Architect via this blog. This is the first real post on this topic. If you have no interest in the Software Architect tool, you may as well stop reading now.
In late 2004, Rational announced a new wave of desktop products
, codenamed the "Atlantic" wave. Each product was built on top of the Eclipse v3.0 platform and packaged based on the different roles in the software lifecycle. They included:Tools for Design and Construction roles:Tools for Software Quality roles:
So lets assume that you have the title of "architect" (or something thereabout). Which one of the above tools above would you use? Your first reaction would probably be: "I'll use the Software Architect product of course!" but before I'd agree with you, I'd ask you to describe the key activities that you, as an architect, perform. This is key, because different groups define the role of the software architect differently.
To grossly simplify a complex argument, let's just say that we have two basic types of architects:
- those who design the system but do not write code
- those who design the system and also code parts of it
Now looking at the tools above we can safely say that the Software Modeling product, with its focus on pure UML modeling and requirements integration, supports the type of architect who doesn't write code, while the Software Architect product, which includes both UML modeling and coding tools, supports the type of architect who does write code.
The Software Architect product is quite simply a superset of all of the other Atlantic desktop products. It has all of the development capabilities of Application Developer and Web Developer, and all of the modeling capabilities of Software Modeling, plus several features that are unique to it including model-to-code transformation capabilities, integration with the Rational Unified Process (RUP), architectural discovery capabilities (a.k.a. structural analysis), and C++ tools. A comparison of the tools and their features in the tool stack below. In this diagram, the colored boxes represent products. Also, if one product is above another in the diagram, it includes the features of the product(s) below it. Since Software Architect is at the top of the stack, this indicates that it includes the features of all other products.Relationships between several of the Rational Atlantic desktop tools; tools higher in the stack include tools lower in the stack
(click to enlarge)
Because of the fact that Software Architect includes everything, it is naturally much bigger than Software Modeler. Luckily, most people these days have more disk space than they could ever use, so this shouldn't be an issue. Also, Software Architect is more expensive than Software Modeler, which may be an issue for some people.
Almost all of the architects in my IGS Systems Engineering and Architecture department are architects who do not code, so it might make sense for these articles to focus on Software Modeler. But I'd like to keep my options open to eventually delve into model-to-code transformations and application analysis, so I will focus on the Software Architect product.
So the first assignment for anyone following these tutorials is to get the tool
. If you work for IBM, you can get it internally from the Xtreme Leverage portal downloads page. If you do not work for IBM, you can get a trial version from the Rational trials and betas
page. As I said before, it's big. Go ahead and download all of the different pieces (even the optional ones) to ensure that you're not missing functionality later.
So that's enough for an initial entry on learning Software Architect. In the next entry, I will discuss the origins of the Unified Modeling Language (UML), how modeling fits into the software lifecycle, and some of the controversy surrounding formal modeling.Further Reading
For some perspective on the controvery surrounding the role of the architect, you may enjoy the article "Who Needs an Architect?"
by Martin Fowler of ThoughtWorks.Acknowledgements
Thanks to Emeka Nwafor and Charles Rivet of the Software Architect / Software Modeler product management team for their help on explaining the different capabilities of the different tools. Thanks to James Governor
of RedMonk for some valuable advice on using the blog as a mentoring mechanism. Thanks to Bobby Woolf
for pointing out that I hadn't defined what "Atlantic" was in the original post (since revised).Technorati: rational software architect, rational software modeler, software modeling, firstname.lastname@example.org