Wednesday, January 21, 2015

The case of the missing data

It takes a day like this one to remind me how truly and hopelessly smitten I am with science, technology and the art of problem solving.
A day like this does not refer to the much needed and long-prayed for bout of drizzling. Its as pretty as ever and definitely much needed but its just that--a drizzle and not a rain.
Not the type of rain that your sincerely prefers: the one which lashes against the windows and makes a high amplitude, high frequency noise and is accompanied by bolts of thunder that brilliantly light the sky for a second and wind that whips trees away.
So you get it: the rain is good but too light.
Back to science and technology now.
To err is very much human as we all know and thus there is nothing particularly wrong with it. The problem begins for some people when others perceive that erring (and might I emphasise, again and again) is the entire essence of their humanity. In my defence I can only say that I always make new mistakes and thus they are always interesting. If there was a 'mistake' data base for the human specie, I would have been an above average contributor.
Now that I think of it, why isn't there one? The ones for keeping track of the bugs in a program work so nicely and are so essential that it is strange why the idea has not been given much consideration before.
People have thought about a collection of human wisdom before (mainly for showing computers how intelligent and superior we, the humans , are) but wisdom is something I personally am always suspicious of. It might be a thing that very-much-learned people have either in their genes or they acquire through decades of meditations and sort of exercises and killing their (bad) inner self and what not but I don't see how one can learn anything about other people by living alone since life is, after all, mostly interactions with other people, be they voluntary, involuntary or involuntary but seeming voluntary.
Also wisdom is defined so broadly that the poor thing is murdered in the process.
Mistakes, on the other hand, are very real and tangible. There is always a cause and effect pattern (at least for those willing to see it) and they can usually be avoided if one has knowledge of this pattern beforehand.
Wisdom might also differ from place to place, depending upon the local culture and traditions (more things are affected by these than we can ever imagine) and one man's wisdom might very easily be another's folly.
A cause and effect pattern, on the other hand, if it is established, gives objective knowledge to people without the bounds of time and space.
So as I was stating the reason of my staying in technology (apart, of course,from not getting any lift from any other quarters)
in spite of my being extremely unlikely to be able to afford a house and a nice car even after twenty years, even if I save every penny that I get (assumed for the sake of simplicity in calculation) or to visit out of the proverbial well (that I currently live in) even for a while are eureka moments like the one I had today.
The one that you get when you discover a mistake you made four months ago in your design. A mistake that caused a sizeable chunk of the problems in the last four months.
The lesson that I learnt on my own, and which had been mentioned by Murphi the good soul before: If you incorporate a secret button in your system, people can always be relied upon to discover that button all by themselves, press it and mess up your life.
Of course, if you instruct them to push the button, the chances of it being pushed decrease tremendously but this one was supposed to be secret. One can also say that it was secret since the designer had no memory of incorporating it (she does have her lapses now and then, though otherwise it is a too clear one).
What happened on the surface was that I designed a system to collect some unknown data which some people were supposed to operate and collect data through and deliver to me , using which I was supposed was diagnose whatever was wrong with the poor thing.
Now I think I am good at diagnosing problems with the world in general which is basically due to reading too much history and politics combined with a pay that does not meet one's self esteem. This in itself is a lethal combination ( does anyone recall Branson the chauffer? Such are the effects of being employed by someone with a library or having enough money to buy non-fiction stuff but not a Mercedes). 
Add philosophy and you get a deadly mixture.
So in the  manner typicalof  old ladies (that I have been at heart since birth) I am quite good actually at finding faults with life, the universe and everything. Not Douglas Adam though; him I like a lot.
But digital systems , as I have lamented before, are quite another matter and I'll reiterate that debugging one is like finding a needle in a haystack.
Anyways so there would often be a very precise chunk of data missing whenever I would examine the data dumped on my desk by other people.
To my credit I was quick to notice and highlight it but since it was my system, no one else could point the fault out.
So I in my usual fashioned blamed the current drawing capabilities of the faulty system, its power-on behaviour, some mysterious IC and scary spirits in the air.
The latter have been extremely useful for scaring younger siblings and absolving myself of all blame whenever an IC's suspicious behaviour is concerned. My too-trusting supervisor was ready to abandon the sampling system but I saved the day by 
1.Being pragmatic and 
2.Discovering the reset button that I had incorporated in the system 4 months ago and then forgotten ALL about and which NO ONE was supposed to press but which people managed to press more times than not.
What actually saved the day at the end was pragmatism. It told me that there was a problem, that the problem had been created by me and that I had the ability to solve the problem. 
Pragmatism should be taught in engineering instead of crap like integrated circuits which one can always look up online.
Now that I think of it, these three crucial steps are generally missing when people encounter what are called the real life problems. They usually pretend that the problem is invisible, inevitable and insolvable. It goes without saying that all three things are, most of the time, completely rubbish.  
Rubbisher still is conventional wisdom which gets in the way of pragmatic people and stops them from calling a spade a spade or rubbish, rubbish in this case.
My fear of failure has been discussed at this place before and there were things about which I was hoping to make a mistake..there was an ethernet link that was made to work at a high speed and then there was something called clock domain crossing involved which most people only pretend to understand and about which I have sought people's opinion multiple times just to discard it (the opinion, that is) and which has a nice theory and long explanations and which I still use to blame the noise on in another system that I designed.  
So the clock domain crossing was dealt with nicely( you just insert a FIFO if you can live with it) even when two of my supervisors said it wasn't and I said it was. But the reset button wasn't and that is so characteristic of me. I so dream of a day when I'll be able to work without the fear of making mistakes in true robot fashion.
Also I am not a fan of global reset in FPGA designs so naturally it wasn't a true global reset..it only reset some parts of the system while others it left alone which made the behaviour even more complicated.
Which led to a chunk of missing data in some files for a very precise time.
Although the problem due to which we had to collect the data in the first place has not been solved by a single bit but that is, again, so characteristic of me.
In the future I think I should just tell people that I am good at solving problems, omitting the 'the-ones-that-I-created-in-the-first-place' part.
But that, folks, is in itself no mean achievement.