When I was a teenager, I was enormously curious. I wanted to learn everything about everything or close to everything. I am still curious but just a notch down on that level. It is during that period that I started learning the X86 assembly language. It seemed like all I wanted to know about programming and software was hidden in that language. I was quite a fool at that time.
Why X86 assembly? Simply because most of the software I was using were at some point built fully on it. Learning that language would have opened the doors to the heavenly world of computer knowledge. It was not like that.
I did learn many interesting things about the nature of software, how it works with the machine, how to use an assembly debugger, how the registers work and many of the low level stuff. What I wanted was to have a look under the hood.
At that time, the glance I had of the assembly language was not that much useful, but looking back on my progression in software development, I can say that it helped a lot. I quickly understood the way compilers work, the optimization options and why there are so many of them. I realized that tamper-proof software is impossible once it is running on someone else computer. It gave me a better understanding of the whole picture. These days, I still like to see and understand what I am using.
For on my of my projects, we are using the script.aculo.us library to do some AJAX auto-completer fields. During my free time, I had a look at how they did it. I went to see their Javascript files to find out they were using some inheritance and many of the useful shortcuts provided by the prototype library.
One of my colleague had a weird bug recently regarding some table row he was removing in his page using DOM and Javascript. The row was removed but he was receiving an error afterwards. He could not find out where it came from. I had a quick look and it seems like he was referencing an HTML element after it was removed. Doing more search, I found out that it came from the interaction with a script.aculo.us script. The auto-completer control tries to hide the AJAX indicator 250 milliseconds after the blur event on the auto-completer text field. We did a small patch for that problem. It would probably have been longer to solve this problem if I did not have a look at the script.aculo.us files before.
Looking under the hood might be called reverse engineering in some cases. Trying to understand something that is somewhat documented or not documented at all. It is something every programmer should train for. It takes a good part of what we do on a daily basis. We look through code that someone else wrote and we try to figure out what it means and what it does.
I can only encourage you to try to find out how things you are using work and have a look under the hood. It will most likely help you later on.
Post a Comment