New tool bar icons for VS 2005

I’m putting this here to I’ll remember where the bits are

A customer from Las Vegas DevConnections asks:

It seems like, but I may be mistaken, that you said something about posting some new set of toolbar icons on your blog? Was I in a Vegas-induced stupor or did you really say that?

Yes, I really, really did – however I totally forgot to link to it.  Aaron talks about the library here.  …and Soma talks about how the new image library came to be

Instructions for finding the image library can be found here:

To install the Visual Studio 2005 Image Library
Locate the file This file is normally installed in \…\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\.

  1. Right-click and click Extract All.
  2. The Extraction Wizard appears.
  3. Follow the directions in the wizard to extract the images.

It looks like, this is something you’ll need the full Visual Studio install for – the zip file does not install with the Express editions of Visual Studio.


[via jfo’s coding]

Building ASP.NET 2 projects

On K. Scott Allen’s blog, you can find a really good description of how the build process for ASP.NET projects has changed from 1.0/1.1 to 2.0.

One of the adjustments to make when moving from ASP.NET 1.1 to 2.0 is how to produce debug and release builds.


Here is the most important concept to come to terms with in 2.0: Visual Studio 2005 knows nothing about compiling a web application. In 1.1 VS built the code-behind and ASP.NET built the web forms. In 2.0 Visual Studio 2005 delegates all compilation responsibilities to the ASP.NET platform.


Jump here for the full article, it neatly describes what has changed and how it works. He doesn’t go into why it changed, that’s the part I don’t get. What’s the advantage of the new build method? In the end, as long as I can get FinalBuilder to build it, I’ll be happy.

Test drive of

This message was entered with, a web based document collaboration tool. I usually enter my blog entries with w.bloggar, but I’m game to try something new. It doen’t work with Opera 8.5, I’m using IE 6 right now. As a rule, I only use IE when I have to do, and that’s enough to limit my usage of writely. It does work, it’s just a little bit sluggish.

A suggestion for "Just Think of Canada as 11 More States"

Steve’s has a bone to pick with us.

I’m a loyal Canadian. I enjoy Tim Hortons, and don’t mind the Canadian Tire guy. But as Canadians, I think we need to get the message across to Americans that we’re not all that much different from them, and not that far away.

Why do I say this? Because one too many times I’ve been shopping online, found the exact product I want, and then find the dreaded statement:

Sorry, we are able to ship (and mail printed catalogs) only to the US, its territories and possessions, and APO or FPO addresses.

Why? Why why why?

What you need to do is convince FedEx and/or UPS to offer virtual mail addresses. Packages sent to a virtual address would automaticly get forwarded to a real Canadian address, with the recipient paying the additional fees. It’s mailbox forwarding, except with non virtual bits. It’s a win-win situation for everyone. Steve gets his reasonably priced borosilicate lab glassware, the vendor makes a new sale, and the delivery company makes a few dollars (or loonies).

Allen Bauer has a cool post on reporting bugs and the common sense etiquette that should be used.

I hope folks understand that by following a few simple rules and creating a defect report that you would like to get is actually you contributing to your own success.  In this one case I have to say that karma is the best way to describe this process.  But paying it forward and actually becoming a part of the solution, it will all eventually come back to you.  Even though you may think your contribution is tiny and insignificant, the fact of the matter is that your contribution when compounded with everyone else’s can pay back in large dividends.

Having been on both ends of the defect report, I completely concur with Allen. A long time ago (and in a galaxy far away), I was moonlighted as the tech support “department” for a well known reporting package that used to be installed with Delphi. On average, I would get between 30 to 60 emails a day from other developers who bought this package. It never failed to amaze me how hard it would be to get people to send specific information to duplicate a badly worded or vague bug description. Mind you, this reporting package had plenty of issues to deal with, but many times I couldn’t duplicate the bug that was reported by the description that was included. I would usually send a followup email asking for the steps required to duplicate the bug.

I tried to avoid getting sent entire projects. This was 1997-2000, and I was doing support from a dialup account, it woul take forever to download everyone’s projects as they usually sent me everything, binary files included. Sometimes, I needed the full project to duplicate the problem. That part was always interesting, you learn that the users will use the code in ways that you did not expect. There were always a few people who would refuse to provide detailed information and I would get a ranting email about not wanting to peform QA work for free. I actually received an invoice from one guy for the “services” that he had provided in tracking down the problem. [more about that when I finally decide to blog about that job].

On the other end of the spectrum, I spent a considerable amount of time documenting flaws in Sybase’s ADO provider for Adaptive Server Anywhere. In the beginning, they wouldn’t take my bug reports seriously. They would tell me that it was a Delphi ADO issue and not a problem with their provider. The problems were not with Delphi or it’s ADO components, but they couldn’t duplicate the bugs from my descriptions and they were not inclined to look at Delphi source code. I ended up coding detailed examples as VBScript files. One of the nice things about ADO was that it behaved the same way no matter who it called it. With those examples, I was able to get Sybase to spend time tracking down the problems that I was having. They were never able to fix those problems, but I did appreciate their efforts. What came out of those examples was that I was using Sybase’s ADO provider in a different way than they were testing and apparently, their testing did not include all of the features supported by the provider.

RE: A better BackgroundWorker : CancelImmediately and other goodies

Hmm, I can use this for a service testing application that I’m working on…

One of the nice new features you get in .NET 2.0 Winforms is the new BackgroundWorker component. It allows safely executing long tasks in a different thread than the GUI, while allowing an easy event-driven interface to perform the task and respond to events (such as detecting work progress). There are even versions of this for .NET 1.1 courtesy of Juval Lowy.
One of the things it does not support is the ability to Cancel the running task immediately rather than waiting for the code to process the Cancel Request (which is vital if your “DoWork” code contains tasks that individually take a long time to process). With some Reflectoring, I was able to overcome this obstacle and provide a solution for this problem.
For the full details and download in VB.NET and C#, read the full article:

[ISerializable – Roy Osherove’s Blog]

[Update] There’s a good article by Juval Löwy, titled Asynchronous Windows Forms Programming that covers this in great detail

Who was Microsoft kidding when they promised to end “DLL Hell”? The long dark night of the SQL Server 2005/Visual Studio .NET 2005 beta produced a series of seeming incompatible .NET frameworks. I didn’t do much beta testing with the 2005 bits, but when I did, I did so from the safe confines of various VMWare sessions. I’m now looking at some automated build tools and one of our developers suggested MSBuild. That’s the last thing you would want, a build tool that will be dependant having the appropriate runtime installed. Plus I want something that supports more than .NET compilers, we are still building Delphi Win32 apps here as well as .NET assemblies.

On a slightly separate target, why RSS Bandit is such a resource hog? I loved the interface, but it would bring the performace of my PC to a flying stop. I just started using Omea Reader, and it plays well with others much better than RSS Bandit did.

….Microsoft promosed that DLL Hell would go away, but with the .NET Framework betas, they dropped us into the biggest DLL Hell I’ve ever seen. I can’t uninstall MSH from my system because I installed the .NET Framework 2.0, which required that I uninstall the beta versions. The MSH uninstaller requires the beta framework, which I uninstalled, so I’m stuck. I can’t install the release version of MSH. This sort of thing is just silly, and I thought it was a problem that we’d solved. (To be fair, they did promise that this won’t be a problem for release versions of the framework, but how many millions of times were the betas downloaded?)

from Stevex’s blog