Monday, January 29, 2007

Well, it's official.  After many, many hours of hard work I'm finally almost done.  What started out about 7 years ago to be a simple "finish the basement" project is now to the point where I can sit back and look at the fruits of my labors.  In reality, the project didn't take too long to complete (a few months at best), but the fact that the months were spread out over several years made it a tad frustrating and far too lengthy (sounds like some software projects).  In all, I (with the occasional help of family and friends) added about 1300 sq feet to the house consisting of 1) a bedroom, 2) a home theatre/recreation room, 3) a storage room, 4) a craft room, and 5) and office (with an adjoining bathroom)

I guess the reason I'm blogging this is today marks the first day where I'm actually in the new office and working.  Over the weekend I was able to get all of the electrical work done in the basement.  Sure, there are still some loose ends to finish.  I still have a little touch-up painting to do.  I still have to wire up the ethernet, speaker wires, and cable lines.  But it's functional and that's the key.

Prior to today I was taking up a small, much needed bedroom upstairs as my office.  It was filled to the gills with books, papers, boxes - in short, it was a constant and complete wreck.  Moving from a small 11'x11' room to a 13'x23' room is SOOO liberating - and long past due.  I don't have any furniture down here yet.  In fact, my 'desk' is a piece of particle board sitting atop some food storage boxes.  So I'm sitting here on the floor :)  I'm anxious to get started building my desk - I've had this affinity my entire life for custom woodworking/carpentry, and that's a project I've long been anticipating and planning.

Anyway, this long, extended, after-hours project has led to me not having any time for "coding for fun" as all of my free time since December has been consumed in finishing the project.  Many of my personal projects had been put on hold to see the basement project come to completion.  I hope to see that change somewhat over the next few weeks.

...Almost done :)

Monday, January 29, 2007 3:28:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Tuesday, January 23, 2007

I was reviewing a post that I made last week and wanted to quickly follow-up with an addendum.  In that post I mentioned using DTS (Data Transformation Services) to effectively pull information from one SQL Server to another, providing an observation about SQL Server and MSDE/SQL Express version interoperability.

Additionally, I went so far as to say that I am able to run my DTS package (which is technical a code package more than an actual, saved package - read COM automation) from a SQL Express 2005 communicating with a SQL Server 2000/2005 server.  This is accurate, but not the complete picture.

I failed to mention that out-of-the-box, it won't work.  That is, the DTS automation components are not, by default, installed when you install SQL Express 2005.  If you're needing to support DTS on a SQL Express 2005 machine, you'll need to install the Microsoft SQL Server 2005 Backward Compatibility Components which can be downloaded here.

Once that piece is installed, it should work fine.  I didn't want to leave this out there and have someone come back and say "hey, what you told me didn't work" because, frankly, I get enough of that ;)

Tuesday, January 23, 2007 5:06:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Thursday, January 18, 2007

You know...? There are some days where you're with it and have your act together and can speak coherently and formulate your thoughts, and other days where you don't and you stop at green turn arrows while you're driving because you're just fried.  Well, I suppose it happens to everyone once in a while.  It doesn't happen to me all that often, but today (more specifically tonight) was one of those times.

I was giving a presentation to the Utah .NET User Group on SQL Server 2005 Development (SQLCLR, etc) and I just couldn't get my act together and felt completely disorganized.  I suspect the information was fine and the presentation was okay, but I really felt out of sorts.  In a way I feel I did the group a disservice by not being on par with my normal presentations.  While I'd like to offload the blame to something else and make excuses I can't - I must not have been as prepared as I thought and started into it cold, without a plan.  I had actually prepared the presentation quite some time ago and had given it twice to other groups (both of those times went very well and were much more fluid).  Maybe that comfort with the presentation led me not prepare as well as I would have otherwise and I simply started off on the wrong foot.  I can simply say that I wasn't "on my game" and I apologize for that.

Despite all that, in some ways the presentation was successful - the information was imparted and people had good things to say.  Perhaps I'm overly self-critical.

One highlight of the evening was that we had 13 people join us for food/drinks after the meeting (as has been our tradition for about 9 months).  That has been a lot of fun.

I'm looking forward to the coming months - we're trying to put together some different content and meeting formats to mix it up a bit.

Thursday, January 18, 2007 4:45:00 PM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback

In the event you didn't get our reminder email and for all those out there that may stumble upon this post before this afternoon:

Last week we had cancelled the Utah .NET User Group meeting due to inclement weather.  We've been able to reschedule it at our regular location (Neumont University) for tonight at 6:00 PM.  We will be meeting on the 2nd floor (rather than on the usual 3rd floor).

Copied (and edited) from the previous post:

The Utah .NET User Group is getting the year started off with a discussion on SQL Server 2005 Development.  Yours truly has the opportunity to drill down and talk about the SQLCLR as well as many of the improvements to the T-SQL programming model in SQL2005.  It should be a good time.

If you're in the neighborhood (meaning the greater Salt Lake City area), please come on down and enjoy a great evening of code, food, friends, and fun.  We're meeting tonight, January 17th, 2007 @ Neumont University @ 6:00 PM.

As we've had the tradition of doing now for almost a year, several of us get together afterwards for a bite.  Please feel free to join us there too!

Date: Thursday, January 18th, 2007
Time:  6:00 PM (arrive early)
Place: Neumont University, Suite 200 (10701 South River Front Parkway, South Jordan, UT)

It'll be loads of fun - bring your friends!

Thursday, January 18, 2007 2:10:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, January 17, 2007

I've been battling a peculiar issue for a couple of days regarding Data Transformation Services (DTS) with SQL Server 2000 and SQL Server 2005.

I wrote a small C# application that utilizes DTS to pull a database from a server down to a client machine.  All in all, the application runs beautifully and the information synchronizes seamlessly.  Occasionally, however an odd error was reported: Unable to connect to source server for Transfer.  This was odd because all of my connections were succeeding.  It was also only on this computer that the error was occurring - I could not duplicate the error on other computers so I began delving into the differences between the machines.

As it turns out, the error has to do with mismatched database versions which I've whittled down to the following matrix:

Client SQL Version Server SQL Version Result
MSDE SQL Server 2000 No Issues
SQL Express SQL Server 2000 No Issues
MSDE SQL Server 2005 FAILS
SQL Express SQL Server 2005 No Issues

As you can tell, the issue arises when the client database engine is not at least as high as the server version.  I'd long suspected that a version mismatch was the root of the problem but hadn't ascertained it until today.  After troubleshooting this for some time to make sure that there wasn't something else I was missing, I ran a trace on the SQL Server to detect whether something was happening there. (I had actually run the same trace before but failed to see the key piece of information).

The DTS transfer objects apparently have baked into them a version check.  When run from an MSDE client it performs the following query:

if (object_id('master.dbo.sp_MSSQLDMO80_version') is not null) exec master.dbo.sp_MSSQLDMO80_version else if
(object_id('master.dbo.sp_MSSQLDMO70_version') is not null) exec master.dbo.sp_MSSQLDMO70_version else select 0

SQL Server will always return a valid result set for the current version (e.g. 2005 returns valid results if the sp_MSSQLDMO90_version sproc is called and 2000 returns correctly if the sp_MSSQLDMO80_version sproc is called), but will throw and exception on any other version's sproc.  The issue is that the MSDE will check for sp_MSSQLDMO80_version on a SQL2005 box which returns an error which ultimately cascades down and cancels the DTS package.

From a SQL Express client, the query is this:

if (object_id('master.dbo.sp_MSSQLDMO90_version') is not null) exec master.dbo.sp_MSSQLDMO90_version else if
(object_id('master.dbo.sp_MSSQLDMO80_version') is not null) exec master.dbo.sp_MSSQLDMO80_version else if
(object_id('master.dbo.sp_MSSQLDMO70_version') is not null) exec master.dbo.sp_MSSQLDMO70_version else select 0

In this case, the query will continue to work against a SQL2005 server or a SQL2000 server.

In other words, SQL is throwing the 'cannot connect' error correctly.  Internally it reports "To connect to this server you must use SQL Server Management Studio or SQL Server management Objects (SMO)".

Solution:

My application must maintain full compatibility with the MSDE -> 2000 environment.  The only solution I could come to was that in order for my application to run against a SQL Server 2005 server the client computer would have to be upgraded to SQL Express.  I hate to have to do that, but I could see no other viable solution.

Are there other thoughts out there?

Wednesday, January 17, 2007 8:50:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Wednesday, January 10, 2007

The Utah .NET User Group is getting the year started off with a discussion on SQL Server 2005 Development.  Yours truly has the opportunity to drill down and talk about the SQLCLR as well as many of the improvements to the T-SQL programming model in SQL2005.  It should be a good time.

If you're in the neighborhood (meaning the greater Salt Lake City area), please come on down and enjoy a great evening of code, food, friends, and fun.  We're meeting tomorrow, January 11th, 2007 @ Neumont University @ 6:00 PM.

As we've had the tradition of doing now for almost a year, several of us get together afterwards for a bite.  Please feel free to join us there too!

Date: Thursday, January 11th, 2007
Time:  6:00 PM (arrive early)
Place: Neumont University (10701 South River Front Parkway, South Jordan, UT)

It'll be loads of fun - bring your friends!

Wednesday, January 10, 2007 5:58:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback

I arrived home last night from a fantastic weekend.  We had the opportunity this past weekend to have an offsite executive meeting and establish plans and goals for the coming year and to get on the same page.  It was quite productive and we accomplished many things; it was just the right mix of business and fun.

Additionally, we had the opportunity to attend the first day of CES (Consumer Electronics Show).  Boy, was that HUGE!  Despite seeing it first hand, I still have a hard time fathoming the sheer scope of the conference.  I may be mistaken, but I heard that there are over 115K attendees - good grief!  One day was plenty for me.  I can't imagine attending the entire conference, much less spending more time there; too many people, too much of the same stuff everywhere, too big.  Then again, I don't know how else it could be accomplished.

All in all, a very productive weekend and lots of fun! - But it's good to be home and back in action.

Wednesday, January 10, 2007 5:53:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Saturday, January 06, 2007

We had the opportunity last night, after arriving in Las Vegas, to take some time out and check out an exhibit that intrigued us entitled "Bodies...The Exhibition".  Wow!  The exhibit takes you through the entire body, every system, each part.  What's most fascinating is you're not looking at diagrams or models but actual people preserved by by some polymers.

Each room in the exhibit is themed to an aspect of the human body (i.e. skeletal structure, circulatory system, respiratory system, reproductive system, digestive system, etc).  There are 'view boxes' with each piece of the body perfectly preserved (some even demonstrated characteristics of disease such as Cirrhosis of the Liver) and one or two almost complete bodies in dramatic poses that further illustrate that particular aspect of the body.

One room that greatly intrigued me was dedicated to the circulatory system.  Each view box in the room had the blood vessels of each of the major organs of the human body (and one complete body as well!) - but just the blood vessels.  Turns out that to accomplish this the organ's vessels were filled with the polymer solution, then the polymer was allowed to harden, and then all organic material was dissolved away leaving only the structure of the veins.  In a word: awesome!  Especially the complete body.  Each exhibit represented only about 60% of the veins in the body because the capillaries are too small for the polymer to enter.

If you get a chance, I would highly recommend taking the time to see it and experience it.  You'll not regret it.

On a side note, I'm rather proud of myself for my restraint.  That is, not once did I break out and say that most memorable line from The Sixth Sense. :)

Saturday, January 06, 2007 3:06:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback

One of the most satisfying and gratifying aspects of writing software is to hear how much it helps customers succeed.  One such review was posted yesterday by John O'Connor.  He has some great things to say and gives nice succinct overview of what our product configurator is.

Reading his review makes me want to continue to strive to make our product even better and to further improve our great support team.  This is what I get up for in the morning! :)

Saturday, January 06, 2007 2:41:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Friday, January 05, 2007

This past week I've been completely engrossed in debugging software and assisting to resolve customer issues.  It's been a very good and productive week, but not too technical (hence the dearth of programming-targeted posts), at least not technical enough to warrant a post.

This weekend, however, I will be in Las Vegas, NV for, among other things, the 2007 International CES Conference.  The conference starts on the 8th and runs through the 11th, though I'll only be there on Monday and Tuesday, flying home that evening.

Prior to that I'll be working with two of my compatriots at Experlogix in an offsite meeting that I'm very excited about.  I hope to accomplish a lot this weekend.

All things are looking up.

Friday, January 05, 2007 10:15:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Monday, January 01, 2007

It's pretty exciting to get the year started off this way.  I received notification today via email that I was accepted for the second year as a Microsoft MVP.  :)  I hope that more can be accomplished this coming year and the .NET community strenghtened.  Thanks to all those that contribute and make our community rock!

Monday, January 01, 2007 7:04:00 AM (Mountain Standard Time, UTC-07:00)  #    Disclaimer  |  Comments [2]  |  Trackback