Written by WATYF on Friday, 04 December 2009 (5155 hits)
Category: .NET Programming
Well... it's that time again. Something happened that was frustrating (or informative) enough for me to write about it on a website where no one will read about it. Been a while since the last one. Here's to hoping that I still remember all the buttons I gotta push to make this thing work....
So anyway... many moons ago, I was searching for an embedded database to function as the backend for TaskRunner. I went though much turmoil and gnashing of teeth. Around that time I wrote my infamous (whuh?) article titled Why do all embedded databases suck? Not long after that, I found a solution... VistaDB. They were having a "get the word out" promo that offered a free license for VistaDB to anyone who blogged about it. So I tried VistaDB... it solved my problems... I wrote the blog... I got it for free... I was ecstatic. So I wrote another article called If VistaDB was a woman... I'd marry it.
But oh how times have changed....
It went like many broken relationships... the beginning, blissful... the middle, plagued with unforeseen costs and downfalls... the end, a flaming car-wreck of betrayal and disappointment.
When I first found VistaDB, they were on version 2. A guy named Anthony was running the company, and he was eager to get his product out there. He did. I used it. It worked great. I was happy. VistaDB was happy. Oh, the good ol' days. This was the "new" stage of the relationship, where everything is just roses.
Some time later, I heard that VistaDB was coming out with version 3, which was going to be 100% .NET (written entirely in C#). The previous version had a COM component for the db engine and a .NET component for the Provider. They also claimed speed increases and other what nots, and I thought, "It would be nice to have a 100% .NET app". So I bit... I did something that I never thought I'd do. I paid ACTUAL MONEY for a programming component (I know... unheard of). There was an offer for upgrading from 2.1 to 3.0, and the price was cheap enough for me, so I went for it. This was the marriage stage of the relationship... I decided that VistaDB was something worth sticking with for all my embedded DB needs, and I so I made a commitment.
But then I started noticing small problems... a bug or two would creep up here or there. Something that never caused problems in 2.1 was now throwing intermittent exceptions in 3.0. And not easy-to-find exceptions that can be debugged in thirty seconds... these were the kind that only happen once every several weeks, or even months, and that you really just can't nail down or figure out a solution to. This would be the early marriage years, where you start to realize that the item you bought might not have quite the same contents as what was advertised on the box.
The problems persisted, and I kept putting off a solution. TaskRunner would lock up every couple weeks or so and need to be restarted. I tried a few times to track down the issues (which couldn't be reproduced in debugging-mode, of course, and which always occurred deep in the VistaDB dll relating to table locks and arrays that I couldn't even see). I went to the VistaDB forums and posted my error messages a few times over the course of a year or whatever, but no answers could be found there. And this is when something began to change. I noticed that a new guy was popping up at the forums. Jason. He was kind of a jerk. No tact at all. Very confrontational. Horrible people skills. And it looked like this guy was going to be taking over the company. Ruh-roh. All of a sudden, the product morphed from a simple component that "just worked" into a multi-tiered component with layer upon layer of licensing and subscriptions and all kinds of other nonsense that they try to rope you into just to use their product. Oh well, I though... I'll just find the bug and stick with ver 3.0. This is the part of the relationship where you realize things suck, and you just try to go back to "the beginning".
But, like most relationships... you can't go back. No... once you've exposed the problems, they have to be dealt with, or they will crush your soul. And crush they did.
I decided that I couldn't put up with the instability of TaskRunner any more. I was building an app for my company that I'd been working on for about a year and I
was using VistaDB 3.0 as the backend. But I would get intermittent
(yes... again) crashes when the app closed (more specifically, when
trying to close the db). So there were other apps that I needed a fix for, and since it affected my work, my boss was willing to foot the bill for a db, so I figured, "I'll get the NEW version of VistaDB! It'll be great! It'll be shiny and bug-free and everything will go back to the way it was!" By this time, version 4 was about to come out which made more promises than version 3 (There was a version 3.5 in there at some point that I paid no attention to). This is the part where you try to fix things... you go to counseling... you try to put a new face on the relationship... you put in the effort to make things work.
So here I am. I'm willing to put in the work. To do what it takes. I try out version 3.5 and it looks like it might solve the crashing problem at work, and the lock-ups in TaskRunner. But why get the tired old 3.5 when you can get the shiny new 4.0?? I was in no hurry. Plus, I had other (large) problems to deal with in the app at work, so the 4.0 roll-out came and 3.5 went. No big deal... I'll just get 4.0. But wait... there's a problem. 4.0 is only compatible with Visual Studio 2008 and later. I'm on 2005. Well crap. So now I've gotta put in a request for a new version of Visual Studio. More delays. More work. But hey... this'll be worth it, right? We're gonna save this thing. We've gonna come out better than before.... right? I think it's pretty clear which part of the relationship this is.
When trying to install version 4, I noticed something different. There was a very lengthy "validation" process involved. I could feel the dark hand of "enforced licensing" grab hold of my computer like a tractor beam. But hey... it's gonna be worth it, right? .... right? I read something about version 4 being limited to 2 installs. This was a problem for me. I have two machines at work, both of which I use for dev, and I have my desktop at home, and my wife's laptop as a backup if I'm on the road. That's not to mention that my company uses Citrix for remote work, so I might need to do dev there as well occasionally. But I figured that something could be done. I fired off an email to VistaDB to see what my options were...
This is when it happenend... this is when I realized that the "woman" I "married" was not the same. There's always that moment in the relationship when you realize things
aren't going to go very well. Remember that guy "Jason" who took over
the company? Yeah.... he was that moment. Jason's response should be included in business school curriculum as a perfect example of how NOT to ever address your customers. Basically what I got was a whole lot of, "I find your scenario hard to believe. Our licensing scheme is perfectly reasonable. We would lose tons and tons of money if we did it any other way."
I felt like I was being interrogated. Like a criminal. Look... all I want is to figure out what my options were. But he was more interested in defending his licensing model, which, by the way, is THEE most restrictive licensing model I've ever seen on any .NET component (hell, probably on any software... I have heavily protected pro-audio software which costs thousands of dollars and requires a hardware dongle, and even THAT can be used on more than just two machines). We got back and forth for days, but I get no help.
At this point I'm panicking. I've got two major apps that need this
back-end. I've already delayed the app at work over and over due to other
issues, and I really need a solution. I still try to muscle through and get it done. Sure, the guy who owns it is a douchebag. Whatever. No big deal. Maybe I can make it work on two machines. Maybe I can figure it out.
That's when another bomb dropped. Not only can it only be installed on two machines. But you can only install it under ONE login name. That's right. One. Freaking. Login.
This is the part of the relationship where the dark cloud settles over
it. When you realize that the person you thought loved you really just
wanted you for your money, and now that they've got it, they could give
At this point, version 4 is literally unworkable. I have two machines at work. They both have different logins. I have to have a separate utility login for my batch machine (which runs TaskRunner). This guy's licensing structure is so restrictive, that I am literally desperate to buy his software but I physically CAN'T.
So I try a fall back... what about version 3.5? That one worked. It didn't have the ridiculous licensing enforcement storm-trooper software built-in. I email again saying I'll pay more for 3.5. At this point, I didn't expect a good reply. I had already spent days of emailing and laughing at how atrocious this guy's customer interaction skills were. I would have literally been shocked if he told me that he was willing to help me.
And he wasnt.
So that was it. It was over. The relationship was unsalvageable. I literally couldn't use the new version, and he wouldn't let me buy the version that had just been replaced days earlier. The wonderful, simple, easy-going, stable component that I fell in love with years ago turned into a bloated, angry, unreliable, restrictive she-beast with a turd on top.
I was single again.
But hope was not lost for me. I decided to go back out on the hunt. I went through my old options again. If necessary, I was going to redo the db hooks for all my apps and scrap VistaDB (3.0) entirely and never look back. After some searching, and a few trials, I went back to one of my original contenders: SQLite.
Originally, I had issues with multi-threading in SQLite, but I worked around that, and now it is successfully running both TaskRunner and my app at work, and things are going smoothly so far.
SQLite is free, as in "use it for whatever the hell you want... we don't care". It is faster than VistaDB. I did some trials of application startup and data storage times and what not and SQLite came back as almost twice as fast as VistaDB. It has a huge support community, and when you ask questions, you don't get treated like sh#t.
Who could ask for anything more?
I feel like I'm on a second honeymoon.... we'll see how long this lasts.