Scott Hanselman has done it again. Go check out the goodness that is

Scott Hanselman’s 2005 Ultimate Developer and Power Users Tool List

The list is getting insanely long, but there is some insanely good stuff in there.

Back when I was using BSD Unix and Linux a lot, sym links were incredibly handy creatures. It was with great joy that I recently discovered NTFS Junctions (aka Reparse Points), which are directory-only sym links for NTFS file systems. Junctions are supported in NTFS on Windows 2000, Windows XP, and Windows 2003 Server. Out-of-the-box, Junctions are not easy to use, but two little utilities make life much easier:

  • Junction – A sysinternals command-line utility for creating, viewing, and deleting junctions.
  • Junction Icon Overlay – Windows Explorer Overlay that displays a junction icon on sym linked folders.

Now you might be wondering, what the heck are sym links/junctions/reparse points and why should I care? Let’s take my current setup as an example. I’ve got a pile of virtual machines for running the latest Visual Studio 2005 and SQL Server 2005 bits, along with installs for Indigo, Avalon, and WinFX. My laptop hard drive, while a spacious 60 GB, fills up rather quickly with all those VHD files. Now I could put all the VHDs on my 300 GB Maxtor external drive, but what happens when I need to use one on the road. (The Maxtor external drive requires an external power supply. So you can’t fire it up when you’re commuting on the bus.) I could copy it over to the internal drive, but then I have to tidy up my delete/re-create the virtual machine in the VPC 2004 console. Instead I junction the virtual machine directory on my external drive to “My Documents\My Virtual Machines”. Here is my external drive:

Here is My Documents\My Virtual Machines:

The little links on the folders come from the Junction Icon Overlay.

When I want to create a new virtual machine on the external drive, for example Windows XP Pro - Whidbey RC1:

  1. Create an empty directory called R:\My Virtual Hard Disks\Windows XP Pro - Whidbey RC1.
  2. Open a command prompt in C:\Documents and Settings\JamesK\My Documents\My Virtual Machines\.
  3. Run the command: junction “Windows XP Pro - Whidbey RC1″ “R:\My Virtual Hard Disks\Windows XP Pro - Whidbey RC1″.
  4. Create the new virtual machine using the Virtual Disk Wizard and Virtual Machine Wizard as per normal using the path “C:\Documents and Settings\JamesK\My Documents\My Virtual Machines\Windows XP Pro - Whidbey RC1″.

This has a number of advantages over just creating the virtual machine on the external drive:

  • If I ever want to make that virtual machine portable, I simply delete the junction (junction -d “Windows XP Pro - Whidbey RC1″) and copy the directory over to the same place. VPC 2004 will never be the wiser.
  • If I decide to archive an old virtual machine on the internal drive because a new beta drop just hit the streets, I copy it to the external drive and create a junction.
  • If I fire up VPC 2004 without the external drive, only virtual machines on the internal hard drive appear. If I add the external hard drive and restart the VPC 2004 console, the virtual machine images on the external drive appear once again. (Very cool feature. I wonder if the VPC 2004 dev team knows about it.) :)
  • You don’t have to re-target your differencing VHDs when you move your base VHDs. Just create a junction from the original location to the new location of the base VHDs.

There are lots of other uses of junctions. Scott Hanselman’s favourite seems to be avoiding ”the evil that is the Company-Wide Subst” when creating a standard development build tree. (Very good use, I must say.) You could also use them to archive old C:\Program Files without having to uninstall/re-install the programs – simply move the directory to your external drive and create a junction from C:\Program Files to the new location. Use your imagination and you’ll be amazed at the uses you can put these little critters to. You’ll also wonder how you ever lived without them.

Kit George, Joe Duffy, and Steve Herndon of the .NET Framework BCL Team are coming to Calgary to talk about CLR 2.0. Way cool! The chat is being hosted by the Alberta .NET User Group. Sign up there.

Very humourous cartoon. I suspect that the intersection between fans of blogging and Star Trek is a very large group. Enjoy!

This is a great whitepaper by M.K. Park of the Visual CSharp Debugger QA team. Whenever I run into Visual Studio debugger problems, I’ll reference it. It’s been around for awhile, but I’m posting the link so I can find it more easily in the future. Blogs are great for increasing your long-term storage capacity.

This has been around for awhile, but I just stumbled on it again today. The Joel Test (by Joel Spolsky of “Joel on Software” fame) is a quick checklist of the quality of a development team. When I’m making recommendations to clients on how to improve their development process, these are the types of things that I’m looking for. I would hazard to add:


13. Do you develop software iteratively and incrementally?

14. Do you involve end users in prioritizing requirements/backlog items/user stories?

15. Does your team have daily standup meetings where each member communicates what was done yesterday, what will be done today, and what is preventing them from being as productive as they could be?


In other words, are you using agile techniques where appropriate?


EDIT: Tidied up some wonky formatting.

Two new tools were recently released onto the .NET scene to assist with identifying differences between assemblies. The two are actually complementary. The first is LibCheck from Microsoft, which displays API differences between two assemblies. The second is the Reflector Diff Addin, which actually displays differences in MSIL (in the language of your choice of course). The Reflector Diff Addin, of course, is an addin for Lutz Roeder’s fantastic Reflector .NET. Reflector just got better.

Have you ever wanted to publish a CS paper, but lacked one or more of the following?

  • A good topic

  • Co-authors

  • Time to write it

  • Any knowledge of computer science

If you answered YES to any of the above, then SCIgen can save the day. Generate your own personal CS paper. Share it with your friends and co-workers. Impress your boss and get a raise. Maybe even have the paper accepted at a conference!


I have updated ZoneStripper to v1.0.1.0. This version fixes an issue where ZoneStripper would stop processing files/directories on an “Access denied” error. ZoneStripper would occassionally encounter this error on a particular file, even when you have full rights to the file and it is not locked. Closing all open applications and/or rebooting and re-running ZoneStripper produces the same error and always on the same file(s). This version logs the issue to the console, but continues processing additional files. Previously ZoneStripper reported the error, but stopped processing additional files. Thanks to Jason Kaczor for alerting to this mysterious problem.

Don Box and Andrew Layman analyze the flow characteristics of XML streams using fluid dynamics and investigate improvements to XML compression efficiency using discrete cosine transforms.



This is geek humour at its finest. Thanks, Don and Andrew, for an enjoyable April 1st chuckle.