Saturday, January 20, 2007

Frustrations and Limitations

FrustrationAs I've mentioned before, I do love a puzzle. The only times when that turns out not to be the case is when the puzzle just doesn't seem to have a solution. I've run into one of those problems today.

One of my classmates in Leadership Ann Arbor, Jim Anderson of A.J. Boggs & Company, called me in to help them out with some small enhancements and minor fixes on one of their legacy systems. The system was written in Perl, a language with which I have some passing familiarity. One of the "minor fixes" has now vexed me for far longer than it should and has gone beyond the range of a puzzle and is rapidly approaching "true annoyance" proportions.

Skipping over the gory details, the system allows users to get a 7-day subscription to one of the client's services. The user enters his or her vital stats and the system, behind the scenes, adds them to two files. The first is the subscriber database, the other is a password file.

Or at least it is supposed to.

Every once in a while, it just doesn't add them to the password file (which makes it really tricky to login and use the system). I have used every diagnostic that I can think of, examined log files, run simulations, etc, but I cannot seem to make this thing give up its secrets. It's maddening! Oh, I've set up some features so that the admins can fix the problem when it shows up again, but, really, to do the job right, it shouldn't be happening in the first place.

And, of course, sometimes you just have to face the facts of diminishing marginal returns. If the problem doesn't occur often enough for the client to justify paying for my time, then sometimes a work-around is good enough.

But for a puzzle-solver it can be really annoying!

So, in your line of work, do you ever have to be satisfied with just "good enough"?


Anonymous said...

Perhaps a concurrency problem, where if two people try to get added at once, one of them loses.

Greg Peters said...

Yes, I had considered this. Unfortunately, I couldn't find any evidence of this in the logs, nor could I force this in my testing.