Virtual PC Strategy

February 14, 2006

I have been a user of virtual machine technology for years. In fact I used the VMware products during their intial BETA cycles and later switched to Virtual PC which was then purchased by Microsoft.

Even though I have been using the tools for a while I’m remained pretty dumb when it comes to really exploiting some of the newer capabilities of the tools, such as differencing disks.

For the uninitiated, differencing disks allow you to create a new disk which references a “parent” disk. When you start the virtual machine using the differencing disk, the differencing disk only stores data that is different to the parent disk. In this way you can have multiple virtual machines all pointing to the one parent disk (via the differencing disk) but still have them completely independent from each other.

Anyway – like I was saying, I hadn’t really been taking advantage of these improvements in virtual machine technology. Lately however, I’ve been struggling to keep up with my need to test out BETA and CTP builds of upcoming Microsoft technologies and still maintain a stable development and office environment.

So – in the past couple of days I’ve been gradually building up my first virtual machine differencing disk hierarchy in Virtual PC. The first thing that I wanted to test out was the Team Foundation Server Release Candidate. This is the differencing disk hierarchy that I came up with.

VPCHierarchy

The great thing about this is that I can now quickly provision a fully isolated development environment at any stage along the process above. For example – I’v already started adding other virtual machines using yet more differencing disks to support other development tasks that I am working on at the moment.

WorkingVPCs

One of the things that is lacking from Virtual PC is a really good way to map the inter dependencies between the the differencing disks and their parents. When you parent to a disk the Virtual PC Console doesn’t stop you starting up that parent disk which can result in corruption. For the time being what I am doing is removing the virtual machines from the console which have been parented to – this should stop me shooting myself in the foot – but there is an opening here to build a tool which makes this more managable.

DeleteVPC

Anyway – I am hoping this will allow me to be more productive when it comes to testing out software, and I won’t have to overload my host OS too much. Eventually I suspect that I will just have the Office suite and Virtual PC on the host and do everything in virtual machines. I still have a phobia of presenting off a VPC though – I’ve seen them go south too many times with mysterious lock-ups.

Congratulations Greg!

February 14, 2006

Congratulations are due to Greg Low who has just been made a Microsoft Regional Director. Greg joins Adam Cogan as one of the two RD’s here in Australia and a total of only one hundred and eighteen (118) worldwide.

I think Microsoft has chosen a great ambassador in Greg!

Professional Development is something that I’ve written about before but it is especially important for consultants and contractors. In most cases consultants and to a lesser extent general contractors trade on the fact that we have skills that are hard to come by and difficult to acquire at a certain point in time.

In reality I think that there are two kinds of skills; there are general business and management skills which you make you an effective leader and decision maker and then there are the specialist technical skills.

Both sets of skills can be expanded upon although I suspect that technical skills are subject to a greater level of churn than business skills (with the exception of the fundamentals of computing).

As a consultant, your clients expect you to arrive on-site as an expert and assist them with their technical problems. In order to do this you need to be able to ride up on leading ledge of the technology wave and make sure that you are exposed and practiced in technologies before someone asks you to work with them.

Getting time to get up to date with a new technology can be hard because you are essentially trail blazing. Having said that, its not impossible and here are some of the techniques that I have used in the past.

  • Walk the namespaces; when I was first teaching myself .NET, in the evenings I would pick a namespace and systematically identify the main classes contained within and understand their function. Its time consuming but when the provided documentation most says “to be done” you have little choice. The benefit of this approach was that by the time .NET was released I had a pretty deep understanding of the framework and the runtime.
  • Read the blogs of the people that made it; back in 2000 this wasn’t really an option, but these days Microsoft (in particular) has so many people from development teams blogging that its pretty easy to get the low down on a technology well before it ships. Its getting to the point now that if you are a developer and you don’t have an RSS aggregator then there is litte chance that you can keep up.
  • Answer the questions of others; this is the key secret! If you want to be an expert you need to be able to have the knowledge of experts. There is no better way to do that then find people that are asking questions about the technology and answer them. In doing so you guide your own learning but you also get recognised as someone with some expertise – this is useful when you are trying to find your next engagement!
  • Give something back and get connected; if you have managed to learn a new technology – give something back to the community. Help others who are trying to learn the technology to pick it up. This creates valuable connections and a network of peers that will help your development.

In my previous post about time management in the consulting business I outlined my process for getting through my work. It should be obvious that I didn’t mention anything about tracking your time with timesheets. Timesheets are something that I am notoriously bad at, so if anyone has any useful tips/tools for doing timesheets I’d love to hear them. I’ve already heard of the:

  • Record your time every day pattern.
  • TimeSnapper.

TFS: Setup Error 28100

February 14, 2006

Elayasse has posted up about setup error 28100 when installing TFS. I got this one myself actually, interestingly I didn’t have to restart the installation – I told it to retry and it went through. I suspect that its some kind of timing issue with a registry handle not getting released or something like that.

With so many great presenters, Greg and I managed to fill the main track at Code Camp Oz 2006 fairly quickly, but there is still heaps of content and speakers and Charles Sterling has offered to manage the “Introductory Track”. If you have an idea for a session and could present one on an introductory level please ping Chuck!

MSBuild Community Tasks

February 14, 2006

I picked up this link to a bunch of great MSBuild tasks from the developer community from Scott Guthrie. There are quite a few useful tasks in there including AppPoolCreate and AppPoolDelete which allow you to automate the deployment and configuration of ASP.NET applications. This is good stuff and as Scott points out it fits in nicely with the new capabilities of the WDP’s and WAP’s.

Good find!