Monday, August 18, 2008

Mark of the Be01100001st

Satanists and Puritans keep out - I just wanna be able to find where my stuff is in my house. Imagine a world where trying to round up 4 AA batteries isn't a frustrating experience. That's the litmus test for me with home RFID technology. I know, I know...it's gonna be the end of our peaceful human existance (right). I also remember DBAs telling me the same thing when I wanted to use synthetic keys. Oh, the horror.

To be serious, I know there are privacy concerns, and there will be growing pains, but I think this is a pretty minor concern for most situations.

With the "find my rechargeable batteries" example, it could be just like the technology that currently exists to help you find your cordless phone from the charging cradle. You walk around the house with the little beacon device, and like a radio collared wild animal, the beeps get closer and closer until you find those batteries nesting smugly in that {thing-you-forgot-about}.

I guess I'll have to check back in another couple years. For now the price of the consumer level RFID tags are nearly a dollar each, and I can't find a consumer level tagging/searching device available yet. But I definitely think it'll catch on big when it does.

Wednesday, August 6, 2008

Easy .NET database migrations

If you've ever written code that accesses a database, then you've experienced the issues brought on in trying to keep the database and code in sync. In their common and annoying form, it's when developer X does something like add a column in his local database, checks in the source code, and then developer Y does a checkout and her code breaks because it's looking for a column that doesn't exist in her local database. In their ugly form, the DBA forgets to add a column when the code goes to production and the deployment is bogged down while people scramble to find and fix the issue. Things like missing indexes can be the worst form of this problem, since the performance problems they can create can be very difficult to track down.

When Mr. Fowler wrote about his colleagues' evolutionary database design, things got better in the development world. I and many others soon hacked up some degree of database migration automation based on the principles outlined in that doc, and not too long later Rails popped up with a great implementation of them.

In the .NET world, it took a little longer for people to come up with their own flavors of this automation. When my homies and I wanted to standardize on a good solution, we found a few decent candidates, and landed on migratordotnet. It was pretty cool. Then my smarty pants colleague Geoff took it and made it production quality. He added a bunch more functionality and did some major refactoring.

Once you start using it, you'll never want to go back. Someday you'll wonder how we ever managed without tools like this in our belts.