My Product Must Be A Canoe

In Dynamics of Software Development Jim McCarthy makes the argument in #23 Portability is for Canoes. Well the product I am working on needs ro become a canoe. Currently it has a SQL Server backend and it has been sold into an Oracle only shop.

I expect to have a large number of posts on the pain of porting.
The product has been written using a large number (900 ish at the last count) of stored procedures. We have a handfull of views.

The fun part comes comparing Oracle to SQL Server:

In SQL Server parameters need to start with @.
In Oracle parameters may not start with @.

Oracle is case sensative by default.
SQL Server is case insensitive.

Not much of a problem as all of our tables are NAMED_IN_UPPER_CASE.

Oracle has a 30 character limit on database object names.
You know, stored procedures, tables, indexes, constraints.

We have 130 of these to rename.

The one that will bite us are the stored procedures that return reordsets. Oracle does not allow that. This is the fun one.

Web Services and Web References

When consuming a web service in .NET there are two main techniques for accessing the web service. The first is to use a web reference. The second is to use wsdl to create a proxy class.
For some strange reason Microsoft exams prefer the first.

However I would recommend the second. This is far easier (via a subclass) to create a proxy that explicitly requires the url to be specified. This came in handy on a project that communicates to many instances of a second app via web services. We have the one web service that is instantiated at a number of locations. By parameterising the web service we are able to allow the user to specify the location of the web service and to choose between them at run time.

Microsoft and Installers

Microsoft are not very good at writing installers.
If you try to install MSDE on a machine that is not a print or file server then it will take a long time to install, fail silently and fully roll back.
MSI is a ridiculously complex piece of technology. It fails to acheive the basics of informing the user what is wrong when things go wrong.

Visual Studion.NET 2003 has a “great” tool for producing msi installers. It is almost an example in how to be counter-intuitive. For example in order to install a .NET service you need to add the two installer components to the service, add a custom task and then add the service (that is already part of the installation) to the four events (install, &c). Failure to do this can have interesting effects; it is possible to install a service, change the installer so that it is no longer recognised for uninstall and result in multiple reboots plus deletion of parts of the registry to uninstall a service. Why can’t you force the removal of a service using the Service manager? This could easily be locked down to admins only.

Why does .NET make configuring COM servers and services so difficult. Delphi builds registration into the appropriate code so that they can self register/unregister. This makes so much sense – you can never be left with an exe that you can’t uninstall.

XP

I am not sure how much XP is an upgrade over Windows 2000.
OK it may have a little better hardware support but I don’t see the
user interface shift (which I try hard to switch off) as being any benefit.
The product activation code is a pain in the backside – I refuse to do so for XP itself.

Adventures in XP (part 2)

XP is seeming decreasingly functional in comparison to Knoppix.
My new laptop came preloaded with Office XP.
Normally I don’t use office much but when my other half tried to use it she and I got a rude introduction to the world of Microsoft product activation.

First it asked for the product version number – this would have been fine if I had brought it with me on the trip we were on.

Now we are home and I enter the product code.
Then it asks for product activation.

OK so I plug in a network cable and expect the network connection that has worked previously to be available. I go through the designed-by-an-idiot wizard to allow me to connect to my home network (no i don’t want to use my windows XP disk to configure every other machine on the network, that is 2 windows boxes and a Ubuntu linux box – they all play together just fine thank you). The wizard completes but fails to add the network connection or tell me that it has failed to do so.

The assumption at that point is that the network cable has a problem. SO without moving the machine or the cable I put a Knoppix 3.9 cd in the drive and restart the machine. I have internet connectivity! This implies that the problem is with XP.

There is something seriously wrong with XP that prevents an out of the box setup from connecting to a network. I have tried switching off the MS firewall (don’t worry it is behind a NAT router).

Rebooting the machine with the network cable plugged in seems to resolve the problem -for now. The question remains: Is XP ready for the home network?