Inside the MSI

Have you ever needed, or wanted to see the list of files stored inside an MSI? When you wind up with a fair sized project, with a lot of third party components it’s not always clear what you need to deploy if you want to do a simple xcopy style deployment. I’ve found a tool though that makes it easy.

LessMSIerables, available from is a handy tool that will let you not only peer inside the contents of any MSI file, but extract the contents to a directory as well.

It’s a pretty simple interface, just use the button to the right of the File text box to load an MSI file, you can view in the table on the screen. Use the Extract button to pull all the files out to a directory, very handy for xcopy style distributions.

There are also ways to run this from the command line, great when doing automated builds. Go to the website to download it, as well as seeing full instructions.

Remote Desktop Connection

One of the coolest toys to ship with Windows XP is the Remote Desktop Connection tool. Let’s say you have a small home network, and like to take your laptop out on your deck and work under the sunny skies. However, much of what you need is on your desktop. You’d love to be able to control your desktop from your laptop. No problem!

For my example, we’ll assume you want to control your desktop from your laptop, but this will work with any two computers. First, you need the IP address of the computer you want to control. Walk up to your desktop, and open a command window (start, run, type in cmd and hit enter.) Now type in ipconfig and hit enter. After a moment some info will appear, look for the line that says “IP Address”. It will be four sets of numbers separated by periods, for example . Jot this down on a piece of paper, then head out to your laptop.

On your laptop, bring up the Remote Desktop Connection tool (Start, All Programs, Accessories, Communications, Remote Desktop Connection). You’ll see a window like this:

Where it says Computer, type in the IP address you got a minute ago. Now, you could just hit the Connect button, but there’s probably a few options you can tweak that will make your experience nicer. First, click the Options >> button. The screen will now look like:

To save yourself a few minutes, you can go ahead and key in your user name and password you use to login to your remote computer, in this case your desktop.

Note, if your computer is part of a corporate domain (i.e. you are at work), you will probably be able to type in the name of your computer instead of it’s IP address. Just make sure to enter your Domain name in the domain box. You probably won’t be able to control your work computer from home though unless you hook up to your company network using a VPN (virtual private network). You’ll have to check with your individual company to see if this is possible and how it can be done.

Now click on the “Display” tab.

You can use the slider bar to adjust the size of your screen, in case you want something other than the full size screen. If you do want full screen, then leave set to full screen (all the way to the right) and click the Local Resources tab.

This has some options that will make your life easier. The one thing I’d suggest doing here is checking the “Disk Drives” box on. If you do this, if you bring up a “My Computer” window while controlling the desktop, it will show not only the hard drives for the desktop but for your laptop as well, allowing you to easily copy files from one computer to the other.

This is great for small files, but if you have larger files you may want to use a network share instead as it’s faster than using Remote Desktop.

Be warned though, you should trust the PC you are remoting to since this sets up a security vulnerability. If in our example a virus was running around on your desktop, by exposing your laptop’s drives your laptop could then get infected.

Finally, click on experience.

If you have a fast network, you can check everything on and get the full experience. If though you are truly controlling your desktop from somewhere else, as in the VPN I mentioned earlier, you may want to leave a few of these unchecked to make your work experience faster.

Even on a fast connection I typically leave it set to the settings you see above to get the maximum speed when I am VPNing to the office. At home though, controlling one computer from another I check everything on.

And that’s it, just click Connect, and you’ll should see your desktop’s computer appear on your screen. To exit, simply drag your mouse o the top middle of your display. A little yellow bar will pop down with the computer name and the usual X button over on the right to close the Remote Desktop Connection.

If you don’t get connected, there are a few trouble shooting things to look at:

  1. You must have administrative rights on the computer you are controlling, or be a member of the remote desktop users group.
  2. You must have a password on the remote computer, remote desktop won’t work if your password is empty.
  3. Your firewall may be blocking your access. If you are using the built in windows firewall, it sets to allow remote desktop. To get ZoneAlarm to work, set the security settings to Med. (Medium), and make sure to set the rights inside ZoneAlarm to let remote desktop send / receive data. (Open Zone Alarm, go to Program Control, scroll down to the entry for Remote Desktop Connection and make sure everything is checked on. )
  4. Confirm you have the correct IP address.

There you go, now you can sit out on your back deck and enjoy the sunny weather and still have the power of your monster desktop.

Virtual PC and Laptops

It’s been a crazy week here in the land of Arcane Code. Lots of traveling during a business trip, then the mad rush to take care of all the issues that arose while I was gone. I wanted to share a quick tip with you, now that you’ve had a chance to install and use Virtual PC.

If you run VPC on a laptop, as I do, you may have noticed some weird quirks especially when your laptop goes into Hibernate mode. Mostly the VPC becomes unresponsive, or in my case the main screen quits updating. Oddly enough the tiny icon window inside the VPC Console updates fine, but the big window doesn’t. Go figure.

Microsoft released a HotFix for this, but it didn’t get a lot of publicity. I found it buried in Virtual PC Guy’s weblog ( Since it’s brief I’ll regurgitate it here, in case you are a cautious type about link clicking.

I think the reason the hot fix is hard to find is because you already have it. Go back to the directory where you exploded the Virtual PC 2004 file. In addition to the Setup.exe, the MSI and INFs you’ll also find a directory called “Laptop Hotfix”.

In this directory is a text file that looks mostly like a license. However, at the top of the file is a link to the knowledge base article ( that describes a few of the nasties that this patch repairs.

What’s really important though is the MSP file. Just double click on it to install, and it should patch your system. If you are running a laptop, or regularly use the Hibernate or Standby features of your computer then you need to apply this patch.

I haven’t seen mention of this if you are running Virtual Server 2005, so perhaps they already included the fix there. If someone knows otherwise feel free to leave a comment.

Using and Tweaking Virtual PC

Once your Virtual PC is up and running, you may want to tweak a few of it’s settings. Let’s go over the menu options available to you.

Action Menu

This menu is fairly straight forward, and lets you initiate certain actions.

Full Screen Mode: Just what it says, shifts your OS into full screen mode.

Ctrl+Alt+Del: Sends the Ctrl+Alt+Delete sequence to the virtual OS instead of the host OS.

Pause: This places your OS into a stasis mode. This can be useful if your host system gets overloaded and you need to free up some resources. Note that it doesn’t close the window, merely suspends it.

Reset: This is the equivalent of yanking the power plug, then plugging it back in. You should only use this in extreme cases where your virtual OS is locked up.

Close: This brings up a small dialog window that asks if you wish to Save State or Turn Off. Turn Off is similar to Reset, in that it just stops whatever was going on and dumps the VPC from memory. Like Reset, you should only use this in extreme cases. Save State is very similar to the Hibernate mode in Windows, it puts the virtual OS into a suspended state.

Install or Update Virtual Machine Additions: This will install some very useful tools into your Virtual OS. These additions will make it easier to use the mouse (no more having to hit Right Alt to get your mouse out of the window). It will also allow you to share your host computers hard disks with the virtual computer. To the virtual computer they will appear as a network drive. If you use windows as a virtual OS, you’ll definitely want these additions. Be aware though that virtual additions also exist for many Linux distros.

Properties: Displays a four tabbed dialog that will give you info about your running virtual computer.

Edit Menu

Most of the items on the edit menu are pretty obvious. Copy, Paste, and Select All do just what they say. The real gem is Settings, which lets you tweak your VPC settings. I will focus on it shortly.

CD Menu

Your CD menu will vary depending on how many CD/DVD drives you have in your machine. All will start with Use Physical Drive and let you access your computers CD/DVD drive to do common tasks like load software or listen to your favorite tunes.

Also on the menu will be a Release Physical Drive for each drive you are using. When you no longer need the drive, you can click Release to free it up. There’s also an Eject CD option to pop the CD out without releasing use of the drive.

Capture ISO Image will let you take an ISO file, and treat it as if it were a real CD or DVD. This is quite useful for all those ISO images you wind up downloading from your MSDN subscription. (For those unfamiliar, an ISO is a CD or DVD disk image. You can use software such as Nero, Sonic, etc. to take the ISO and turn it into a CD full of files. )

BUG ALERT!!!! VPC has an issue with this Capture ISO Image command. There is a size limit of approximately 2 gig. If the ISO is bigger than that, VPC will fail but give you some really odd errors.

To get around this, in the host OS you can first mount the ISO like I describe in my September 13th blog post ( then, using the machine additions, share the drive.

Floppy Menu

The commands under Floppy are almost identical to those in CD. I can’t recall the last time I used a Floppy, heck my last two computers don’t even have floppies, so I suspect this isn’t a command you’ll use much. But just in case, it’s there.

Help Menu

The Help menu has three commands, Virtual PC Help brings up the help file. Virtual PC Online takes you to the Microsoft site for VPC. Finally, About Virtual PC brings up a dialog displaying the version number and other info about the virtual environment.

That wraps up the menus, now let’s talk about Settings.


Accessible from either Edit, Settings or the Settings button on the Virtual PC Console, this dialog is where the real power resides to tweak your VPC. Let’s take a look at some of the more useful options.

File Name: Lets you rename the virtual machine. Sort of useless since you can do it from the OS, but what the heck.

Memory: This can be useful, in various ways. First, you can test your application to see how it performs under various memory conditions. Second, you may discover you’ve set your VPC too low. Finally, you may shift your VPC from one host computer to another, and the new host may not have as much ram (or more!).

Hard Disk 1..3: These will let you assign a virtual hard drive to a virtual computer. When you copy an existing VPC to create a new one, you’ll want to open up the settings and point to the new VHD, otherwise you’ll wind up still accessing the old one, which more than likely isn’t what you want.

Undo Disks: When enabled, this will write all changes you make to a VPC to an undo disk. When the session is over (i.e. you turn it off or reboot) you are asked if you want to commit your changes or discard. If you commit, your changes are placed into the VHD as you normally would without undo disks.

However, if you elect to discard, then the changes are thrown away. Your VPC is reset to the same condition it was when you first started. This is quite useful if you want to test install programs, to make sure everything installed correctly but don’t care about it after that. It’s also useful for training environments.

Networking: Under networking you can select which network card in your real, host computer to give the virtual machine access to. For example, my laptop has both wireless and wired networking, and through this option I can select which one to use (or I can select both). This mode is known as Virtual Networking.

In addition to Virtual Networking VPC also supports three other modes. Not Connected is pretty obvious, you are not allowing any network access. Local Only is used when you want to communicate with other virtual machines on the same host machine. This can be useful when you need a virtual pc to act as a client talking to a virtual server.

Finally, VPC has a mode called Shared networking (NAT). This is useful when you are using a dial up connection. Each VPC gets it’s address from a temporary, internal DHCP server. It then communicates to the internet via the host computer, which handles the network address translation. This is very similar to the way your home router talks to all of the computers on your home network.

Mouse: Once you install the machine additions, by default the mouse has pointer integration turned on. This is pretty simple, when you drag the mouse into the area of the window occupied by the VPC the mouse automatically is captured and used in the VPC. When you drag it out, it releases it.

There are a few cases where you may want to turn it off, such as when you are using a software KVM such as MaxiVista with it.

Shared Folders: Through shared folders you can access physical drives on your host computers environment. While this may seem quite convenient, you need to be careful. Opening up your host system to the virtual environment can present a security risk. If your virtual environment should get infected, that infection can spread to your host OS via the shared folders.

If you do choose to share folders (and sometimes you do need to), it will appear to your virtual OS to be a network drive. Normally this is no biggie, but be aware it can cause some trust issues with Visual Studio when attempting to open projects. I’ll post a fix for this later…

Tweak away

Hopefully now you have a good understanding of not only how to setup a Virtual Computer, but how to tweak the settings in VPC to make it do what you need. Don’t be afraid to experiment, change some settings and see what effect it has! (Just be sure to back up first!)

Virtual PC Step by Step

Update: April 10, 2008 – While the instructions below are still valid, I’ve created a new version of this post for Virtual PC 2007. And it’s in Video! Take a look at my post for
April 10, 2008 – Virtual PC 2007 Step by Step – The Video!

Update: April 22, 2008 – There’s a second video now showing the advanced settings. Some good info that adds to the scope of what’s here. Check out my post for
April 21, 2008 – Virtual PC 2007 Step by Step – The Advanced Settings Video!

OK, you’ve downloaded Microsoft Virtual PC (here after referred to as VPC) and installed it. The first time you run it, you see the display below. Now what? Let’s walk through it step by step.

Step 1: Create a new virtual computer

Start by clicking on the New button, and you’ll see this dialog:

Creating a virtual machine seems like the way to go, but let me mention the other two options briefly. Use default settings to create a virtual machine isn’t that useful, it creates a VPC but with minimal memory. I wouldn’t ever use this if I were you. Add an existing virtual machine on the other hand can be quite useful.

Virtual PC stores it’s data in two files, a VMC file that saves the various settings for your virtual computer, and a VHD which is your virtual hard drive. Copying these two files to another computer, launch VPC and pick this Add option, and you will open the VMC file. Away you go, you’re working in your VPC.

But let’s get back to the task at hand and create a brand new machine. Click Next to see this dialog:

It’s asking you what you wish to name your computer. You should make sure to read this carefully, if you don’t give a path then by default the vmc file will be placed in your My Documents\My Virtual Machines directory. The problem is this is your C drive, and if you are following directions you really want to run your VPCs off a different drive other than C.

I created a VPC directory on my D drive, I’d suggest you do something similar. That way you can store your VMC and VHD files in the same location. For a new machine name then, type in D:\VPC\My New Machine and click next. (By the way, in time you’ll want to use a better name, such as MyXP or MyUbuntu, but for now this will do.)

Step 2: Select your Operating System

On this screen it will ask you what operating system you’d like to install. As you can see, there’s lots of built in support for past Microsoft OS’s (and oddly OS/2). If you are installing anything else, such as a Linux distro (short for distribution), select Other, otherwise select the OS you will be installing and click Next.

On the next display you will be asked about the amount of RAM to use.

Step 3: Adjust your RAM

By default, VPC selects Using the recommended RAM, which is a measly 128 meg. Unless you are running DOS or some older OS, I would suggest bumping this up to at least 256 meg. You may want more, depending on what you’ll be doing. For doing Visual Studio development, I’d go 512 to 1024.

Click the Adjusting the Ram option and the slider bar will appear. Use it to move the RAM up or simply type a new value in the text box and click Next.

Step 4: Select or create your hard disk

On the screen above you are asked about the Virtual Hard Disk, or your VHD file. This is another of the screens that baffles me. I wonder what bizarre logic was being used that assumed you usually had an existing VHD when you were creating a brand new virtual computer? Unless for some reason you have to rebuild the VMC file, select the A new virtual hard disk option and click next.

On this screen you are asked what you want to name the VHD file. Be default, it uses the name you gave the VMC file and adds “ Hard Disk” to it. I usually just take this default and click next.

Step 5: Confirm your choices

We’re finally at the last screen in the Wizard. Here all you have to do is confirm your choices, and click finish. So what happens next?

Well, nothing spectacular. Your Virtual PC Console will now look like this:

Now it’s time to install an operating system.

Step 6: Install an operating sytem

First, make sure your OS boot / install disk is in your CD/DVD drive. Now make sure your machine is highlighted and click Start.

A window pops up, and looks just like a computer booting up. All of a sudden you’ll see the words “Reboot and Select proper Boot device or Insert Boot Media in selected Boot device”. Now what?

Well, all it’s telling you is that it can’t find anything to boot from. By default, Virtual PC will protect you by not automatically giving access to any of the devices (hard disks or CD/DVDs) on your host system. To fix this, simply click on the CD menu, then pick Use Physical Drive E: (or what ever drive letter your CD is). Now click in the window and hit ENTER.

If all is well, your CD should start up and you will begin the process of installing whatever operating system you’ve placed in your drive. Walk through all of the steps like you normally would, formatting your hard disk, setting up partitions, etc. Don’t be worried, you won’t be hosing your real drive, but installing to your virtual drive (your VHD file).

Step 7: Configure and protect your VPC

OK, your new machine is up, now what? Well, if you are running a Windows OS I would highly suggest the very first thing you do is install AntiVirus software and a decent firewall. I know, you’re thinking “Why? My host system has these installed, won’t they protect it?” To which my answer is, NO.

You see, to the network the VPC is a real computer, with it’s own IP address and everything. It’s just as vulnerable to attacks as any other computer. If not, you couldn’t use it for a Honeypot (see my previous posting). So protect your VPC!

You’ll then want to install any system updates, to patch any security holes. It doesn’t matter if you run Linux or Windows, there’s bound to be some patches for your system out there.

Some tips for running a virtual PC

Now that you are safe and secure, you can use your OS as you would any other OS. A few tips:

  • If you want to move your mouse out of the VPC window, hit the Right ALT key. (Note the left one won’t work, has to be the right one). This will let your mouse exit the VPC window.
  • Use Right ALT + ENTER to toggle between window and full screen mode.
  • Use Right ALT + Delete in place of CTRL+ALT+DELETE for your VPC.

Finally, when you are done you have several options to exit your VPC. First, you can shut down normally from within the OS. This is the least troublesome method, but as you are doing a shut down (then later a start up) it’s more time consuming.

You can also click the Red X (cancel button) on the window, or select Action, Close on the menu. A dialog appears asking if you want to Turn Off or Save State. Save State is similar to putting your system in to hibernate mode. It writes the system state to a file with a VSV extension (and the same file name as your VMC file). Later when you restart it restores your PC just like it was.

Well, usually. I’ve found that sometimes the network doesn’t always reconnect correctly after going into Save State mode, and sometimes I’ve had issues with Linux recovering. You’ll just have to experiment to see how it works for you.

Turn off dumps the PC, sort of like yanking the plug out of the wall. For this reason I suggest you only use this when the virtual environment is totally locked up and you have no other choice.

Wrap up

Well there you go, you’ve now got a spiffy new Virtual PC you can use and abuse. In the next post we’ll talk about tweaking your Virtual PC, and the various menu options for VPC.

Virtual Computer Software

So my last post got your appetite going. You’re ready to go setup some virtual computers, now all you need is the software to do it. Say no more! There are a lot of different packages on the market, but I’ll contrast a few of the most popular here.

Microsoft Virtual PC 2004

VPC (Virtual PC) is Microsoft’s offering to the virtual computer arena. Using it you can run not only other Windows systems but other operating systems such as Linux. For maximum usability, you’ll want to install the virtual machine additions. These additions will add some usability features, such as the ability to access the host OS’s hard drives.

Pros: Easy to configure and use. Small download, light on system resources. And it’s free!

Cons: No support for USB devices, can be a little slow especially if you have a borderline system. Only runs on Windows, no support for Linux as a host (although many Linux distros will work inside it). No support for SCSI drives.

Note that while USB support is not built in, your USB mouse and keyboard will work just fine as VPC will translate into something the virtual OS (Operating System) will understand. Also, if you have an external USB drive, if you share it through the virtual machine additions it will look like a network drive and work OK.

In addition to the resources below, there’s also a technical whitepaper available at

Main page:

Download site:

VMware Workstation

The VMware product is the granddaddy of virtualization. It is robust, and easily runs anything you throw at it. Similar to VPC it will run many types of desktop systems.

Pros: USB Support, easy to use. Has versions that will run under both Windows and Linux hosts.

Cons: Expensive, $189 US for the download version (a trial version is available). Must choose which host version (Linux vs Windows) you want when you buy.

Main page:

Download site:

VMware Player

The VMware player is just what it says. It will run a virtual computer, but it cannot create one. So how would this be useful? Well, you could be in an environment where you local administrator has a copy of the VMware Workstation product, and creates your VM’s (Virtual Machines) for you. Then each developer just needs the player in order to be able to use it.

On the web, people have created images called “appliances”. These appliances are ready to run images for the VMware Player. Note that because of licensing issues, these appliances will all be based on open source OS’s such as Linux.

Finally, VMware Player will run images created by the Microsoft Virtual PC product. Thus you could create your image with VPC and run with the VM Player. Note though I’ve had mixed results with this. The Windows based appliances have worked OK, but the Linux Ubuntu appliance I created with VPC didn’t work correctly under VM Player.

Pros: Free, easy to use, get the robustness of VMware without the cost. Both Windows and Linux versions available.

Cons: Cannot create appliances (a.k.a. virtual computers), only run them

Main page:

Download site:

Virtual Appliances available at:

Microsoft Virtual Server

While it’s sister product, VPC is optimized for running desktop environments, Microsoft Virtual Server is a product that is designed for running servers. While it can be used as a development environment, it can also be used in a production environment.

Enterprises are using Virtual Server to consolidate several physical servers onto a single large box. They are also using it to setup test environments when those test environments will be used for a limited amount of time.

While both VPC and Virtual Server will allow networking between virtual computers (and real ones), Virtual Servers will let you create an entire virtual network.

For more information on the differences between VPC and VServer, see the white paper on the Microsoft site at

Pros: Free! Will run under XP or any Windows Server product. (Note that running on XP is only suggested for development, not production.)

Cons: No USB, No sound card support, limited graphics support. Can only run Windows Server products and Windows XP as virtual OS’s. Cannot run on Linux, only Windows.

Main page:

Download site:

VMware Server

VMware Server will let you create and run a variety of OS’s in a server environment. Has full support for USB, SCSI, and more. A very robust solution for the enterprise or for development.

Pros: Free, easy to use, all the robustness of VMware Workstation without the cost. Great support for Linux, both as host and guest.

Cons: Only runs on Windows Server or Linux hosts. Will not run with Windows XP as the host (although XP can run inside VMware Server as a guest).

Update: I have since learned the server version will run just fine on XP. Additionally, it will support USB and Audio, although not by default. You will need to click on the Add Hardware Drivers to add them to the Virtual OS. I’ve had issues though with Vista RC2 and USB crashing when you try to exit Vista, so I don’t suggest using USB with Vista RC2 at this time.

Main page:

Download site:

Licensing Issues

You should note that for each Virtual Machine you create, you will need a license for the operating system you install. For Linux it’s easy, since most distros are free. For Microsoft Windows however, you will need to purchase a license in some fashion.

Many of us work in enterprises that provide us with MSDN licenses. If so, your MDSN will give you licenses to each of the OS’s Microsoft has created. If not, you may wish to look into a Microsoft Action Pack subscription. The action pack gives you 10 XP licenses, 1 copy of most of their servers, plus 10 copies of Office. Check out for more info.

Danger Will Robinson…

I should warn you that running virtual computers can be very hardware intensive. 2 gig of ram is recommended, 1.5 gig is passable, 1 gig is a bare minimum.

In addition, you’ll need a lot of disk space. Remember each time you create a virtual computer you are duplicating an entire OS. The ideal situation is to have two physical hard disks. Place your host OS and software on one drive, all your virtual computers on the other drive.

Choices Choices Choices!

So you’ve read all of this, and all you really want to know is, which product should you use? Well, after experimenting with the various products above, here’s my humble take.

If you have some available funds, and are looking for a good environment to develop in, then the VMware Workstation is a good choice. It handles a lot of things like USB that it’s main competitor does not.

If you are looking to develop on a budget, or this is your first time in the virtual world, then I suggest Virtual PC. VPC is very easy to install, setup and use. Since it’s free, you have nothing to lose.

For the upcoming blog posts, I’ll be using Microsoft Virtual PC for my examples. Since it’s free, it will be easy for the vast majority of folks to follow along. So what are you waiting for? Go download it and let’s get going…

Why Virtualize

Someone asked me the other day, why run virtual computers? Good question. First though, I ought to take a moment to explain what a virtual computer is.

A virtual computer is much like it sounds, it’s a fake computer. It runs inside a host, which resides on your real computer. For example, I could be running Windows XP on my real computer. Inside, I could run some software that would let me create a virtual computer running Windows 98.

The software that runs virtual computers works by abstracting the hardware then essentially lying to the virtual computer. The virtual operating system has no clue it’s virtual, it thinks and acts like it’s real. If it needs to make a hardware call, it does so and the software intercepts it and sends it to the real hardware on the host computer.

There are several options for running virtual computers, each with it’s own pros and cons. I’ll discuss the choices in my next post, for now let’s discuss some of the reasons for making use of virtual computers.

Emulating Operating Systems

When developing server components, it’s handy to have a spare server lying around. Unfortunately not all of us have the extra hardware handy to run a server. Using virtual computers, I can run Windows Server 2003 on my workstation, which is actually running Windows XP.

I’ve been interested in learning more about Linux, but don’t have a spare computer lying around, nor do I want to fool around trying to get dual booting to work. Using virtual computers lets me play with multiple versions of Linux without risk to my Windows system.

Multiple Configurations / Environments / Legacy apps

If you work in a large company, you often have to support multiple environments. For example, we are in the process of starting a new SQL Server 2005 project, but at the same time need to support our current SQL Server 2000 servers until they make the transition. Using multiple virtual computers lets me have one environment for 2000, another for 2005 without worry I’ll break one or the other.


“But it worked on the developers machine.” Ah how often have we heard that little gem! Virtual computers allow us to setup a base environment we can test our installs on, before we ever turn our apps loose on the users.

At work we have a base image all of our computers get when we first receive them. Using the base XP image I create virtual computers, and can ensure my new app runs OK.

You can extend this to not only your apps, but other apps. We’ve all seen some hot new app on the internet we wanted to try, but just weren’t sure about. By installing on a virtual computer we can test in our environment, see the reactions. If we don’t like it, just toss the virtual computer, no harm done.


If you browse the web you are well aware of all the creepy critters waiting to assail you. Worms, viruses, Trojan horses, and that worst, most despicable of all creatures, the spammer wait for us around every corner.

Using a virtual computer protects you. Sort of like Las Vegas. Whatever happens there, stays there.

By their nature, a virtual computer is isolated. It has no idea it’s a virtual computer, no idea about it’s host (unless you specifically share a host’s drives, but that’s something you must do explicitly). Thus if you virtual computer comes down with a virus or other nasty, you can simply delete and rebuild and away you go.


Using a virtual computer you can setup custom environments for each class or subject you need to teach. Users can use the OS to their hearts content, customizing it for their needs. At the end of each training session machines are easily reset by copying the base image to over the used one.


Here’s a sneaky trick some system admins do. (Thanks to Wallace Allison for telling me about this). They will first secure their real servers behind layers of security. They’ll then create a virtual server, or perhaps some virtual computers and deliberately expose them to the web. They become magnets to hackers who will attack the system.

Using diagnostic tools system admins can analyze the attack, and fortify their real servers against them. They can block the IP of the attacker, and maybe even help bring the offender to justice.

System Independence

Each night I make regular backups of my virtual computers onto my external USB hard disk. If my computer ever crashes, all I have to do is install my virtual computer software and I’m up and running with little downtime.

So that’s why!

There’s a few reasons why virtualization is a great thing. In my next post I’ll show you some places where you can get your own copies of virtualization software and begin setting up your own machines!


One of the tools I have been using a lot of lately is Virtual PC. It’s come in very handy, so over the next few entries I’ll be discussing this and other handy virtualization tools.

Before we get into virtualizing an entire computer, let’s start with just the CD/DVD. There’s a great tool you can get from Microsoft that will allow you to take an ISO image and fool your computer into thinking it’s a CD or DVD mounted in a drive.

The name of the tool is Virtual CD-ROM Control Panel for Windows XP, you can get it by clicking the link, or if you are the distrustful type (and you should be) instead follow these short steps:

First, go to:

Scroll down to MSDN Subscriber Downloads, and click on “What are ISO image files and how do I use them?”

When it expands, toward the bottom you’ll see a section “Mounting ISO files virtually”. Click on the link to download “Virtual CD-ROM Control Panel for Windows XP”

Once you download, the file will expand to 3 files, readme.txt, VCdControlTool.exe, and VCdRom.sys. The readme.txt file has the directions, but the short version is:

1) Copy VCdRom.sys to your %systemroot%\system32\drivers folder

2) Put the exe somewhere and launch it.

OK, your install is done. When you launch it you’ll see this screen that’s not overly intuitive.

OK, this is the tricky part that’s not quite clear in the directions: The very first time you run the program you should click on Driver Control. In the dialog that appears, click on Install Driver, then navigate to the location you put the VCdRom.sys file. Once you click on the sys file click Start to start the driver, then OK to close the dialog. OK, that’s done, you never have to do this again.

From here it’s pretty simple. Click on Add Drive to grab an unused drive letter. The app gets the highest available unused drive letter, typically Z.

Now you have an available drive, click on Mount. When the dialog opens, find an ISO image you’ve downloaded or created (most likely from MSDN, but any ISO works). Once you click Open, a dialog will appear to confirm, normally I just take the defaults and click OK.

Ta da! Your ISO now appears to the operating system as if it was a CD (or DVD) mounted in a drive. When you are done, just click Eject back on the VCDRom panel. That will leave the drive letter available but the ISO will no longer be accessible.

Need more ISO’s mounted at once? No problem, just click Add Drive again, to get another drive and mount it. Done with the drive letter? Just click on it, then click Remove Drive. Finally, if you eject an ISO then decide you want to remount, just click on the drive letter and click Remount.

There you go, a free way to use those ISO images without having to burn them to a CD or DVD first!

Multiple Monitors Made Even Easier

So, you have multiple monitors. Whether you have several real monitors, or they are through the MaxiVista tool mentioned in the previous post, you’d like to get the most out of them. One thing that drove me nuts was having my apps on a second window but having a toolbar on the main window. Also, what’s with the desktop? Why do I have to have the same image on every monitor?

Well I have another cool tool that fixes these problems and more: UltraMon. UltraMon ( puts a taskbar on every monitor you have. It then puts the apps you have running on that monitor in it’s toolbar, and removes them from the main monitor’s bar which really helps with clutter.

You can also customize the desktops, having a different picture for each monitor. This means I can put my adorable kids in one monitor and my long suffering wife in my second display. Or, if you have a really wide photo you can have it stretch over all of your monitors.

It also adds some cool icons up beside your min / max / cancel buttons on a window, one button will stretch the current window over both monitors. The second button is much more useful, it will move the current window to another window and automatically rescale it for that window.

It works really well with MaxiVista, or with multiple real monitors. And (as of the date I post this) it’s only 39.95 (US). Plus they have a trial version, but be careful, once you try it you’ll get hooked (I did!).

Standard disclaimer, I don’t work for them, make no money off sales, or receive any compensation, I just think it’s a cool developer tool!

Multiple Monitors Made Easy

A lot of us have a spare computer lying around. Maybe an old laptop, that still works but isn’t really suitable for most modern apps. Or, maybe you have both a desktop and laptop that you use at the same time. It’d be sweet to remote control your laptop from the desktop, but still use the laptops internal monitor. MaxiVista ( makes this trivial. When you buy the software, you first install the server piece on what is referred to as the “Primary” computer. It then creates a small exe that you run on the slave computer, known as the “Secondary” computer.

When running, it takes over the secondary computer, letting you drag your applications onto it, just as if you had a true second monitor hooked up. I find this very useful when I work out on my back porch. I take my main laptop, along with an older laptop. I can then use the older laptop, which normally just sits gathering dust, as extra workspace to drag my e-mail onto. Also handy with Visual Studio, you can drag help or some of the tool windows onto it.

If you spend a few extra dollars for the Professional version (right now on sale for $27.96 US) you also get remote control. I find this VERY useful. I use it in my home office, and run the secondary program on an older desktop. I then remote control the desktop from my powerful laptop, and can offload tasks to the desktop like downloading updates or files from MSDN. All controlled from my laptop’s keyboard and mouse.

Again, if you step up to a ‘whopping’ 35 bucks (US) you can get the Mirror Pro version. This allows you mirror your machine to another computer. Think eXtreme Programming here, or maybe just code reviews. I’ve used this to mirror my desktop to a coworkers machine so we could do some code reviews. Much nicer than both of us hunched over trying to view the same monitor!

Some miscellaneous things: The Pro and Mirror Pro versions will let you control up to three secondary computers, which I have done. MaxiVista runs over a network, it is not a replacement for remote desktop control software. It’s intended for situations where all of the computers are together in the same room.

Some standard disclaimers, I do not work for MaxiVista or have any financial affiliation, I just think it’s a cool tool and endorse it with no compensation of any kind. All prices I quoted were on their website as of August 23, 2006. Prices will vary over time.

And finally, if I haven’t convinced you yet, you can download a free trial from their website. So what are you waiting for?

We interrupt this blog…

Just a quick interruption in the chain on developer tools. I purchase a lot of books every year. A significant amount come from Apress. I tend to like these because they are advanced books, for the most part target to the professional developer. You don’t waste money getting six chapters on how to write “hello world” in every book.

I like buying the print version of books, but doesn’t it always seem like when you need it you’ve left it at home? Recently Apress started doing something really nice. If you owned the print book, you could buy the PDF for 10 dollars (US). This seems like a reasonable price, so I have the convienience of always having the book with me on my laptop.

Unfortunately Apress is only doing the 10 dollar deal for a select few books. The rest they expect you to pay full price for, despite the fact you’ve already bought the print version. So I’m going to do something I’ve never done before: start a crusade.

I recently found out Apress’s head of marketing is a fellow named Paul Carlstroem. What I’d like to get everyone to do is e-mail Paul, and let him know you’d like the 10 dollar deal extended to ALL of their books. If we can get enough people requesting this, I think we could sway him to make a decision that would benefit both Apress and us, the consumers.

Please be polite, I’m sure Paul is a very nice guy, and we want to sway him with logic and reason. More flies with honey and all that.

So please, take a quick moment and e-mail him, paul.carlstroem <at> (note I’ve tried to mask the e-mail a little, I don’t want the poor guy to get spammed to death). He will return to the office September 1 2006, so if you can get your e-mail done before then we can really make an impact when he returns.

We now return you to your regularly scheduled blog…

More Free Education

In my last post I mentioned getting a free education, with no extra time. If you are willing to invest just a little time, there are even more educational opportunities out there in the form of user groups and code camps.

A user group is a gathering of geeks, typically focused on a particular aspect of development. These are clubs that meet on a regular basis, usually one evening a month. Each meeting someone presents a technical subject of some sort that is of interest to the group. These are great places to network, find out what other developers in your area are doing, and get feedback or help on things you are working on. Most user groups are free, or at most charge a very small fee to join the club.

Code Camps are a little different. They are larger gatherings that are held on a weekend, usually all day Saturday. Local experts deliver sessions on a variety of topics. Most are free, a few may charge a small fee to help defray costs but it’s still a bargain for the education you get.

So how do you find user groups or code camps in your area? Google! Or whatever your favorite search engine is. Just enter the name of your town followed by user group and if you live in even a moderately sized community you’ll find a wide array of groups to join.

If you are lucky enough to be in the Birmingham, Alabama area here is a list of code camps / user groups in my area that I am personally affiliated with.

BarCamp – – Coming up August 25th and 26th, this is a code camp where the attendees have a lot of say over the presentations. (If you’re not in Birmingham be sure to check the main site as there are BarCamps across the country).

Birmingham Software Developers Association – – A group of developers that meet to focus on primarily Microsoft .Net but do cover other topics. I’ll be presenting at the November meeting on Developer Tools.

Birmingham .Net User Group (BUG.NET) – – This is a large group that focuses exclusively on .Net related topics.

Internet Professional Society of Alabama (IPSA) – – User group that discusses all aspects of internet development. Does cover .Net, but not exclusively.

Magic City Technology Council – – This group is a nice departure from most in that it focuses on methodologies more than nitty gritty code techniques. Recent sessions have covered Extreme Programming and Project Management, to name a few topics.

Note the list above is far from comprehensive. Birmingham had over 30 user groups in the area last I checked, the groups I listed above are the ones I am a member of. A quick Google will find many more.

Getting involved in a user group is the quickest, most inexpensive way to get a good technical education, and at the same time keep the magic of coding alive!

Free Education with No Extra Time

Every developer has the need to constantly improve his or her skills. But where do you find the time? I have a wife and kids, am a member of seven different organizations, and have a demanding job. But I have found a method that’s both free and costs me no extra time: Podcasts. Let’s talk about the who, what, when where, and why of podcasts (although not necessarily in that order).

For those of you who don’t know what a podcast is, it’s similar to a talk radio show only placed on the internet. Some shows stream their feeds live, but virtually all place their files on a webpage so that you can download it later. Most are MP3, but there are a few other formats as well, such as WAV.

These shows are target to a specific audience, and there is a nice selection out there for the developer. So how do you listen to a podcast? Well, you can download and listen on your computer. As you might expect, the term “Podcast” takes it’s name from the Apple iPod, and you can listen on an iPod or any MP3 player. I personally have an HP iPaq, a PDA (Personal Digital Assistant). In addition to keeping up with my appointments, it will also play MP3’s. I like it because I don’t have to carry an extra device around, and because it has a tiny speaker built in, so I don’t have to use earphones if it’s not convenient.

That covers the what and how, now the when. I listen when I am doing manual tasks. Driving back and forth to work I use a car charger and stereo adapter to hook my iPaq to my car stereo. When I cut the grass I use ear buds under a set of hearing protectors. I also use my ear buds when doing chores around the house, even when shopping! Nothing helps take the drudgery out of picking up milk after work like listening to some new ASP.Net techniques while you do it.

Now we come to the who. Who to listen to? A simple search will turn up hundreds, if not thousands of podcasts. Where do you go for the best? Well, here are my top pics:

DotNetRocks – – Carl Franklin and Richard Campbell put on a weekly show, interviewing a big name in the Microsoft Development world. With an archive of over 180 shows, there’s plenty of good material to keep you busy for quite some time. The earliest shows run about 2 hours, and cover a bit of news in addition to the interview, the more recent episodes run approximately an hour, and concentrate mostly on the interview.

Hanselminutes – – Hosts Scott Hanselman and Carl Franklin spend half an hour each week discussing technology related topics. The majority of the shows focus on ASP.Net development, but on occasion Scott will divert into other topics like cool development tools, or nifty gadgets.

TWiT (This Week in Tech) – – Many of us remember TechTV. Leo Laporte went on to found the TWiT.TV group. Leo’s weekly show, TWiT discusses the latest in the tech world in general. The latest trends in hardware, software, plus corporate news are discussed. Leo has a weekly rotating roundtable, with names like John C Dvorak and Patrick Norton dropping in.

Security Now – – From the TWiT family of shows, Leo teams up with long time guru Steve Gibson to discuss security on the world wide web. You can also download the show from Gibson’s site,

Well there you go, there’s a few shows I listen to on a regular basis. Should be enough to get you started. Oh, almost forgot the why. Well, you’ll have to answer that for yourself, but if you’re like me, you want to be the best developer you can be.

Free Education? With no extra investment in time? Sounds like a winner to me!

Developer Tools

This is going to begin a series of blog entries on “developer tools”. I’m going to expand though on the traditional definition of developer tool, and go beyond just software, although I’ll discuss some of those as well. I’m also going to mention things like physical tools, sources of free training, and organizations you can become a member of. All of which will help you become a better developer.

Speaking of organizations, it’s an organization that I’ve picked out for the first tool: Toastmasters. Yes, I can hear your puzzlement now, Toastmasters? OK, so perhaps you don’t regularly give speeches. But very few of us work in a vacuum, having specs e-mailed to us and sending them back out without speaking to anyone.

If you’re like me, you speak with people every day. You meet with users or customers to discuss their requirements. You speak with other developers to go over specifications. Your boss, project manager, or employer drag you into endless meetings. Often in those meetings you are tasked with presenting, be it a proposed solution or the final results of months of coding. In all of these instances you are “publicly speaking”.

Toastmasters provides you with the tools to polish your speaking habits. Through practice and friendly, supportive suggestions your speaking skills will quickly improve. They also have a variety of books and manuals targeted to different needs, including developers. The two I’m working through right now are called “Management Presentations” and “Technical Presentations”.

Toastmasters has many clubs, and likely has a club in your area. Head on over to and do a search for a club near you. Attend a meeting, it won’t cost you anything to attend one meeting and see what it’s all about. If you are someone like me, who just happens to really enjoy public speaking, or you just want to improve your ability to communicate with your coworkers, Toastmasters will give you the tools to fulfill your vision.

Paid Blogging

Over on today’s blog post, Robert Scoble mentions some company that does pay per blogging. It’s an interesting concept. After all, folks like John C. Dvorak have been getting paid to talk about their opinions for years, they just do it in a magazine format or on TV. How would it be wrong for an average joe to get paid for his thoughts? Of course there ought to be a few basic rules.

First and foremost it should be disclosed there is payment going on, and who is coughing up the bucks. And second, it ought to be clear if that payment has an effect on the posting. That helps us to understand the difference between a true opinion piece like the afore mentioned Mr. Dvorak might write, and something that resembles a late night infomercial.

I can think of a lot of reasons why someone would not want to accept money for a blog, or certain situations why it might not be appropriate. On the other hand, I can think of some situations where it would be OK to get paid for their thoughts. After all, we we don’t own our thoughts, who does?

Oh, and just for the record, I ain’t making squat for this.