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.
- 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 184.108.40.206 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!
This Thanksgiving we were given a little something extra to be thankful for when my daughter, Phoenix Aeralynn Illig, was born. At the time of birth she weighed 6lb 14oz and was 20.5” long.
Birth was by Caesarian section. Mom and baby are both fine, though mom’s going through a bit of recovery from the C-section incisions.
I have learned a lot already, just five days into being a father. Granted, my experiences are not the same as everyone else’s, but my personal findings so far:
First, the baby doesn’t arrive like it does in the movies. Which is to say, there’s not a huge panicking “holy crap my water broke” moment, nor is there really the mad scramble to find the bag for the hospital and all that. I woke up around 4:30a on Thanksgiving with Jenn tapping me on the shoulder saying it was time to go to the hospital, but basically it was pretty calm. I think it took us like an hour to get our stuff together and get to the hospital, and it was still no real “rush.” I’m OK with that; we learned a similar thing at our wedding, which also wasn’t the “everything is falling apart” panic you see on TV.
Second, babies sleep a lot. People complain about these horrendous sleepless nights, and while, sure, I’ve lost a little sleep, it’s not like I’m up every 15 minutes or something.
Third, the signs for what the baby wants are generally pretty obvious. Baby makes sucking/eating motions and then starts crying: hungry. Baby crying for no reason suddenly: change diaper. Um… really that’s it. Otherwise she’s a pretty happy baby. For us, “why is the baby crying?” generally amounts to “hungry.” If she’s tired, she just goes to sleep, so there’s no real “crying because I’m tired” thing going on.
There are a ton of follow-up doctor appointments. Check the baby, check the C-section, check the lactation progress, check the baby again… I’m not busy because of the baby’s needs, I’m busy because of all the damn appointments you have to go to.
Having a C-section pretty much destroys you. Jenn, a total trooper, is pretty well laid up and on pain meds because the C-section still hurts (not the incision, but something “up in there”). That means, basically, that I went into the hospital with a wife and came out with two babies. I have a pedometer I carry around and I’ve well exceeded the target number of steps for the last week running around and being a single mom for two kids. Basically.
The cats don’t care about the kid. I thought they’d freak out when she cried or whatever, but they really don’t care. One cat in particular, Stan, seems to be really concerned if she cries and checks up on her through the day. We’ve taken to calling Phoenix “Stan’s baby” because of this.
(Yes, we’re very careful with the cats around the baby. If they come near, they are under direct and constant supervision. Fear not.)
Communication is harder to maintain than the people not having the baby think. This is actually what keeps me busy the most. Not the baby, not the running around, but the communication.
During the birth I was in a sterile operating environment so I couldn’t get to my phone. Of course, it was going off with text messages the whole time (phone on vibrate), people wanting to know what was going on. When I got kicked out (they didn’t let me stay for the C-section because Jenn went under general anesthesia) I was in this sterile room in the center of the hospital with what equates to about half a bar of signal. Sending messages just didn’t work. And, of course, because I couldn’t instantly return messages (or the messages I was returning were getting hung up in the network) people assumed the worst and sent more messages.
Just after the baby was born and for the next couple days, Jenn’s phone, my phone, the home phone, emails, IMs, Facebook messages, etc., went off non-stop like a central switchboard. People “just checking in,” offering support, curious how things are, asking for pictures, etc. Problem being, we hadn’t actually been released yet because of Jenn’s C-section, which meant me trying to single-handedly address all the incoming requests for information, PR style. Why aren’t there pictures? Because they’re all on the camera and I don’t have a computer at the hospital to get them off the camera, sorry.
The thing is, I don’t think folks realize that “just one text message” isn’t so bad, but if there are like 30 people all sending “just one message” and freaking out or sending more messages when the first one wasn’t acknowledged quickly, it becomes a tidal wave of messages.
It’s become more manageable now, but we still get a pretty constant influx of people curious “what’s up” or how things are going. I love, thank, and appreciate all of the requests, truly. I feel blessed that we have so many wonderful friends and family members. You never really do know how many people care about you until big life events like this, and it definitely makes you thankful when that time comes. It’s just… if I can’t get right back to you, or if you don’t hear anything immediately, please don’t instantly assume the worst and send another ping. I’m just one guy, and there are just 24 hours in the day, and I’m kinda still getting the hang of all this. I’m probably out running around to the bajillion follow-up appointments (see above). If there’s something to know, or if there’s something I need, I promise to make it known. If there’s something cute to see, I will post a picture somewhere you can see it. And, again, thank you kindly for all the generosity.
Plus, if you really want to help, I have laundry, dusting, vacuuming, and all the usual house chores that aren’t baby related still to do… I can hook you up with all that since it’s the bulk of the work. :)
Finally, having a baby is totally surreal. I don’t think the whole “being a dad” thing has hit me. I mean, I still sit and eat dinner with Jenn and say, “Dude, we’re married. That is so weird.” Not that I think being married is weird, just that I’m a part of that, and looking in at myself as part of that is still more a TV/movie type of experience than something that happens to real people in real life. Looking at this now six-day-old baby and thinking, “This little being is a part of me and a part of Jenn… and someday she’ll be an adult, too, and pursue her own course,” it’s just… really surreal. It’s hard for me to wrap my mind around. It’s going to take some time to “click.”
Anyway, that’s what I’ve learned so far. Like I said, YMMV since my experiences are my own.
If you want to see more pictures, I posted a full gallery.
More of a mental note than anything: I have a laptop that I dock and undock. When it’s docked, it has a second monitor. Sometimes I dock, shut down, then start up undocked, which means any applications that had previously been open on the second monitor now open in some nebulous non-space and I can’t do anything with them.
The solution: Activate the application (click on it in the taskbar) and hit Alt-Space-M. Use the arrow keys to move the window to the monitor that actually exists.
(I tried it using the mouse, but the system keeps the mouse in “real monitor space” so it doesn’t work.)
A couple years back when I was researching storage solutions for my tags: [media] center, I landed on Windows Home Server because of a feature called “Drive Extender” that basically lets you put a bunch of disks of different sizes into the server and have them create One Big Volume. No need to deal with RAID or any super technical stuff the average user doesn’t understand. Plug and play. It’s one of my favorite features and it’s one of the primary reasons I settled on Windows Home Server.
From a features-I-use standpoint, there are really three key use cases for me:
- Storage. Photos, music, videos, documents… just general storage. Being able to expand that easily and have some fault tolerance through the data duplication in Drive Extender is key.
- Backup. The ability to have my computers automatically backed up to a central location is really cool. It’s a full disk image, too, so if anything goes south you can restore the complete machine, OS and all.
- Media (DLNA) server. Streaming pictures, videos, and music to devices on my network.
It appears that the next version of Windows Home Server hasdropped the Drive Extender capability. That’s 1/3 of the reason I like my WHS. Technically, the media serving capability of WHS is pretty limited, so I use Asset UPnP to handle music and the videos mostly get dealt with through file sharing rather than DLNA… so that’s 2/3 down, leaving the backup as the key feature draw.
Looking at the next version of Windows Home Server (code name “Vail”), even if they keep the backup feature in place, I don’t think there’s compelling reason for me to upgrade. (Yes, I voted to have them keep Drive Extender in the next version, but I’m guessing the decision’s been made.) They could update the DLNA server, but I’ll put money down that it won’t transcode Apple Lossless music over the network so I’d still have to use something like Asset UPnP to fill the gaps. Without the easy storage upgradeability… eh. It’s a file server. Not compelling.
So now what?
I ran into a bit of a reliability problem with some bad drives in my WHS a while ago and went looking for a new storage solution. I ended upgetting a Synology DS1010+ to move my DVD library to. It’s super stable - I’ve not had to reboot it in months - and the expandability is easy. It (along with several other Synology products) have a feature called “Synology Hybrid RAID” that is, basically, Drive Extender. It “optimizes volume size when combining hard disks of different sizes.” That said, it also has full-on RAID if you prefer to manage things that way. It has a DLNA server (though I’ve not had a chance to try it myself, I can’t imagine it’d be any more limited than the WHS v1 server). Really, the only thing it doesn’t have is full image-based backup, though it will do data backup and integrates with Apple Time Machine.
There are also a ton of other features that come built-in.
Am I trying to sell you a Synology device? Not necessarily. I’ve just had good luck with mine so far and if I had to choose between that and the new Windows Home Server, I’d probably end up with the Synology. It’s a little more expensive than some of the WHS offerings out there, but you do seem to get what you pay for, at least in this case.