It’s that time of year again - time to look back and see how productive I’ve been (or not, as the case may be).
In January I came upon a problem where I needed to point to the UI metadata “buddy class” for .NET DataAnnotations using configuration rather than attributes. It was a tough problem, but I solved it and posted a solution. I also took a look at .NET performance issues. I explored the cost of having many assemblies vs. few assemblies in your build and did a side-by-side comparison of several .NET performance profilers. I played a little Grand Theft Auto. Oh, and I upgraded my Windows Home Server and (a few months later) discovered the peril of using the WD Green drives in it after working through some issues.
In February I updated my command-prompt-here round-up to include VS2010. I worked with DevExpress to post a video about my CR_CodeTweet plugin for DXCore. I ran into a few issues with Netflix streaming to my Xbox that seemed to be fixed by running ethernet cable rather than using wireless. I updated CR_Documentor with the ability to “pause” the preview and assign shortcut keys to various actions.
In March we upgraded our FIOS speed at home and I published a few tips on getting that to work for you. I showed you how to switch your active DXCore version so if you have more than one installed you can easily change which one you’re working with. I explained the importance of the “TypeId” property in ASP.NET MVC DataAnnotations custom attribute types. I posted a list of books I’d consider worthy of teaching “enterprise application development” in .NET. I found that if you install a DXCore plugin and forget to unblock it, it may not work. Later I showed how to unblock multiple files at once. (This is still the #1 reason people think CR_Documentor is broken - they forget to unblock it and Windows security stops it from running.) And I showed how to get your continuous integration build running FxCop from VS2010 without having to install Visual Studio on the build server.
In April I upgraded my home theater receiver to an Onkyo TX-NR3007 and posted a few findings after a couple weeks of use. I released DX_FormatOnSave - a DXCore plugin that will automatically format documents in Visual Studio when you hit the save button so you never have to remember to do it yourself. I had some fun with Windows Aero Flip 3D when trying to bind a custom mouse shortcut to it. The big April event, though, was our vacation to San Francisco, where we took the train down there. Good times.
May was pretty productive, particularly from a testing and coverage perspective. I showed how to run a different NUnit version with TestDriven.NET than the one actually packaged with the plugin. I showed how to fix the #20000 error when running Typemock Isolator and NCover. I gave you a utility to allow non-admin users to develop using Typemock Isolator. The big one in May was that I showed you how to fail your build using NCover 3.4.x and higher since the “standard” version doesn’t actually let you fail the build when your coverage falls below minimum numbers. On a personal note, I finished my 30th laser hair removal treatment and called it done; moved my DVD library off of my Windows Home Server and onto a Synology DS1010+; and got my calendar and contacts syncing between Outlook and Google using GSyncIt.
June started out with me discovering that the AllowPartiallyTrustedCallersAttribute can cause VerificationException to be thrown if you test with coverage. (I think this has been fixed in recent versions of NCover, but I’d have to check.) I told you how to test WCF services while developing as a non-admin. Finally, I told you how to unit test an ASP.NET VirtualPathProvider.
In July Jenn and I ran the Independence Day fireworks show in Happy Valley. I released multitenant dependency injection support for Autofac as a part of the AutofacContrib project. I also told you how to consume the MSDeploy staged output in a WiX installer so you can deploy a prepared web site using WiX rather than MSDeploy.
In August I upgraded to NDepend 3 (a fantastic tool getting better all the time) and explained how to get yourself going with it. I reviewed the book Testing ASP.NET Web Applications (liked it). And I showed you how to fix error 1625 with the Adobe Reader update.
September saw another release of CR_Documentor, this time with a vastly overhauled syntax preview engine. For folks writing DXCore plugins, I showed you how to make your plugin “official” and put yourself in the “About” box for DXCore. I showed you how to get your iTunes playlists to show up in Asset UPnP. Finally, I switched from a Blackberry Curve to a Droid X, so I posted some tips for new Android phone owners and an explanation on how to send event invitations from a Blackberry to a Droid and back (which my wife and I do a lot).
October hit me with a couple of technology problems right up front. First I had trouble syncing my iPod with iTunes as it kept getting stuck with a message “verifying iPod…” so I explained how to fix that. Then my Droid X had a problem where it wouldn’t calibrate the compass, so I explained how to fix that, too. Then, back to iTunes, I found that iTunes will actually crash under certain circumstances if you have a single bad track (how’s that for fault tolerance?) so I showed how to try to solve that one. In development, I wondered where all the Microsoft solutions for complex problems are. I still haven’t gotten a reasonable answer. (Oh, and we got 259 trick-or-treaters this year.)
In November I upgraded my blog to Subtext 126.96.36.199 and figured out an issue where it wasn’t sending email anymore. I bought myself a Kinect and had a good time with that. I also documented some AppSettings configuration keys for log4net that are handy and that I constantly forget about.
The posting sort of got a little lax here in December (though I did sneak in an update to CR_Documentor) due to the birth of my daughter, Phoenix Aeralynn, on Thanksgiving day. She came a little early, but I had started winding down my development activities toward the end of November anyway in anticipation of her arrival, hence the post drought. I’m on paternity leave for the entirety of December, handling the usual hectic nature of the holiday season whilst getting used to the whole “being a parent” thing.
In all, it’s been a pretty good year. Even without all those other things, Phoenix is accomplishment enough. (Now, granted, I feel like a little detail was left out of all of those eager parents explaining how “wonderful” or “rewarding” parenting is, but she’s still pretty great.)
Happy holidays, folks!