Canada Lost The Stanley Cup?

More than a few of my American friends have used Tampa Bay's win in the Stanley Cup finals as an attempt to bash on Canadian hockey. 'Canada hasn't won a cup in more than a decade'.
Haven't they?
Yes geographically the cup has not been won by a team north of the border. But where do you think the cup spends most of its time in the off-season? Canada. Each players gets a day (or week, some amount of time) to bring the cup to their home town. Which means that the cup will spend 2 days south of the border this summer.
Thats right, Tampa Bay has 19 Canadians and only 2 Americans.
Ben Clymer (5 Games, 0 points, 2 shots)
John Grahame (1 Game (only 34 minutes), 3.54 GAA, 0.884 Save %)

And here are some interesting numbers related to the NHL's yearly hardware giveaway. Big thanks to Gord for the numbers.

There have been 112 Stanley Cups:

111 Canadian Captains.
107 Canadian goalies.
39 Conn Smythe Winners, 37 Canadians.

Can you name the non-Canadians? One of the Conn Smythe winners is easy, the other, won back in 1994...
You can email me at daforsyth !at! if you want the answers.

49 Norris Trophy Winners, 39 Canadians.
Lidstrom 3 times, Chelios 3 times, Leetch twice, Rod Langway twice (actually born in Taiwan).

76 Vezina Winners, 65 Canadians.
Before 1982 this was essentially the Jennings and I believe that the 100+ Goalies that received the Vezina prior to 1982 are all Canadian. I could be wrong on a couple though.
Also of note is that of the 11 non-Canadians winners, 6 of them are Hasek.

30 Jack Adams, 30 Canadians. This year might be a first, but my vote is with Sutter.

33 Lester B. Pearson Awards (NHLPA voted MVP), 27 Canadians. Jagr twice, Hasek twice, Naslund, Federov. Hull may be a legal american, but he was born and bred on Canadian hockey so I don't count him as an exception.

80 Years of Hart Trophies. 73 Canadians. Hasek twice, Jagr, Forsberg, Federov, Mikita twice. Once again I count Hull as a Canadian.

86 Scoring Leaders/Art Ross, 76 Canadians. Jagr 5 times, Mikita 4 times, Forsberg once. For this I'm hazy on the pre-1960 winners, but I'm fairly certain they were all Canadian.

So there are the numbers, also of note though is that most news outlets are reporting that Calgary had up to 5000 more people at their 'we lost' party than Tampa Bay had for their 'we won' party...

Don't get me wrong, I would have loved Calgary to win the Cup, but by the same token lets not pretend this is an Olympic Gold Medal won by a team of all Americans..... back in 1980.....

Thanks to Dave for the flag.

Test Driven Development on .NET Rocks Radio - Jun 10, 2004 - Toronto - -23

Barry Gervin from ObjectSharp will be joining fellow Regional Director John Alexander from Kansas City on the .NET Rocks Internet Radio program on June 10th at 10:00pm EST.

John and Barry will be discussing the concepts of unit testing and best practices while highlighting some of the tools available right now to assist you in writing code that is better, stronger, faster.

To listen to the live recording:

Not Open Source, but the next best thing?

I'm not really interested in a big arguement on the merits of Open Source software, I think it has its place in the software world, and so does closed source. So whats the next best thing? Open and well documented API's, SDK's, and protocols. - Outline the MSN assistant with the MSN API, and Speech SDK. Make note of the MSN protocol. - Why this is great, overwrite, or side by side

Getting access to the Deleted Rows

If you Delete a row in a DataTable it's not really gone. It's just in a private buffer thing that hides the data out of the traditional Rows Collection and that works good for databinding and the like. The deleted rows are kept so when you do a DataAdapter.Update() it knows which rows you wanted to delete in the persistent store.

So what if you are writing your own adapter or for other reasons just need to get at the deleted rows. The trick is to create a DataView with a RowState Filter of “Deleted“ and then you can look at the DataRowViews to get individual row/column data.

DataView deleteView = new DataView(MyDataSet.MyTable, "", "", System.Data.DataViewRowState.Deleted);

foreach (DataRowView drv in deleteView)


string someColumnValue = (string)drv["SomeColumn"];


Intro to Microsoft Solution Framework 4.0 and the Visual Studio Team System

I'm a certified MSF Practitioner. Great - how many of you know what MSF is? MS doesn't do a great job of marketing this “product” which is really a process or dare say methodology for the software development lifecycle. The angle MSF has over RUP is that it's derived from what MS does to build its own software and in the MCS group. Some key differences:

  • MSF talks about team roles much more that RUP does. It also talks about scalability and combining roles. The minimum team size that can use MSF is 3. Key take away: Never combine the testing & developer roles.
  • MSF is traditionally (and surprisingly) somewhat less iterative than RUP. I ignore that fact because iterations work and big design up front doesn't.

So along with the announcement of Visual Studio Team System, and all it's far reaches into the SDLC, it would only make sense that MS revamp MSF to fit in with this new toolset - and indeed MSF 4.0 is a deliverable of VSTS.

One of the new directions is that MSF now talks about competing process models...calling the existing one “Formal“ and the new one, you guessed it - “Agile“. Marco Dorantes' excellent blog has some interesting criticisms related to how those are distinguished.

For MSF 3.1 today, above and beyond all of the documentation to describe how it works, you also have a series of templates you can use in your own project. This would include an array of  “Plans“ related to Architecture, Development, Deployment, Performance, Security as well as various requirement and specification documents. There is also a handy Risk Assessment template which is great for prioritizing the project risks and if anything I recommend following a rigid risk mitigation discipline in your projects.

In MSF 4.0 you'll see other neato concrete things in VSTS like:

  • Work Items
  • Source Check-in Polices.
  • Document Templates (Word & Excel)
  • MS Project Templates
  • Reports
  • Project Portal/SharePoint site template

You can read more about this here.

Smart Client Deep Dive

Myself and Adam Gallant delivered an MSDN Deep Dive last week about developing Smart Client applications. I covered the overview & secure data access sections. The samples and IssueVision (1.0 C# & VB) along with the slides are available over here. Thanks to those who came out.

Update: If you want to take advantage of getting this stuff (and more) on the DevDays CD, you can fill in the form here.

Reducing the iPAQ Battery Loss pain

I liked my IPaq for all of about 2 weeks. I happened to have no need for it during a “coding bender” I hadn't taken it out of my briefcase to charge it for a few days. When I finally did get around to looking at it - battery dead. I charged it only to be later prompted by the screen calibration thingy, no owner information set - and guess what - no data either. That's a pretty crappy user experience if you ask me. I used to have a RIM blackberry with a double A battery that seemed to last months. And when it died, I had lots of time (and warning) to get it replaced before data was lost.

I had backed up my ipaq to my sd flash ram card a few times, but today I noticed something cool. A trigger based on battery power! If you go into the iPAQ Backup program, under options, schedule, there is “Enable Battery Monitor” checkbox with an option to “Backup Automatically” and a place to enter in a battery % threshold. I've changed to backup to my typically always insert storage card so hopefully I'll never have this pain again.

Data Driven Development

So we have Test Driven Development and Model Driven Development or Design by Contract (similar perspective). But in the past, I've been a fan of Data Driven Development. This is a technique I haven't had the pleasure of using recently....because it relies on you building new applications with new databases.

What is this technique you ask? Well for me it is designing the data model first. In the early days of Client/Server, PowerBuilder and ERwin were my tools of choice. New applications. New databases. My design process (and that of many of my associates) was not so much to design a database but to document the data that existed in the organization - and do that in 3rd normal form. ERwin still stands as one of the best modeling tools ever because it actually made the job of coding up a database schema easier and faster than any other alternative. I could also use my model throughout the entire lifecycle since it did an excellent job at full round trip engineering/synchronization.

One of the cool features of PowerBuilder was your ability to annotate your database schema with UI hints. So you could say that a given column in your database should by default be shown as a checkbox, and that checked should be saved as “true“ and unchecked as “false“ - or whatever weird thing your DBA said it had to store. Whenever you designed a screen with that column, bam you'd have it the way you'd expect - as a checkbox. The downside of PowerBuilder's datawindows of course was that the data store/entity/container was quite pretty tied to your database and they made no attempts to hide that fact. But boy, productivity was really high - although I was producing tightly coupled, loosely coupled code :( .NET let's me build better code now, but productivity is still lacking.

At TechEd a couple of weeks ago, I stopped by the DeKlarit booth for a demo of their product by their lead architect Andres Aguiar. I was happy to see a tool that builds upon the Data Driven Development process. Of course, you don't have to start with an empty database, but this tool does an excellent job of making your job easy when starting from scratch. Andres promised to send me an eval so I can play with it some more to see how it works with existing databases but this tool so stay tuned. I could easily see this tool paying for itself in a matter of a couple of weeks.

As for ERwin, I'm still a fan although it really hasn't changed much in the past 10 years. I remember the first copy I had fit on a single floppy. So did the 200 table model I created with it. I was using LBMS System Designer who stored my model in some kind of 10mb black hole and took 10 minutes to generate a schema. When I first installed ERwin, I had it installed and reverse engineered by LBMS model - and forward engineered to from Oracle to SqlServer inside of 10 minutes. I couldn't believe the schema generation took 20 seconds compared to LBMS at 10 minutes.

What do you do when your breakpoint won't break?

Go straight to Andy Pennel's Breakpoint Helper. It's not some sw to download - it's a nice interactive q&a that will help you pinpoint the problem. It has tips on 2002, 2003 and 2005. Ahhh. Thanks Andy.

ps. Andy is a dev lead in C# and owns the debugger (as also used by VB.NET, C++, Script and SQL)

Outsource Proof Your Career (with Tom Peters) Hint: think excellence

Tom Peters is giving a live meeting webinar on how to Outsource Proof Your Career on June 30th from 12pm - 1pm est. Click that link to register. Tom's even got a blog. Too bad about the no RSS feed thing.

Join Host Tom Peters, Author, Business Guru, and Founder of the Tom Peters Company and Special Guest Daniel Pink, Author of Free Agent Nation

Seminar Overview  
Tom Peters has generated international attention for his "rants" about outsourcing.   Dan Pink has traveled to India to talk to the software programmers who are "stealing" U.S. jobs.  Now Tom and Dan join     forces to offer a clear-eyed, hard-headed look at the most controversial business issue of our day: the offshoring of U.S. jobs to low-wage countries.

Ten years ago, Tom predicted that 90 percent of white-collar work would disappear.  Now his predictions are coming true, accelerated by hundreds of thousands of talented overseas workers connected to the United States by fiber optic lines.   What does this mean for your future?  Tom will answer that question by giving you a reality check.

Then Dan will offer an early sneak preview of his upcoming book, which elaborates on that answer.  He'll describe how outsourcing is just one of three powerful forces that are reconfiguring the landscape of work.  And he'll show how those forces are moving us from "high tech" work to work that is "high concept" and "high touch."   Mastery of these "high concept" and "high aptitudes," he'll argue, will now mark the fault line between who gets ahead and who doesn't.


  • Where outsourcing is overhyped – and where it's underhyped
  • The two kinds of work that will increasingly define the U.S. economy—and offer individuals a shield from outsourcing.
  • The six essential aptitudes that white-collar workers will have to master to survive on this new terrain. 

This session will include a lively questions and answers session where Tom and Dan will take your questions...Live.  Don't miss this opportunity to hear the Ur-guru.