Tuesday, September 23, 2008

The Horizontal Issues

I think I'm going to shift gears from talking about JavaScript and move up a couple levels to architecture. The ZJS project page will be the place to find my further ramblings in that area.

A recurring theme for me lately has been the ubiquity of what I'll call the "horizontal issues" that effect software systems. In particular servers, but most of these issues effect all software designs. While I want to focus on the architecture part of software for now, there is a similar commonality at the next level up as well: the business level. Maybe I'll get to those some day.

I call these issues "horizontal" because if you were trying to draw them in a block diagram, they tend to be drawn horizontally. The application logic tends to be drawn vertically as "higher level" subsystems.

So let's jump in with a non-exhaustive, unordered list:

  • Installation
  • Licensing
  • Configuration
  • Logging
  • Performance Monitoring
  • Data Management (user files, databases, etc.)
  • Alarms (User Notifications)
  • Authentication
  • Access Control
  • Auditing
  • User Management
  • Administrative Control (User Roles)
  • Clustering & Load Balancing
  • High Availability (HA)
  • Sign Up
  • Billing
  • Customization (themes, plugins, scripts, etc.)
  • Upgrades (installs, user data, configuration, customizations).
  • Testing Interfaces and Harness


As you can probably tell, each of these can be a massive effort. The problem is that for most software, few if any of them are optional. Most complex systems need something in each of these areas. Since these are not the core business concerns, however, they get minimal attention in favor of focusing on the "important" parts.

When you move from prototype/demo to a production system, you neglect these at your peril. While your users may not spend most of their time in these areas, many of them must be navigated before the "real work" can get started. The care and feeding of your software will also require that users interact with these various subsystems. The last thing you want is for the core competence of your software to be masked by user frustrations in these areas.

Implementing robust solutions to all of the above would be a massive development effort in its own right. So how can we as software engineers solve all these problems and still keep our project on schedule?

I'll start on that next time.

Monday, September 22, 2008

My famous wife

Details here. Ain't she cool?

I promise to get back to "on topic" subjects next time. Really.

And now for something completely similar...

Clarke and Dawe talk about the carbon scheme




Find more here.

Thursday, September 18, 2008

And now for something completely different...

with apologies to M.P.:

The Front Fell Off




Soaking up the Olympic Atmosphere




The Credit Crunch




OK, you've probably figured out that I think these guys are LOL hilarious. You can find more of their stuff by searching for "Clarke Dawe" on YouTube. I have not seen all their stuff, so there may be some material I wouldn't recommend. Watch at your discretion.