Tuesday, August 5, 2008

I Need a Posse of Developers

So the boss decides to go with a design that is flawed and annoyingly so, the problem is I can't validate my arguments so he's going his way, when I know - from experience its just outright bad thinking.

The situation is this: We have machines on a VPN that call home for updates of dynamic data (once every 5 minutes) I designed the system to work with uniq Machine ID numbers random numbers that are generated upon rolling out a machine.

When the machines call back home, they say hey I'm "a5f6c8278abcff" give me my data, and my design looks them up in the database find their city, state, and any other information on them, and passes back their city/state specific data. A system controlled by the central authority of the server.

The problem stems from the fact that the boxes have several names: hostname, VPN Id, and unique key. Originally the way I generated the unique id's for a box was to just md5 their hostname, and their vpn key was the same as their hostname, so in effect these are all just duplicated data.

The boss didn't like that, and I'm not one to argue so he decided that the unique key had to go - I think the only reason the unique key got nixed was simply because 32 hex chars are ugly compared to a host name.

I was more or less fine with the idea of just using the hostname as the unique identifier, originally all the boxes were named the exact same thing - I was afraid that this wasn't going to change so I used my own unique identifier for them. The boxes also submit statistics information back to the servers to maintain their temps/cpu usage/hdd usage etc. So I was woried that the host name duplication would clobber the reports, but he's going to maintain them so - its his problem..

But moving past that he has now decided that the host name should have a hyphenated hierarchical naming structure - like "state-city-stationname" - and that the hostname is to be used instead of looking up the information in the database.

In effect that moves all information control of the boxes to the boxes, it removes centralized control, and makes us rely upon a hostname of the box to be correct textual information.

In summation I've argued that the UniqueID offers more flexibility to the system, and not only that but, it just seems to me in larger systems like this - UniqueID's are more common - and who am I to argue with convention? Why can't we use the knowledge gained by those who travelled before us? We might not know all the reasons they chose that path, but we can gain from their insights without knowing all of the reasons. Not only that, but IMHO - extraction data from strings is not something I consider "clean", or well thought out.

I'm a singular voice here, so tell me what you think about his design vs. mine.

No comments: