(My apologies...it took me a little while to post the final session of Calgary Code Camp because it took me *that long* to recover from Donald's choice of clothing. As you will read below, you'll understand why.)We're here for the final presentation of the day. It's good that they put Donald's presentation on last, since his pre-conference preperation involves a lot of crying in the fetal position and
Shirt update: my shirt is...HOLY CRAP. *Forget* about *my* shirt.
Listen, I don't even know what I can say except to tell you that you have *NEVER* seen an outfit like Donald Belcham's unlike you've been a fan of:
* Dallas
* The Beachcombers
* Knight Rider
* Highway to Heaven
Red and white shirt - *open almost to the navel*. WTF?!?! You've never seen billowing chest hair until you've seen Donald Belcham. Seriously, *nothing* seen at any past Code Camp activities could have prepared me for this. Is it 5 stars? Is it -5 stars? I just don't know anymore what I'm doing with my life.
Continuous integration - which you check in your source code to your source code repository, it will be checked out atuomatically and a build being run. From a pure code standpoint, this allows *you* to know that things are okay.
"How many people should be on a team to justify continuous integration?" - Donald uses cruise control on his own server to check his builds. He recommends continuous integration even if you're working alone.
Continuous integration is *bigger* than Agile to Donald. It's a concept that should be done regardless of whether you're following all Agile all the time
Donald is taking the unusual step of doing his presentations in Notepad++ since Powerpoint is apparently alittle too complicated. Actually, to be honest, I quite like the minimalist style. Donald laughably says that this presentation has no flash and bang, despite flashing his chest at every unfortunate attendee of this presentation.
Uh oh - I seem to have lost my draw tickets!! Where are they?
Donald ends up covering a couple of things:
1) Resharper - *again*
Donald pimps Resharper like *everyone else* today. Resharper gives *intellisense* for XML attributes in NANT, etc.
Resharper allows you to also see all uses for a particular tag in NANT. This was actually the best sell job of Resharper I've seen today (and considering absolutely everyone here has been pimping it, that is saying something).
Ah, someone asks Donald a question about NANT and is rewarded with Donald *throwing a water bottle into the chest of the woman sitting next to him*. How do you misthrow to someone sitting 2 feet away? *THIS* was the captain of the football team?
2) CCnetconfig
CCNetconfig allows you to configure Cruise Control through a GUI. Nice and very slick editor.
3) Iteration-based labelling
CCnet.config will help you to label code at point of build. This is a nice shortcut to determine iteration/release numbers and abstracting it away from the devs to some degree. CCTray will allow you to put version numbers and iterations against the builds through altering assemblyinfo.cs. I can't tell you how helpful this sort of stuff is to a *huge* amount of shops out there. Heck, half of these places don't even use cruise control.
4) NCover
Donald demonstrates NDover, the coverage tool for .NET. You're able to hook NCover into CruiseControl so that if the level of code coverage goes down , your build will fail. This is awesome! I've integrated NUnit into CuriseControl before but never thought to use NCover before. Donald is doing this through NCover Runner, which produces NANT xml for integrating NCover into the build!
"Does anyone have a mouse 101 lesson?"
"JP says no mice Donald"
"well, JP says a lot of things...he makes a lot of promises...but he's always travelling...I...I...forget it." Oh,
here we go again.
Hmm, they're not in my extra pockets...
5) nantContrib
Some things from nantContrib - Who kicked off the last build? Was it forced?
nantContrib's "codestats" tag can also tell you how much of your project is in VB and how much of it is in C#, for example, among other things. It also tells how many empty lines are in the project and our comment lines as well.
Not in my side bag...
6) dashboard.config
Dashboard.config will help configure our cruise control display output.
"Do you use Simian, and how did you find it?"
Donald: "It was pretty good - Simian goes out and looks for similarities in code structure; it will notify you and tell you it's a possible refactoring point. I think it's okay, but it's also the only one on this list that costs you money. Relatively cool."
Donald has found ways to sniff cruise control servers and force builds. "I've got a lot of time on my hands." Sometimes Donald writes these cracks for me.
I think the guy behind me thinks I am on drugs, given how I am furtively searching through my bag to no avail. Where the heck did I put those things?
7) limit test runs
Donald's entire suite of tests at work takes 20 minutes to run. He'd like a way to limit what is running, and CC allows him to turn off certain tests.
Okay, now I've successfully convinced everyone in the room that I'm high, as half of my bag has been quietly emptied off to the side. Still can't find this stuff!!
8) assemblyinfo.cs
Donald normally removes assemblyinfo.cs during compilation. Assemblyinfo.cs is essnetially a collection of attributes about your assembly. It's a good thing to have it consistent across every assembly. You are able to use CC to automatically generate your assembly info file - unfortunately we're not able to see this as Donald has apparently deleted said code!!
Seriously, I will crap myself in public if my ticket number gets drawn and I don't have the tickets!!!
9) C# inline
You're able to put C# inline code into your NANT files. Donald finds out through this exploration that he actually *does* have his assembly info generation code.
WHO CARES ABOUT THAT THOUGH?? I've found the tickets. I'm going to revise my earlier statement and will now only promise to crap myself if I do not win any prizes. DevTeach attendance, I am talking to *YOU*!!
10) deploy
Cruise Control can also be used for deployment. NantContrib can be used for doing these deployments.
This presentation was *packed* with content - Donald was a man on a mission today! I'm seen a lot of Belcham presentations, almost all of them ending in riots and tears (most of those tears being Donald's). But he held it together for this one and it paid off - tons of content and lots of information for anyone who wants to be doing continuous builds. Good job man!!
Now maybe next time we can work on buttoning up those collars...
Addendum:
I didn't win the DevTeach prize
Calgary Code Camp rewards me with nothing but LIES
Donald's presentation put him on the map
And now my pants are...no, no, I can't go on. I can't go on.