13 May, 2008

The Secret To My Success

I've now been in the software engineering industry for 10 years (as of the upcoming 18th of May). Through those 10 years, I've received three progressions; read that as promotions.

As much as I'd like to take full credit for these achievements, achieving each with my charm, brilliant mind and overachieving attitude; if I'm honest, one of the major factors has been my luck in my assignments to managers.

Right out of the gate, fresh out of school I was assigned a military-grade, Lt Colonel in the Minnesota National Guard. Within the first couple months, he was asking career-oriented questions that I certainly wasn't ready to answer; questions like "where are you going to be in five years?", "do you want to lead a team?", "did you watch the Twins game last night?". Ok, the last one doesn't apply, but you get the idea. Through the years I've had my share of managers, each with strengths and short-comings, but all-in-all I've got a pretty good roll of the dice in the management department.

It's important to think about career-oriented questions early in your career, and you should revisit them continuing throughout your career. If you don't know where you want to go, there isn't much a chance you'll ever get there.

Aside from inspiring a career direction, leads are critical to achieving your career goals. Fact of the matter is, you need someone in your corner to put you up for promotions, to champion and defend you against the progression committee. Most organizations offer a fixed number of promotions and grades each year, and you need someone to go to bat for you in telling the committee why you deserve it more than the next guy. It's a competitive world, and these are the rules of the game.

A good number of my colleagues have the same skills as I do, the direction and drive similar to mine, but have come up short in manager assignment. Some of them are 2-3 promotions behind me as a direct result. Some, a consequence of unstable program assignments which resulted as mid-year changes in management, a stake-to-the-heart of any possible promotion that given year.

If you take anything from this entry, consider these two key points: 1) a career-oriented manager is an essential part of career progression, and 2) these managers must take the initiative and time to meet with you to discuss your areas of improvement, put you up for promotions, and defend you to committees, often on their own time; so treat them accordingly.

12 May, 2008

The Science Behind Iron Man

Seems like with every anticipated premier of a 'super hero' genre some dateless journalist working for New Science, Scientific America or the like will write an article about the feasibility of technologies that are leading toward said superheros powers. The premier of IronMan was no exception.

Word to you future writers anticipating writing similar styled articles for upcoming movies....stop it! Comparing face recognition technologies in digital cameras have little to do with targeting weapon systems.

10 May, 2008

Adding HardDrive to VMWare WinXp Virtual Machine

Underestimating the persistent storage of a virtual machine (VM) is pretty standard for me. I generally define my VM hard drive pretty conservatively to avoid wasting filesystem space, adding a new hard drive as required. This is the procedure I go through to add a new hard drive to a WinXp VM.

First, create a new virtual hard drive with VMWare. Begin by editing your VM preferences.

Next, add a new hard drive to your VM.

That completes adding the hard drive to the virtual machine, the next steps are required by the guest OS to get WinXp to recognize the new hard drive.

You first need to start up the disk management application.

You then need to open the c:\WINDOWS\system32\compmgmt property file.
Double-click on the Disk Management selection and a wizard will pop up, follow along with the wizard.

After the partion wizard has completed, exit computer management and you should now have a newly created hard drive on your system.

09 May, 2008

Cloning a VMWare Virtual Machine

I've become a recent convert to the virtualization technologies that have been recently developed. I'll postpone the accolades of virtualization for future posts. For now, I'll concentrate on a task I find I regularly perform, but had some trouble locating how to do it.

Virtual machines opens the door for creating a VM template, where the guest OS is installed in a pre-defined manner, and task-specific instances of this template can be created and disposed of when the task is completed. For example, evaluation of a 30-day evaluation software installation is a prime example. Repeated installation, followed by un-installation, on a OS takes its toll leaving remnants of the products in unlikely locations. Creating a new VM instance dedicated to product evaluation and later deleting the entire VM once the product evaluation has completed is...in a word...simple.

This requires defining a VM template, simply put a generic OS installation that you'll clone for specific tasks. This is generated simply by creating a VM and installing the guest OS (documented in VMWare references). What isn't documented is how to clone/copy the VM. That will be the focus of the remainder of this post.

Suppose you have a VM template called WinXpBase, located in /VM/WinXpBase/ and you wish to clone this VM as Clone01 at /VM/Clone01/.

Step 1 - Copy the VM:
$ cp -rf /VM/WinXpBase /VM/Clone01

Step 2 - Update the Virtual Disks

$ cd /VM/Clone01
$ vmware-vdiskmanager -n WinXpBase.vmdk Clone01.vmdk

Step 3 - Rename Files Accordingly
$ mv WinXpBase.vmx Clone01.vmx
$ mv WinXpBase.vmsd Clone01.vmsd

Step 4 - Update File Name References in VM Properties
open the Clone01.vmx file in your favorite editor and search-n-replace instances of WinXpBase with Clone01

Step 5 - Add VM to VM List
As root, edit the following files:
duplicating the lines with WinXpBase, followed by search-n-replace with Clone01.

Fire up the VM Console and power up your new Clone01 VM.

Last Step - Apply New VM Identifier
Upon applying power to your new Clone01 VM, you'll encounter a pop-up similar to:

This is a one-time pop-up, you should select Create and you've just cloned your very own VM.

07 May, 2008

Parsing File Lists with Tcl

Hey all,
Been a bit of time since my last post. I've been struggling attaining some new information to post, but haven't found anything 'post worthy'. Instead, I wandered back in the ol' memory to find a useful nugget of info that you may find useful.

I love Tcl. From the bottom of my heart, this is the scripting language of choice for this cubicle dweller. A routine use for scripting languages is to batch process vast lists of files. Any well behaved *nix user probably uses camel back file naming notations (e.g. SomeFileForYou.txt), while others may use a underscore delimited notation (e.g. some_file_for_you.txt), but Windows enthusiasts (many of my teammates included) insist on using spaces in their file names (e.g. Some File For You.txt).

Batch processing filenames with spaces can present a problem if you don't parse the list properly. Since Tcl lists are generally seperated by spaces, file names with spaces are parsed as individual files for each word.


$ ls /var/tmp/someDir
total 8
-rw-r--r-- 1 fatslowkid fatslowkid 6 2008-05-07 22:38 Some Longer File Name.txt
-rw-r--r-- 1 fatslowkid fatslowkid 7 2008-05-07 22:38 Some Long File Name.txt

$ cat listFiles
1 #!/usr/bin/tclsh
3 set fileList [exec find /var/tmp/someDir/]
4 #set fileList [split $fileList "\n"]
6 foreach file $fileList {
7 puts '$file'
8 }

Running will result in:
$ ./listFiles

Uncommenting line 4 which splits the list using the newline character as the delimiter solves the problem. Observe:

$ ./listFiles
'/var/tmp/someDir/Some Long File Name.txt'
'/var/tmp/someDir/Some Longer File Name.txt'

TaDa. Hope you find this useful, I certainly have over the years.