Thursday, June 14, 2007

I gots my favicon back

A while back, this blog was updated to the new Blogger and I was the custom icon that was displayed with my blog.  And of course, I forgot where I had hosted the icon.  I came across an blog posting for MyFavatar, a free site for hosting favicons for blogs.  I decided to give it a shot and it's one of those things that just plain works.

They made it pretty simple.  You register for an account, upload an image, and they create the .ico file from the image.  They even provide the html to enable favicons in your blog.

Enabling Database Diagrams in SQL Server 2005

I was working on a spec for a new feature in our flagship application, when I wanted to included some simple database diagrams.  I was adding some new schema and I wanted to reference them in the spec.  I figured I would just do the schema changes in a spare database and make a database diagram.

I opened up MS SQL Server Management Studio (SSMS)) and connected to the database on a box running SQL Server 2000.  I selected the database and then selected "Database Diagram".  SSMS got huffy about how the database diagrams in 2000 were nothing like the feature in 2005 and it wouldn't touch it.  Gee thanks,  Microsoft.  The SQL Server team should have borrowed Raymond Chen for a while.  That wouldn't have happened on his watch.

I connected to a SQL Server 2005 box and made my schema changes in a scrap database.  I selected database diagram and got a lovely error dialog with the following message:

Database diagram support objects cannot be installed because this database does not have a valid owner.  To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.

So I took the error message literally and took a peek at the owner.  I was the owner, and I have admin rights on that box. [Insert annoyed grunt here].  So I tried making sa to the owner, same error.  That obviously wasn't the problem.

After a wee bit of googling, I came across the root cause of the error.  It was not an ownership issue, it was a database version issue.  We support both SQL Server 2000 and 2005, all of our databases are version 2000 compatible.  You can't have 2005 database diagrams in a 2000 database, even it it's attached to a 2005 server. 

There are a couple of ways to change the database, I opted for the T-SQL method:

EXEC sp_dbcmptlevel 'MyDataBase', '90';

The sp_dbcmptlevel is documented here.  The value "90" corresponds to the version number of SQL Server 2005. I ran that command and I was able to add database diagram support to the database.  You can also make the change via SSMS with the following steps:

  1. Write click on database.
  2. Click on Properties.
  3. Click on Options.
  4. Change the Compatibility level to desired compatibility.
  5. Click OK.

After doing all of that, I really disliked the look of the tables in the database diagram.  It looked like the tabled editor from Access '97.  So I ended up doing what I should have done in the first place, created a database diagram in Visio and copied that into my spec document.

Tuesday, June 12, 2007

When other people host your data....

You are at the mercy of your hosts when they hold your data.  Using an online feed reader like Bloglines or Google Reader means that someone else is backing up your feed subscriptions.  This is usually a good thing, except for when they accidently delete all of your subscribed feeds.  That happened to Steve Tibbet today.  And not just Steve, it happened to a bunch of people.

It looks that problem has been fixed, but I immediately went and exported my subscription list to an OPML file.  I wonder if you can create a PowerShell script to automate that export.  The URL is a static link,

I, for one, welcome our new Google overlords. Even so, things break and you can't rely on them to back up your data.

The $51 server.

It's been 6 months since I installed FreeNAS and it really has been like an appliance.  I back up my machine and my wife's machine with just a few batch files, based on robocopy.  I could get fancy with remote backup tools and so forth, but simple works.

I've been calling it $51 Server .  It started out as a white box pc that that I had custom built by MWave a few years back.  I had needed a Netware box for some Sybase Adaptive Server Anywhere testing and we bought a Dell Server with Novell Netware 5 on it.  It's an interesting story of how I ended up with that box, but if you want to skip the story, just jump here.

Netware was installed, but it needed to be configured.  The first thing it asked for was it's designation.  I considered naming it "One", but precious few would have caught the reference.   Usually when I get a server, I'll ask a random co-worker for the first one word that comes to mind.  I was talking to one our tech support staff and his word was "pumpkin". 

This bugged our IT manager to no end.  Normally, IT handles all of our server installs, and the server gets the name of some sort of predator.  Since I was the only one who knew Netware (which was a scary thought on many levels), the care and feeding of Netware box was my responsibility.

Getting back to Pumpkin.  After running it for a week, we had a somewhat urgent need for another Windows 2000 Server for a temporary remote access situation.  I wiped Pumpkin clean and IT installed Windows 2000 Server and named it Viper.

Temporary turned into permanent (about 6 years at this point) and I still needed a Netware box.  And of course, we did't have any more money in our budget for another server.  But we did have enough money to have a cheap whitebox built.  So for a couple of hundred, we got a Celaron 1ghz box with 256MB memory and a 20GB drive.  Video and sound were on the motherboard and we had a 3Com ethernet card that had outlived it's prior owner.  Using the usual method of selecting a server name, one of the QA people volunteered "moo" as the name.  She likes cows and it was short enough that you could easily type it with one hand with moving the hand.

Moo lasted 5 years without issues.   We used it test Sybase and it did was asked.  Our support for Sybase ended last fall and so ended our need for dedicated Netware Server.  The company sold it to me for $1.  I spent $50 on a 250GB hard drive and installed FreeNAS on it.

So for the whopping sum of $51, I have a NAS box that is completely managed by a simple web interface.


Technorati tags: , , , ,

Friday, June 08, 2007

User specific connection strings

Steve Harmon has a good tip on how to use ASP.NET 2.0's configSource to store connection strings in a file outside of the web.config.  You keep the user specific file out of source control and you eliminate conflicts when people use their own connection string settings.  He's not the only one to come up with that idea.

Shawn is dragged kicking and screaming into the year 2004

Shawn Gwin finally has a real blog.  As the president of the Tech Valley .Net Users Group (TVUG), it was about time that he started blogging.

Tuesday, June 05, 2007

TestDriven.NET and Visual Studio Express

There's been a lot of blog postings about Jamie Cansdale's legal issues with Microsoft in the last few days.  Jamie has a product called TestDriven.NET that integrates unit testing within the Visual Studio IDE.  The problem is that Jamie has integrated TestDriven.NET within Visual Studio Express and Microsoft would like him not to do that.

Visual Studio Express is the free version of Visual Studio 2005 intended for the hobbyist/student programmer.  Because it's free, Microsoft took a few steps to prevent VS Express from taking away sales from the other members of the Visual Studio product line.  Basically, you are not allowed to extend Visual Studio Express with additional functionality.

Jamie found to register TestDriven.NET so that it would work withing VS Express.  Jamie stated that he used published API calls, everything was above the board.  Information posted by Dan Fernandez (Lead Product Manager for Visual Studio Express) would indicate otherwise:

The TestDriven.NET product is implemented as a Visual Studio Add-In.  In the Visual Studio Standard, Professional, and Team System SKUs, TestDriven.NET is installed as an Add-In and gets loaded into the IDE through the Add-In Manager.  In the Visual Studio Express SKUs, because we disabled extensibility (macros, Add-ins, and VS Packages), the Add-In Manager is removed and therefore Add-Ins are not detected or loaded.  Jamie has created additional components specifically for the Express SKUs to work around this technical limitation.  He takes advantage of an extensibility point that allows user controls (such as a button class) to customize entries in the Properties window.  When his property extender gets called, he executes code that finds, loads and injects the TestDriven.Net assembly into the Express SKU’s running process, thus replacing the functionality of the removed Add-In Manager.  This explains why he instructs Visual Studio Express users to open the Properties window in order to enable TestDriven.NET.  Once his code is injected into the Express SKU’s running process it can add menu items, enable features that were disabled, and in general take over that instance of Express. These special loading mechanisms that Jamie has built exclusively for the Express SKUs are unauthorized workarounds to the SKUs’ technical limitations.

Right after VS 2005 was released, Microsoft contacted Jamie asked Jamie to remove support for VS Express from TestDriven.NET.  After many rounds of email and phone conferences, Jamie complied for a while.  Eventually he re-enabled support for VS Express and Microsoft is now using their lawyers to enforce their request.  You can read most of the emails and the legal correspondence here.

When I first read about this, my initial thought was Microsoft was sticking to the little guy.  That's really not the case here.  Microsoft spent a considerable amount of resources developing the Express line of Visual Studio products and it was clear from the start that you were not supposed to extend the architecture of the tool.  For that limitation, you have a powerful development environment that you could develop commercial applications with.

People have been making the argument that it's OK to extend the functionality because Microsoft is already doing it by releasing additional products (like Popfly) designed for VS Express.  That has nothing to with MS's requirement that third parties are prohibited from extending Express.  This isn't unique to Microsoft.  CodeGear does the same thing with Turbo Explorer lineup.  You can't install third party components into Turbo Delphi Explorer

Jamie appears to be stuck on the what specific part of the EULA is being violated.  I don't think it matters.  The request to pull VS Express from TestDriven.NET was a reasonable one and he should complied with it.

It's entertaining to read the comments posted on Dan's blog, especially here.  While I'm not surprised by the number of people who just don't know the facts, there were many postings by people saying that MS vs Jamie was a reason to dump MS and only use open source tools. 

Give me a break!  If you are making decision on what tool to use over a clear cut EULA violation, you have rocks in your head.  You should be making that type of decision based on it being the right tool for the job.