Adventures into VB6 "reflection" and error handling

I've started working on a testing framework for VB6.
To be more specific, a testing framework that it should be possible to integrate into even the most hairy of legacy applications.
I tried reading up on existing tools, but there where not many, and the documentation left much to be desired. But the one thing I found was that they all required ActiveX dll's or exe files.
If your legacy application is not designed using this technology, for example if it's just a standard vb6 executable, your pretty much left out in the dark.


Simple.Data and MySql

I've been looking for a basic .net data access layer for some time. I didn't want all the overhead of a full blown ORM framework like NHibernate, or Entity framework, but I wanted to get rid of all the messy boilerplate needed to use a database. Allso, It needed to support Mysql 4.0 (!). MySql 4.0 is fairly ancient tehnology, making my search rather difficult.
I ended up writing my own simple layer to suit my needs for the project I was working on.
It worked, but it was not elegant, and just slightly less painful to work with than plain ADO. Also, it required another kind of boilerplate code, as it was based on pre-defined data classes.
After spending too many hours on reinventing the wheel and several subsequent technologies, I stumbled over the Simple.Data library by Mark Rendle (@markrendle -

Why I now really like Audible, and why I'm a hypocrite with regards to DRM.

fifth_elephant.jpgFor just about one year ago I finally signed up for one of the many offers Audible gives out to get a free audiobook of my choice. I spent some time making my choice and ended up with The Fifth Elephant by Terry Pratchett, as I am a big fan of his Discworld series of novels.

But, when time came to listen to my audiobook, I gave up.
Audible locks up their books in a proprietary format. And to download a book, and transfer it to a device for playback, I had to download their equally proprietary software. This software could only transfer audio to devices they explicitly supported. And my device of choice at the time, a Nokia E75 mobile phone, was not supported.
Being lazy, I did not bother to try and break the DRM. I simply gave up.


Consuming .net Assemblies from VB6

-Basic COM interop

I spent a lot of time with my first interop project going through all the resources I could find on the subject. I found that many of the articles I managed to dig up did not cover the basics needed to get a simple ineterop project up and running.
Another lack in the existing library of interop articles is the bias towards writing articles describing the consumtion of COM libraries from .Net. My need has allways been the other way around: consuming .Net assemblies from VB6.
The best guide I found where a 15 seconds article by Patrick Steele: COM Interop Exposed. This article adressed most, if not all, of the issues i ran into with my first interop project. It also goes through the background needed for someone not previously exposed to the COM way of thinking to understand enough of what's going on behind the scenes.
My goal for this article is to make a basic step by step guide on getting the very simplest interop project up and running in your development enviroment.


On security, stupidity, and why the top search term for my blog is "dating to relating" ebook

I've had the domain for some years now, even though it's been just a holding page for most of the time before I started this blog. Occasionally I've been using it for testing purposes though, and this is the source of my agony.

I was testing out HelpBurner and its capability to post directly to Drupal. I did not get it to work, and in the process of finding out why, I opened up the Blog API module for anonymous users (just a test site, remember..)


Registration Free COM Interop Deployment

Today I ran two rounds of deployment of to our production servers. This led me to start pondering a blog post on the strategy we've chosen to make this as painless as possible.

Our operational requirements demands that deployment of new versions is done continuously, without downtime, while our users are actively using the software.
As long as the deployment environment is controlled, .net applications can be xcopied directly, with no extra steps. But our application is a mix of .net and legacy VB6 components. This mix would lead many to believe that registration in the registry is unavoidable, which could lead to DLL hell.

But there is a solution:


Hurray, yet another development blog

Spent this Sunday morning setting up a blog again. Been years since my last attempt, which included a custom CMS as part of me teaching my self PHP. Needless to say, maintaining and extending the CMS took so much time, I never really did any blogging.

This time I've done it using Drupal and I did not even bother doing my own theme. (Though I hope to rectify that in due time.).

I do quite a bit of Drupal development in my day job, but I've never been asked to set up a pure blog site before, so this was acutally a first. Whent farily quick and easy. But two technical decisions required a bit more thought than the others:


Subscribe to RSS