Sunday, March 29, 2009

Software Configuration Management

Overview

This document is intended to explore some best practices for software configuration management.


Basics

  • All development groups or sub-groups need a versioning strategy

  • The versioning strategy must include non-production environments

  • Entry to any shared environment requires a strategy for automated build/deploy, version labeling and rollback


Versioning Strategy

It is widely acknowledged that versioning artifacts (be it source code, documents or otherwise), is a good practice. This is easily accomplished through a variety of means. However, environmental complexities can make versioning unwieldy. Some examples of environmental complexities include:

  • Multiple artifact owners/contributors

  • Multiple versions supported at a given time (through multiple production or non-production environments)

  • Dependencies, integration


Among application developers, there seem to be four varieties of versioning strategies in use:

  • Concurrent Versioning Systems

  • Versioning Systems (not concurrent)

  • DIY (folders, spreadsheets, etc.)

  • Nothing


Any of these may suffice depending on the overall complexity of the problems being solved. This document intends to make a case for moving from a lighter strategy to a more robust strategy as problem complexity increases. Many organizations face all of the complexities mentioned above, but in many cases application development is not prepared to manage them.


Analysis

There are some key questions an application developer may want to ask when solving a problem having to do with artifact contributions:

  • Does this problem require multiple people to contribute to an artifact?

  • Does this problem require multiple people to contribute to an artifact at one time?

  • Does this problem require multiple people to contribute to an artifact at one time who do not reside in the same location?

  • Etc.


Without furthering that line of questioning, it may become apparent that the logistics behind a multi-collaborator environment would be more easily solved with the help of a tool.


A similar line of questioning can apply to the complexity of versions:

  • Does this problem require supporting multiple versions of the solution?

  • Does this problem require supporting multiple versions of the solution at one time?

  • Does this problem require supporting multiple versions of the solution at one time in a single environment, multiple environments, production, non-production…

  • Etc.


Tenets

Given a brief analysis of common problems/questions and techniques listed above, this section is intended to submit, for discussion, a list of tenets for application development:


  1. All project groups or sub-groups need a versioning strategy

  2. The versioning strategy must include non-production environments

  3. Entry to any shared environment requires a strategy for automated build/deploy, version labeling and rollback

  4. Configuration should be separate from code

  5. Code is not compiled in production, but rather it is migrated from an environment where it has been validated (see tenet 4)


Questions to Consider

  • Can I progress through the environment stack from bottom (dev) to top (production)?

  • Can I progress through the environment stack from top to bottom?

  • Can I support multiple versions across environments (production or otherwise) at one time?

  • Can I rebuild/restore an environment to any version, from any version?

  • Can I have backwards compatibility?

  • Can I do all of these things in a repeatable way?


For all of the questions above it may not be necessary (or even a good idea in some cases) to do the things listed in the question. However, the real issue is whether you are nimble enough to do it when the problem you are solving calls for it.

Saturday, March 28, 2009

Where's my Google Mobile?


I got my first Blackberry (a Curve) about 10 months ago. I fell in love with it and part of the reason was the Google Mobile App. It made it easy to access all of my favorite Google products without the hassle of opening the Blackberry native browser. Recently, I upgraded to a Blackberry Storm and assumed that I would immediately be downloading my favorite search engine's mobile application.

It turns out that the Google Mobile App is not yet supported for the Blackberry Storm. This is distressing to me. I have since found versions of the jad online and have made attempts to install. I now have the application installed, but it doesn't work right with the touch screen and is still unsupported. What gives?

Sunday, February 22, 2009

Free Apps for Blackberry Storm

I've been thinking for a while about posting a listing of favorite apps for my Blackberry Storm.  Enough procrastinating...here it is:

1.  Gmail - If you use Gmail, then this is the mobile mail client for you.  It had HTML e-mail before the standard Blackberry mail client did.  It allows aggregation of multiple addresses and makes use of my favorite Gmail feature:  labels.

2.  SocialScope - I had been using TwitterBerry as a Twitter client for some time and had abandoned the Facebook app some time before.  That was when I discovered SocialScope (currently in private Alpha).  I requested an invite and received an immediate response.  This app allows me to update my status on social networks as well as follow my friends.  I know, lots of apps do this...but this app has a wonderfully pleasant (and intuitive) interface, and what's more it is fast.  If trying this on the Storm, be sure to disable compatability mode.

3.  VyMail - Visual Voicemail.  This is awesome.  It sits on top of the YouMail service and provides an interface for retrieving voicemail.  The app notifies you of voicemail, but more importantly, it provides important details about the message.  Also, the message can be retrieved with a click (no dialing voicemail anymore!!).

To be continued...

Friday, February 13, 2009

Blackberry Storm

I've had a cell phone for years (of course), but didn't use it for much more than calling. No texting, no data plan...nothing. That all changed about eight months ago when I purchased my first Blackberry. It was a Blackberry Curve 8330 and before long I had installed so much freeware that it became a bit bogged down.  It was time to move on to a new device.

My dilemma was that I wasn't sure if I wanted a Blackberry Storm or if I wanted an iPhone.  Obviously, I had heard good things about the iPhone, but after a few short months, I had become a Blackberry zealot.  In the end, it came down to a decision based on provider.  Ultimately, I decided to stick with Verizon (for reasons I won't go into) and as such, the Storm was the easier choice.

I had read some pretty bad reviews for the Storm right out of the gate, so I was skeptical.  However, I knew that a new OS had leaked (4.7.0.99) that week and I was in a gambling mood.  After trying several stores, I finally scored my device.  Within an hour, I was home installing the new (leaked) OS.  Everything worked like a charm.  
I must say; I love this device.  It performs well, has a beautiful display (with plenty of real-estate) and great touch screen (including tactile feedback).  I literally have no complaints thus far.  Stay tuned for a list of my favorite Blackberry applications.

Saturday, January 31, 2009

Marketing at it's finest

I'm still not tired of these commercials:



C'mon! It's a talking baby!

Rapture for the Geeks

I just finished reading Rapture for the Geeks by Richard Dooling. I picked it up @ the local Barnes and Noble while my companion was looking at cooking magazines (or something). I had a chance to read a bit before it was time to go and before too long I was drawn in. The subtitle itself was intriguing enough: "When AI Outsmarts IQ"...I decided I had to have it.

The opening few chapters were amusing enough but did spend some time on what I consider to be computer/software basics. However, I imagined that the author had to establish a vocabulary to be used throughout the book and didn't want to leave any readers behind.

The fundamental premise of the book was about a concept of which I hadn't previous been exposed: The Singularity. According to Wikipedia, this is defined as: "a theoretical future point of unprecedented technological progress, caused in part by the ability of machines to improve themselves using artificial intelligence".

The book challenged me in all the ways that I hoped (abstraction, philosophy, technical facts). If you're looking for a quick read, pick it up.

Tuesday, January 20, 2009

Ubuntu

About a week or so ago, I got it into my head that I needed a Linux installation at home. I had been running Mandrake Linux 8.1 for a number of years until the hard drive on that machine crashed, at which point I had decided to give XP a try. I dusted off the Mandrake CDs and began the install. It was not long before I recalled that the set up was an involved process. Memories of driver problems filled my head. Then a truly frightening thought came to me...the last time I had run Linux, I was using a modem for internet connectivity. There was no way that this Mandrake 8.1 install was going to recognize (and cooperate with) my wireless network without some hassle.

I decided to abandon the path I was on and give Ubuntu a try. The download took quite a while and I had to burn a bootable CD, but then I was good to go. The entire installation fit on one CD and took only minutes to complete. Even more amazing was that by simply broadcasting the SSID on my wireless network, Ubuntu did the rest, including prompting me to provide the appropriate credentials to get past the security. The drivers for my sound card, video card, monitor, printer, etc. were all discovered automatically. I must say, that the installation could not have gone any better.

I haven't had much time to mess around with things since the install, but am excited to have an excuse to run OpenOffice again.