Toronto Code Camp 2009 – Speaker Reviews

I had the pleasure to attend the fourth annual Toronto Code Camp over the weekend.  It was my first code camp and I found it hit and miss.  The quality of the presentations varied greatly.

Here’s a review of the sessions I attended:

Get Setup with WiX, Colin Bowern

Having used WIX in a couple of projects, I was hoping to get something good out of this presentation.  Colin was an excellent speaker and covered the basics very well.  However, his coverage of patches was worth the price of admission alone – and would have been invaluable last week.  The session was an end to end coverage of Wix from the first installer, to patching, to upgrading.  Definitely focusing on breadth rather than depth.

Using Data Services with ADO.NET 3.5, Kristina Mandekic

Having seen a presentation by Scott Hanselman on Data Services, I’m not sure what I was expecting to get out of this one.  I’m facinated by the technology, but have no practical use for it right now.  This stuff seems to sink in more the second time around, although I think I’ll really have to code it to ‘get it’.  Krista admitted she was a first time speaker and although she was clearly pretty nervous, I thought she did pretty well.  I’m still confused about the security story surrounding ADO.NET data services, but otherwise the technology looks very cool.

How to improve testability with a modular architecture, Mario Cardinal

This was the best presentation of the day.  At the beginning of this one, I was thinking crap, he’s just going to say use layers and unit testing, but he really focused on designing what he called the ‘velcro’ between layers in an architecture.  He’s from Montreal and has a podcast in French.  Being a big podcast listener I’ve already checked it out and it sounds great!  These Quebecquois get going a little fast for my Ottawa bred and France trained ears but the content’s great.

How LINQ Works: A Deep Dive on Visual Basic 2008 , Jonathan Aneja

Another excellend presentation.  Again, LINQ is something that I’ve been following for a while.  I’ve used it in one project, but I really haven’t gotten the chance to really dig deep.  Jonathan did a great job providing info on how it works, touching on pretty much all the areas.

WPF and the Model-View-ViewModel Pattern, Elias Puurunen

I was looking forward to this one.  I’ve been looking at Prism and MVP patterns as a way to solve some of the isses I had in WPF in my last project.  What amazed me is that this guy was a second year university student presenting to a bunch of professional developers.  The kids got more balls than I do now.  I think he’s going places, but his presentation a little more suited to a classroom environment that conference, but I’m sure he’ll improve quickly.  I left early to get home and see my kids so I never got to see the meat of this presentation, but the pacing was off, and there was too much PowerPoint.

Next time I’ll choose sessions based more on their speakers rather than the topics.  I’m undeciced if I’ll attend again, the day was the most beautiful day of the year and I spent it sitting listening to programming talks with a bunch of nerds (especially that guy over there, wait, that’s a mirror).


Just a one line change

I was thinking about Eric Lippert’s blog post How many Microsoft employees does it take to change a lightbulb?

So, our customer found a bug in the last released version of our software.  For various reason’s it’s only reproducible on one of their customer’s sites (we’re an OEM).  It’s an important customer, and our customer couldn’t wait until the next release for the fix (due in a month or so). scream2

It took two of us three days to track down the cause of the bug and the fix resulted in a one line change.

The one line change was in one of the top level assemblies in our shared base library.  The change had to be back-ported.  We had to create a new branch in our source control system, back port the change, and get a new build of our platform library that is shared between multiple products.  We (er, I) decided that we would just drop the DLL into the release build of our software and edit the assembly redirection in our App.config file and provide them with instructions to manually copy the two files (a DLL and the App.config file) into the installation directory of their software.

So, when I got the build, I installed our old version and dropped in the new assembly into the install directory and tried to run the software.  As expected it crashed on start-up.  So I edited the App.config to point the old version of the assembly to the new version.  Start again.. crash … scratch head for few minutes.  Since the new assembly references all it’s dependent assemblies, they also need redirection.  Twelve (yes twelve) assemblies.

Next write the instructions, send them to Tech Comm for the formal Service Note write up.

Send the instructions to the testers so they can test the patch.  Our customer is in Japan, we need to test on a Japanese OS.  They’ve also done the localization themselves.  We need to test with our test satellite assemblies.  They’ve also re-branded our software. We need to test a re-branded, localized version on a Japanese OS.

Next, we need to make sure everything is in change control, get Quality Assurance and Regulatory Affairs to review our docs, prepare the release request, release notes, review the service note prepared by Tech Comm, get Customer Support to execute the Mini Acceptance Test Plan on the release CD, have the release meeting collect signatures, dot the i’s, cross the t’s, and finally send the CD to manufacturing so they can label it, post it to the ftp site and send an email to our external customer.

Maintenance is the most expensive phase of software, ’cause this whole process was cause by a one line change.