Creating Complex Software that is Easy to Use is Difficult

I work as a developer mainly within the financial services sector. The solution my company develops is complex and handles all aspects of a finance company’s business. The product is quite mature having first been developed in classic ASP then redeveloped in ASP.NET. It does all the day to day stuff well and offers great benefits in terms of information management and automation of repetitive tasks.
The other day I was thinking how could we significantly improve the product and I came up with two areas that currently represent problems that are non trivial to fix.
Firstly due to the complex nature of the system the finance companies would like to be able to test configuration changes for exsiting and new clients. When they have tested them they would like to be able to auto-promote those changes to Live in a controlled manner and if there were any problems roll back the changes quickly. This represents something of a design challenge. We can build as many environments as we like but promoting changes from one to the next is not straightforward. We could create some stored procedures that would move data accross from a Trial database to the Live one but it is not obvious how these changes could later be rolled back, what’s more these stored procedures would have to be maintained whenever schema changes occured. It would also be difficult to know whether all changes in the trial environment were to be moved or just specific ones for specific clients. I can see there being a solution for promoting specific changes as required by the finance company but not a generic solution to this problem.

The other major problem we face is regression testing after new functionality is added or existing functionality is altered. Like any complex solution there is a lot of interaction within the system changing something can have one desired effect and five undesired ones. If we could do it all again differently maybe a test driven development approach would help allieveate some of this pain. The only problem with this approach is it would have taken longer to get a working product out the door. At the time the highest priority was to get to a point where we had a working solution. This could be viewed as short-term thinking but the finances of the company were dictating this. It is also worth remembering we were developing web applications when the internet was a pimply faced youth so there was a steep learning curve as no-one had done it before and written a book on how to do it.

Wii eeeeeeeeeeeeeeeeee!

My incredibly generous (shopaholic) wife gave me a Wii for valentines day. I wasn’t expecting it as I had only intimated that I would like one in september for my birthday.

The Wii is different from ‘normal’ consoles because the controllers offer a much more natural experience. You can literally place a controller in the hands of someone who has never played a computer game in their life and after 30 seconds of instruction, sit back and watch them play Wii Sports Tennis. The Wii seriously broadens the audience of people that will enjoy using a console and allows three generations of a familly to enjoy the gaming experience together. If you don’t believe me try discussing the merits of Halo on the Xbox with your Grandma then ask her to have a go at Wii tennis and see which she enjoys the most.
In essence then the Wii is all about fun and doesn’t take itself too seriously it is the volkswagen beetle of the console world and I think Nintendo have struck gold with it.

Interflora Sucks!

Here is a story of poor customer service and woefully inadequate communication…

On Feb 13th I ordered my beloved wife a dozen red roses to be delivered on Valentines Day on the Interflora website. A couple of minutes later I received an email confirming that the order had been received. I was a little concerned because the website was behaving bizzarely but I put this down to the fact that it was probably very busy.

Well you can guess what happened next, valentines day came and went and no flowers were delivered. My wife was less than happy but I explained that I had ordered the flowers and I would speak with interflora to try and find out what went wrong. I tried phoning on the 14th but couldn’t get through so I sent an email. The next day I had an email back telling me my email had been stopped by Interflora’s virus checker due to an attachment. I didn’t attach anything to the message but I do have an electronic signature that can cause this so I resent my email without the signature. I heard nothing from Interflora that day, I put this down to them probably clearing through a backlog of valentines day problems. On the 16th (today) I tried calling again after having checked my credit card and found that a payment (£45) had been taken. The phone rang about 15 times then stopped, so I emailed them again asking someone to contact me.

I like most people accept that these things will happen even with the best processes in place, what seperates the good companies from the bad is when things go wrong, good companies do their level best to put things right and retain the customer. This has to be done quickly, i’m not sure what gesture Interflora could offer me now to make me consider ever using them again!

Brinkster ASP 2.0 and dasBlog

I have just wasted several days of my life trying to get dasBlog hosted on my Brinkster account. I wanted to use ASP 2.0 and version 1.9 of dasBlog unfortunately at the time of writing this is impossible.

Brinkster have set <trust level=”Medium”> in their servers’s machine.config this is not overridable in your web.config if you try and override it your app will blow up. dasBlog was originally architected under 1.1 and designed to use <trust level=”Full”> you can read more on the Brinkster forum here.

There is an alternative Thinkjot which does work but comes with this warning “It may be unstable and cause problems in the application pool” read more here . I have only just installed it and will update this post at a later date if I encounter problems. You can get thinkjot here it is based on dasBlog but has been written to work at the medium trust level. To get it working you must get create a subfolder in your webroot folder then upload the Thinkjot files and folders to it. You must edit the web.config file and comment out the line <trust level=”Medium” originUrl=””/>. In the SiteConfig folder you must edit the site.config file and set the <Root> element to the URL of your blog. You can edit these files locally and upload them or use the brinkster file manager. You must then contact the brinkster live chat support and ask them to give read / write permission to NETWORKSERVICE on three subfolders <yourfolder>content <yourfolder>logs <yourfolder>SiteConfig and create a VIRTUAL WEBROOT for <yourfolder>. They will only do this if you have a DEVELOPER hosting package multiple virtual roots are not supported in lesser packages.

When Brinkster switched the trust level to Medium just before christmas many of their customers sites that were using ASP 2.0  stopped working, if you are contemplating using Brinkster or any other hosting company for a 2.0 application you should read this.

Make Cheap International Calls to India, China, Thailand Etc.

I have become a Just-Dial affiliate and built a website to promote the service. Anyone can do this all you need to do is register on their website. My new website is I am in the final stages of completing it, hoping to finish it off this weekend. The site is built completely in ASP,NET 2.0 using master pages. I am impressed with how easy it was to build.