Wednesday, February 28, 2007

Congratulations Drew!

This is actually old news, I guess, since the email arrived yesterday... But, I've been in training this week, and just checked my work email this evening and saw the notice from Drew Robbins that stated:

Toshinori Robbins was born at 8:07a on 2/27. He weighs in at 7lbs 1oz and
is 20 inches long. Mother and baby are doing well. However, I’m still pale in
the face after leaving the room twice during delivery. ;-)

Congratulations Drew and family!

Monday, February 26, 2007

Podcast: WebDevRadio

I met Michael Kimsal at CodeMash this year, thanks to a casual introduction through Keith Elder.  I didn't know at the time, chiefly because it wasn't specifically mentioned, but Michael has a podcast called "WebDevRadio".

He recently interviewed a few friends of mine, and fellow user group leaders from southwestern Ohio: Jim Holmes and James Avery, authors of Windows Developer Power Tools

 I'm listening now, and it's actually a great interview (/grin)! 

Friday, February 23, 2007

Finally Using "Data Dude"

Microsoft Visual Studio Team Edition for Database Professionals:

I've had it installed ever since the product RTM, but up to this point, I have resisted using it to actually manage my database projects.  But, today, I decided to bite the bullet and see exactly what it could do for me.

Ever since I saw the first demos at TechEd, I've been a fan of the features of VSTEDP.  Especially appealing to me is having full source control around every single database object, as well as the refactoring capabilities like renaming a table or column and have every reference (i.e., in views and stored procedures) also change to reflect the new name.  I imagine that deploying a schema change will be a delight, but truthfully, I haven't gotten that far yet (this is a real SQL 2000-based project that I'm working on, btw).

In fact, VSTEDP appears to be the first "Team Edition" SKU that adds value to Visual Studio that even a small ISV can take advantage of right out of the box.  I'm not easily impressed by the functionality of the other VSTE SKUs.

Despite all that it is, "Data Dude" apparently does not include all of the functionality that you are used to for managing live databases using Management Studio, or even Visual Studio's Server Explorer for that matter. 

My case-in-point for today's experience is the fact that everything in VSTEDP appears to be SQL-only.  There's no graphical capabilities for editing tables or relationships (Table Designer), etc.  Everything that you do (aside from the Rename Refactoring, as it would appear) results in a DDL script appearing in a code editing window.  Heck, even clicking on a Column name in Schema View doesn't let you edit any of the properties that show up in the Property list.

For what it's worth, I'm not DDL-dumb.  But, by the same token, I've gotten used to using the Table Designer to do my work, since I've been doing this using SEM since SQL 7.  I just shouldn't need to abandon that design paradigm in order to take advantage of "Data Dude's" useful features.

Wednesday, February 21, 2007


A month ago, before the release of BC, this might have meant more...  But, tonight, after about 16.5 days (/played), Jaesyn of Dalaran leveled to 60. 

Not too bad for starting this particular toon in November and not being part of a guild.

Guess Who's 60?

Now the push to 70 begins...

Tuesday, February 20, 2007


Dustin Campbell has written a great series over the past few weeks on functional programming topics, which despite being a classic computer science topic, tends to be a little bit ahead of the curve as far as modern day .NET programming is concerned (that will all change in the near future, though - trust me!).

"Closures" is one of the topics that both he and Bill Wagner are expressing a lot of passion for these days, because understanding what they are and how they work are a critical as we move forward into everyday acceptance of Anonymous Methods, Lambda Expressions, and scary things like that.

I've had a pretty good understanding of what a Closure was up to this point, thanks mostly to seeing Dustin present on the topic, as well as spending six hours trapped in a car with him as we drove to and from Dayton one evening.  However, I read something today that really made it click.

I was reading up on the programming language LUA, which just happens to be used to create add-on modules for World of Warcraft (wink, wink).  LUA is a dynamically typed language that supports using functions as first-class variables.  It also supports the concept of anonymous/inline functions, as demonstrated by the following:

function makeaddfunc(x)
-- Return a new function that adds x to the argument
return function(y)
-- When we refer to the variable x, which is outside of the current
-- scope and whose lifetime is shorter than that of this anonymous
-- function, Lua creates a closure.
return x + y
plustwo = makeaddfunc(2)
print(plustwo(5)) -- Prints 7


From that Wikipedia article comes this quote, which resulted in my "ah-ha!" moment:

A new closure for the variable x is created every time makeaddfunc is called, so that the anonymous function returned will always access its own x parameter. The closure is managed by Lua's garbage collector, just like any other object.

So, the simplified point is that because makeaddfunc(x) contains an anonymous function that uses "x", a closure is created each time that makeaddfunc(x) is called in order to preserve the state of variables that are defined outside of the scope of the anonymous function.

I'm not sure if this will help to clear things up for other people as well as it did for me, but here's hoping!

Monday, February 19, 2007

Day of .NET in Ann Arbor: We're Doin' It Again!

Just a quick announcement that we're busy organizing another Day of .NET in Ann Arbor, which will take place on Saturday, April 28, 2007May 5, 2007 on the campus of Washtenaw Community College.

Last year's event was a huge success, with around 150 people in attendance. At the end, over $40,000 worth of swag was raffled away, with everyone walking away with something.

Keep an eye on the web site for further details as they evolve:

Day of .NET in Ann Arbor

The "Call for Speakers" is currently underway, with submissions being due by March 10, 2007.

Friday, February 16, 2007

The Specified Module Could not be Found

This week, I'm helping another branch out with some bug fixes on a web application that I originally assisted with years ago. Or, I should say that I'm attempting to help them out. The first challenge is getting my development environment set up to run this massive application.

Today, everything was working until I tried to test reporting (which happens to also be the area of the system that my issue involves). These reports use a third-party tool to create Excel documents on the server. Despite everything that I could think of, I kept getting a pretty generic error message during the ctor() call of one of the objects in that Excel writer library:

"The specified module could not be found."

The problem, as it turned out, was not due to ASP.NET's inability to find the assembly. What happened was that the assembly was merely an interop wrapper for a COM library, and because I had just "xcopy deployed" the web application, the COM library never got registered.

The solution: regsvr32 the COM DLL that the Interop Assembly required.