Browsing Posts published in September, 2005

Thanks to everyone for coming out to the Double Header last night. I enjoyed presenting to the Calgary .NET User Group again and look forward to presenting to the group in the future. I have posted Tools of the Trade: Must-Have .NET Utilities. Links to all the tools are included in the presentation. (Some of them were rather long. I don’t know about you, but I just love typing GUIDs into my address bar.) :-S


As for the second presentation, Microsoft Integration Technologies: When to Use What, I’ll have to look into whether I can get permission from Scott Woodgate and/or Microsoft to post it here.

I have joined Allstream as Leader of Application Development. (Don’t worry – I’m staying in Calgary.) With the new position, you’ll be seeing me much more frequently on the speaking circuit as I talk about .NET technologies and how to apply them to development in the ISV and enterprise.

I’ll be presenting a double-header at the Calgary .NET User Group on Wednesday, September 28, 2005 from 6-9pm. It will be hosted at the University of Calgary, ICT Building, room ICT122 (http://www.ucalgary.ca/map/). Pre-registration is required on the User Group website. Hope to see you there!

Tools of the Trade: Must-Have .NET Utilities
The number of .NET development tools available is extensive and can be quite daunting, but there are a few that should be in every developer’s toolbox. James will examine a wide range of freely available tools including “The Holy Trinity” (NUnit, NAnt, and NDoc), source control, continuous integration, static and dynamic code analysis, debugging, and related tools. The talk will include numerous demonstrations as well as discussion about the practical application of these tools to a development project.

Microsoft Integration Technologies: When to Use What
Ever wondered when to use which integration technology? In this session understand the technologies in the Microsoft platform targeted at Integration including: MSMQ, Indigo, SQL Server Service Broker (SSB), Host Integration Server (HIS), BizTalk Server (BTS), SQL Integration Services (SSIS) and SQL Server Replication. Get a handle on the core use-case for each of these technologies, check out hello-world demos, and see it all happen inside Visual Studio .NET 2005. If you want to understand the breadth of technologies and when you should use which – come to this session.

The Alberta .NET User Group is starting a new season and this one is kicking off with a former collegue of mine, Ron Matyjanka, presenting one of my talks, Tools of the Trade – Must-Have .NET Utilities. Pre-registration is required, which you can do on the AB.NET website. If you can’t make Ron’s talk, I’ll be presenting an updated version of Tools of the Trade – Must-Have .NET Utilities at the Calgary .NET User Group in the near future. I’ll post details here when the time and location have been firmed up.

There’s a lot of flurry around the web these days over JSON (JavaScript Object Notation) and AJAX (Asynchronous JavaScript and XML). Steve Maine has a great piece comparing JSON to XML and looks at the problems that the technology has ahead of itself based on the pains that XML has overcome in the past. Recommended!

Another thing that’s been kicking around for awhile and I figured it was time to persist to long-term storage. Here are the three top-level places in a WinForms app where you absolutely need exception handling routines to ensure that all exceptions are caught:



  1. try/catch around Main()
  2. Attach a System.Threading.ThreadExceptionEventHandler to Application.ThreadException
  3. Attach a UnhandledExceptionEventHandler to AppDomain.CurrentDomain.UnhandledException

Note that simply having a try/catch around Main() is insufficient as you will not catch exceptions that occur during the execution of event handlers or asynchronous callbacks.

Scott Hanselman recently blogged about how Internet Explorer was spontaneously disappearing on him. Coincidentally in the past week or so, I recently had the same problem start to happen. Windows Explorer just started to disappear for 5-10 seconds and then reappear. This would happen a few times per day. I was guessing that it wasn’t spyware or malware because I’m careful about what I install on my box and I also run as a non-admin. So the chances of infection are slim.


So I fired up Autoruns and took a look. Given Scott’s suspicions above about something inproc with IE, I decided to start there. Rather than adopting a scorched earth policy, I decided to start disabling the browser helper objects. COmeaHelper Object for Omea Reader (by JetBrains) – guessing those guys know what they’re doing. Leave it alone. IeCaptureBho for Google Desktop Search – guessing those guys know what they’re doing too. TamperIE by Bayden Systems – cool program, but probably less well-tested than the other two. Let’s try disabling that one. Guess what? Explorer hasn’t disappeared on me for days.


Thanks, Scott, for pointing me in the right direction. I would also concur with Scott that [Windows|Internet] Explorer both run more stably when you’re not running other crap in their memory space. The same is true for Windows. From what I’ve read, most blue screens are not caused by crappy Microsoft software, but by misbehaved drivers trashing the kernel memory space. Windows made a huge leap forward in stability when they required drivers to be verified and signed. (By “required” I mean that the user doesn’t get an annoying pop-up box noting that the driver hasn’t been verified.)

I’ll be presenting a series of talks for Calgary .NET User Group on acquiring your MCAD/MCSD. The series will include test taking strategies, helpful hints, and other useful information you should know about attaining your credentials.


The first in the series will be Tips & Tricks for 70-306/70-316: Developing Windows®-Based Applications.


Date & Time: Wednesday, September 14, 2005, 5:00 PM to 6:30 PM (Registration starts at 4:30pm)
Location: Alberta EUB Building, Training Room-2nd Floor, 640 5th Avenue SW, Calgary, AB


Pre-registration at the user group website is required.


Thanks to everyone who attended. You can find the slidedeck here and the VB.NET polymorphism demo here.

I’ve had this kicking around in my bookmarks for ages, but I thought I’d share…


Have you ever had to diagram in UML using Visio? It’s a painful process. The UML add-in for Visio has a number of deficiencies:



  • Doesn’t support the latest spec (UML 2.0)
  • Even with the spec it supports, it gets some things wrong (e.g. Completely valid UML will show up with red errors around it.)
  • Using it to really design a software system downright hurts*

* Try the following: Create a sequence diagram. Add some objects and method calls between those objects. Realize that you forgot a step. Marquee and move all the method calls down a notch so that you can insert the forgotten method. Guess what? Visio just forgot all the method names previously entered. You have to manually wire-up the method names again. When actually designing a software system, you are constantly re-ordering methods, removing methods, inserting methods, etc. The team that maintains the Visio UML Add-in should really use their own tool for designing version N+1.


You can’t fault Visio completely. It’s a diagraming tool, not a software engineering tool. So how do you stop Visio from pretending to be a software engineering tool and force it to do what it’s good at (being a diagraming tool)? You grab Pavel Hruby‘s UML 2.0 Stencil for Visio. Thank you, Pavel! You’ve made my time with Visio that much more tolerable.


P.S. Some of you might ask, “Why don’t you use a real UML tool like [insert favourite UML tool here]?” I’m a consultant. As a consultant, it’s often hard to convince a client to buy tools and Visio comes free with many versions of Visual Studio. Typically I’ll need to give my client soft copies of any design artifacts in a file format that they can read. Typically that also means Visio. So like it or hate it, Visio is often the lowest common denominator that all developers on a team can use or have access to.


P.P.S. Some of you might be wondering, given my choice, what my favourite UML tool is? Rational Rose, Borland Together, Sparx Systems’ Enterprise Architect, … I’ve tried a lot of different UML tools over the years and while Borland Together is my favourite UML software package, the best UML designer I’ve ever worked with is definitely a large whiteboard and a digital camera. Honestly, if you can’t design good UML on a whiteboard, the software packages aren’t going to help you much.

If you haven’t checked them out yet, take a look at the MSDN Forums. I’ve been assisting with the Forums since they launched earlier this year and was asked to be a MSDN Forums Moderator recently. They were originally launched to answer questions about VS 2005, .NET Framework 2.0, and SQL Server 2005, but have expanded greatly to include questions about most Microsoft development products. My favourite conversation so far was this one. I answered a question about the GC for someone and Chris Lyon, one of the guys on the CLR Team at Microsoft, chimed in with additional information, which started a great back and forth about GC internals. Be sure to check out Chris’ “A Few Good GC Links” to learn more about the GC in the CLR.


Note to Chris Lyon regarding his blog. Subscribed. :-)