April 2007 Entries

Calgary Code Camp -- Taking CI to the Next Level

Yesterday I was at Calgary Code Camp to present on Taking Continuous Integration to the Next Level.  James, Bill and group ran a remarkably smooth and organized event.  The venue was fantastic and, from a speakers perspective, the equipment and rooms were easy to work with and in.  I'm not sure what the final attendance figures were, but the rooms had a vibrant and energetic feel from the attendees. I was slotted up in the last presentation block of the day.  I had a good group of attendees who, although quiet, did ask some good leading questions.  It was the...

Calgary Code Camp Tomorrow

I'll be at Calgary's Code Camp tomorrow (April 28th, 2007) out at the U of C.  After all us Edmontonians ran away with last years swag, James and Co. decided to have us speak so that we won't get any swag this year. My presentation (3:45 in the room with the dancing girls) is on Taking Continuous Integration to the Next Level.  I'm going to cover some great tools for setting up CCNet, adding functionality to nAnt and some things you can do in your build scripts that will reduce your build time and increase the capabilities of your build. Come...

Some Meetings are Anti-Productive

During the last week I've had to sit in on some significantly disturbing meetings.  Let me set the record straight, I usually attend a number of disturbing meetings each week, but these did stand out because of the complete lack of planning that went into them.  Both of these meetings were to discuss the file structure and file locations on one specific network drive.  Prior to the meeting I had no idea what the purpose of it was, but alas, I decided I should probably go because it's in these types of innocuous meetings that you usually end up getting...

My case against weak-typed languages

Before you read this post in it's entirety, you need to head over to Justice Grays blog and see his post on his Grandmother and the difference between strong-typing and weak-typing.  Instead of placing an unsanctioned guest blog post in the comments section of Justice's blog, I decided to write it up here. I do believe that the one thing Justice didn't explicitly state in his post was that in being strongly typed I would fail immediately. D'Arcy, on the other hand, will fail at only when he tries to use his Saved By The Bell DVD as a martial aid. The...

CreateMock Live Template Update

After some playing around in RhinoMocks I realized that my Create Mock Live Template wasn't nearly as elegant as it could have been.  I've updated the import file here.  This version uses the ability to create a mock object using the generic method CreateMock<T> and thus eliminates the nasty looking type cast that the old one had.  Instructions for downloading and importing can be found here.

Calgary Code Camp

The announcements have been made.  The cake has been ordered.   And the open bar* has been stocked.  Calgary Code Camp is set for April 28th at the University of Calgary.  A few of us from up here in the Capital region are heading down to present.  I'll be talking on Taking Continuous Integration to the Next Level.  Hope to see you there.

Writing unit tests

Yesterday I was bored.  When you take this bloke out of the Igloo and it's to warm to his tongue stuck to a parking meter he tends to write manifestos.  This one stemmed from having to fix a test fixture that failed when the tests were run in random sequence.  The result was an email outlining what I think are the primary concerns each developer should have when they write their unit tests.  These were my thoughts (expanded a bit because sometimes I care to share more with you than my coworkers). Never create module level object variables in...

Edmug's 1 Year Anniversary Party

A year has come and gone, and Edmug is flourishing.  In the past 12 months we've managed to hold 13 meetings and one code camp that have seen some of the most recognized names in .NET development visit and present in Edmonton.  In addition to the luminaries we've sown the seeds of presentation with a number of locals who've provided fantastic content. To celebrate the past year we're throwing a party!  No, it's not going to be one of those parties where Justice continually harasses you for calling his Paladin a Wizard.  Instead it's going to be one of those...

Why Gmail continues to win me over

I've been using Gmail for a few years now.  For the past year or so I've been managing my Gmail accounts in Outlook.  About a month ago Outlook quit sending messages for me (I think it's related to putting VSTO onto my system, but a fresh build is upcoming so I'm not working to hard at fixing it) and I've been using the web UI a lot more. Little things continue to impress me.  I like how it can figure out what emails belong in a thread, even if they haven't been part of a Fwd or Reply chain.  Today...

Code Coverage on Constructor Based Dependency Injection

I was working with nCoverExplorer at work this week checking to see how diligent we'd been while writing our tests.  One of our major tasks in the last month has been to refactor our service layer so that it employs constructor based dependency injection.  When I looked through the coverage on this work I noticed that the coverage was lower than I'd been hoping for.  Closer inspection showed that the culprit was the constructor chaining we were using as part of our Dependency Injection refactoring.  Below is an example of a class that we would create. namespace DependencyInjectionExample { ...

.Net vNext (Orcas) and TimeZone2

One of the new features in C# 3.0 (more appropriately .NET 3.5) is the addition of the TimeZone2 object.  TimeZone2 greatly enhances your ability to work with different time zones over the older implementation, TimeZone. You can see the enhanced interface provided by TimeZone2 (on the right) over TimeZone (on the left). The the biggest change that I noticed right away is the introduction of a list of system time zones.  You can access and iterate the list as simply as: foreach (TimeZone2 timeZone in TimeZone2.GetSystemTimeZones()){       Console.WriteLine(timeZone.Id.ToString() + "(" +...

It's that time of the year again

For the next week you're going to be opening your feed aggregator of choice only to be inundated with the "I got an MVP!" posts.  If you're like me you'll be thinking "Yeah-yeah-yeah.  Congrats to you, now gimme some geeky goodness on your blog again." For what it's worth I think the MVP program is good for our industry.  As a user group leader (Edmug's 1 year anniversary is coming up in April...more on that in another post), the MVP designation tells me that I can count on that individual to show up and present with some semblance of competence. ...