My charming and uber-tolerant wife has given me a beautiful baby girl, Selkie.  This happened 21 months ago, but it's only now I find a spare 30 seconds to blog about it.

LOL, though, because I was that guy who variously poked fun at my friends with children or scorned them for being behind on the newest movies/games.  Well, I haven't bought a new XBox.  I don't own Halo 3 yet.  I haven't even finished Halo 2, let alone Half-Life 2.

About the only thing I have completed is my second bass horn...and that took two years.  More on exponential horns and bass later.

The great consolation and hope I can offer prospective fathers is HOLY CRUD it's fun.  I'm enjoying her more every day; she's at that n^4 cognitive stage where they pick up half a dozen new words a day.  You can practically HEAR the synapses firing as new dendrites sprout.  I'm surprised I don't have to mount one of those lovely copper-flower Zalman cooling fans on her head because that CPU must be dissipating 100W easily :)

Spent a year doing Java, enjoyed it, lovely language, but back to C# 2 and 3.  C# is definitely the better language now; Java will be with us for lo many years, but I believe there's more room in the CLR's architecture for neater and neater tricks in the future.

Recent fun projects:

Asynchronous Command Execution Service (ACES)--reads ServiceAgents from any "queue" source, which depending on the provider can be MSMQ, MQSeries, a DB table, whatever.  The ServiceAgent adheres to IServiceAgent and gets de-serialized from the queue provider, then called in on Execute().  The ACES manages a common thread pool, assigns agents to them, monitors their health, kills them if they go off to never-never land, etc.  The beauty of it is, it can read from as many sources as you configure, and can be distributed across as many machines as you like.  We're using it to do everything from asynchronous exception logging, code audit logging, to running 24-hour queries for report generation.

RulesEngine--not exactly a green-field application, but tailored well to our needs.  Takes any expression with arithmetic, set, boolean, and statistical operators and evaluates them.  Dynamically parses DataSet tables and columns, fetches the data, and operates on it.