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[Read More]
Software architecture, software engineering, and Renaissance Jazz
From archive: April 2005 X
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.[Read More]
gbooch 120000P81R 861 Views
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.
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 here (remember, you'll need to be logged into the Handbook first).[Read More]
gbooch 120000P81R 770 Views
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.[Read More]
gbooch 120000P81R 728 Views
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.[Read More]
gbooch 120000P81R 719 Views
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 :-). For your reading pleasure, I've posted an updated spreadsheet of the books in my office.[Read More]
gbooch 120000P81R 669 Views
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.[Read More]
gbooch 120000P81R 641 Views