OnSwipe redirect code

Sunday, December 30, 2007

Nostalgia and the movie next day

Date: 29th December 2007

Since few days, because of some unknown reason, I constantly wished to be back in my 3rd year of engineering with all my friends at hostel, specifically the L4x series of rooms along with the 3 CSI seniors. That was probably the best part of my engineering life. The amount of learning and amount of fun was highest during this time. I guess, if given again, I would enjoy that part of my life at any moment and any number of times. Now as part of the co-incidence series of posts, this one will also present another instance of co-incidence.

Yesterday when I was going to office, I saw a boy with a bag running to catch a bus. He reminded me of Harish Bhai and an incident when me and him had raced casually after lunch. I once again wished to be in one of those CSI meetings under the chairmanship of the Harish Bhai. After this when I reach office and logon to Gmail, I see Harish Bhai online after so many days and I talked to him for a few minutes.

Today being weekend I got up late, only to find two Kannada movie CDs on the table in front of my bed. My Doddamma (Aunt) got it from a neighbor here. As I was absolutely jobless (in one sense) I decided to watch one of the movies as it was a long time since I watched any of the new-age Kannada movies. Of the two I picked up one and seeing that Sudeep (A well known Kannada actor with a commanding voice) is the protagonist I started watching it. The movie was really good and I enjoyed it like anything. Now the co-incidence part is that the movie was about the protagonist recollecting the past – his school days, college days and initial days of his work, at a time when he was deciding on the list of people whom he wanted to invite for his wedding. He wanted to see all these three spheres of his life together once again for one last time. Every scene was beautifully portrayed (of course except for the songs) and each instance in those scenes reminded me of some instance that had happened in my life. I too have three sets of friends, in fact four including the colleagues at office. I could correlate several parts of my life with quite a few scenes of the movie. The only outstanding difference was that the protagonist has “FOUR” girls in his life where as there are typically none in mine. But nevertheless I have much bigger group of friends and above all a lot of them are still in contact with me and we talk frequently enough.

I suggest any person who has lived a hostel life to watch this movie. By the way, the movie is “My Autograph”. A really good movie (would have been much better without songs). I wish science was advanced enough for me to afford a minimal time machine, without any accessories, at least.

Sunday, December 16, 2007

Need of Exposure To Open Source Community

Ever since I have been associated with Mozilla community I have been interacting with a lot of people involved in the development of the Mozilla products, mainly Firefox web browser. I have learnt so many things from the community and have interacted with several extremely modest people who despite being extremely knowledgable and busy too, often helped me with my stupid questions. And in several occasions I see people younger than me who are so bright and have contributed much more than what I have done. All these situations just keep reminding me that no matter how much of Computer Science I know, how much of coding and design I have done there is still so much to learn and there are a lot of people who are simply better than me. The second part especially motivates me and always keeps ringing in my head in case I start thinking big of myself. Not that I am boasting about myself, but it’s true that I was a pretty good programmer back in the college. I was one guy who did a few things others did not do or others did not consider doing, though there were several who were way ahead of me in knowledge and intelligence and had much more capacity than me. Basically I am trying to say that I was somewhat good amongst the guys in the college. And this had given me a feeling of satisfaction (to some extent) that I have indeed learnt something and achieved something. I knew that a lot of real good punters lurked around in the open source community through my frequent visits to IRC. That to some extent kept me glued to earth and prevented me from being complacent. But I always carried around a thought that I am some good.

That was clearly a crappy thought. And it became more and more clear when I was formally involved with an open source community and interacted with the folks there more and more. I, like any beginner in the community (Mozilla community), had several things to learn during the initial stages and always had a lot of questions. Probably in my case it was a little more than any other beginner. Luckily I had several people in the community helping me out and always ready to answer my questions. Whenever I came across a new nickname in any channel I am observing I would just try and find out more about the person. That way I got to know about different people pretty well. I came across people who have been there right from the time Mozilla originated or even before when it was still NetScape. But none of them carried any air of pride and were very modest all the time. The credentials of the person answering my question used to be so high that I often feared asking anything thinking that I would just get some scolding for putting in a silly question. But such a thing never happened. Be it a regular developer or QA guy, employed or a volunteer, young or old, they all helped me. It’s not just the modesty, but their technical knowledge also is worth speaking. They were so precise, they considered situations that never occurred to me, they thought of performance, usability and several such things simultaneously and every word of theirs carried weight, every bit of it was informative. Sometimes things went way above my head and I had to ask them to explain the same things again and again and in simpler words. They did that almost every time. If I was not ready to understand what they were talking about someone would point me to a nice document which would clearly explain me the basics, after reading which I could understand the discussion easily.

All these things always told me one thing: World is really big and it has some really big people, so be modest and be ever receptive. This means that there are a lot of heights yet to be scaled by anyone and hence one should never stop learning because there is always something new to learn. It is in this OPEN SOURCE COMMUNITY that I realized what computer science and programming is. It is because of the PEOPLE IN THIS COMMUNITY I realized that there is so much to learn. If not for this community I would probably have been a complacent guy who would have shut his doors for new knowledge and considered himself a "GOOD PROGRAMMER". Thank you OSS.

That is why I would say that exposure to the open source community and affiliation with one of those is mandatory for any computer science student who aims at being a successful and worthy programmer. It is here people will get a look of the ocean named programming and the several software applications that are churned out continuously. I hope this becomes the order of the day very soon and every computer science student will learn programming real world applications right when he/she is in college. This would also lead several success stories coming from our Indian academic institutions and we will be leaders, intellectually, once again.

Jai Shree Yalaguresh Prasanna.
Hari Om.

Thursday, December 13, 2007

References issue with __fastcall calling conventions

I talked about calling conventions in an earlier post. There I mentioned that if the function is qualified with the __fastcall calling convention the system will try to push the parameters to the registers instead of the stack and there by tries to increase the speed of the function call. But this would just be an attempt. We are not assured that our parameters will always go to the registers. This is because of the availability of the registers.

Apart from this there is another issue associated with __fastcall. Since the parameters are put in the registers, those variables will not have any address location. So if we try to fetch/use the address of the parameters the system will be in a fix as it will not have any address to return. In such a case the params in the registers are copied to some temporary memory location and the address of that location is returned. This temporary location can be anything. It can be the regular stack itself.

Calling Conventions --- __cdecl V/s __stdcall

In an earlier post I mentioned that the __stdcall calling convention reduces the code size by putting the stack clear statement just before the return statement. If this is better than __cdecl then why do we need this "__cdecl" calling convention at all??

As we know, in "__cdecl" the caller will clear the stack. This would be the ideal behavior if the callee does not know how much of stack to clear. This is absolutely the situation in case of functions with variable number of arguments. The callee will not known how many arguments it is going to receive when compiling the code and hence will not be able to put a proper stack move statement. On the other hand this info will be available with the calling function and an appropriate stack move statement can be put right after the function call instruction. This is where the "__cdecl" convention comes to rescue.

Functions with variable arguments will be qualified with "__cdecl" calling convention.

Tuesday, December 11, 2007

Calling Conventions

This is the outcome of today's presentation by Anand - our tech lead.
There are four calling conventions, and the Microsoft terminologies for them are:
  1. __stdcall
  2. __cdecl
  3. __thiscall
  4. __fastcall
As its known, the calling conventions will tell who, amongst the caller and callee, will clear the parameters from the top of the stack when the function call completes.

__cdecl is the old 'C' way where the stack is cleared by the calling function. Clearing the stack is nothing but having a statement to move the stack pointer up by some number (which is generally the number of arguments). So when a call is placed, immediately after instruction to call, there will be an instruction to move the stack pointer. This way we have an extra instruction associated with every function call instruction. This leads to the increased size of the executable, because of one extra instruction for every function call.

__stdcall is the new way where every function is responsible for clearing the stack allocations made for its parameters. As in, the callee is the one who will rewind the stack and move the stack pointer. In this approach before the return statement of the function a statement to move the stack pointer is introduced. This way the number of instructions will not increase with the number of the function calls.

__thiscall is the object-oriented way of calling functions. Here the first parameter passed is always the "this" pointer. So any instance function member of a class will follow this calling convention. Unlike other parameters, which go to the stack top, the "this" parameter which is also passed is stored in "ECX" register. Now this is how the "this" pointer is implicitly available to all the instance member functions. No function can be explicitly qualified with this calling convention. Any instance member function will get this implicitly, but it can be over-ridden with any other calling convention.

__fastcall is an approach where in the system will try to push the parameters on to Registers instead of the stack just to get a performance boost. But as with the variable qualifier "register" , if the registers are not available then again stack is used for the parameters.

There are a couple of other posts regarding the specifics of the calling conventions and comparison. If this post made any sense then check out those also.

Monday, December 10, 2007

FOSS.IN/2007 – The most exquisite FOSS event

In an earlier post I mentioned how much Mozillians have influenced me and that will surely give an idea as to how much eager I would be to meet any of those people. Well it finally happened this year during the FOSS.IN/2007 as IISc in Bangalore. I was looking forward for this event even before Mozilla was a part of this. I had missed it in the last couple of years and this year I was very keen on attending it as I was in Bangalore itself and the venue was so close to my residence. I sometimes even thought of bunking office for all the five days and have some real good time with all the open source freaks from different parts of the world. As crazy the idea seems to be I was able to attend the event only for one full day and a part of another. That apart, my interest in the event doubled or increased by several times when I found out that Mozilla was one of the projects for Project Days and few of the folks that I had talked to over IRC were coming down to speak at this event. I was very much excited and followed the event very closely. I completed my online registration the day it was announced, I subscribed to the RSS feed of the FOSS.IN/2007 main page, looked at the schedule when it was posted, read about speakers and what they will be speaking when that was put up. Basically I made sure I did not miss out on any detail. Another thing that caught my attention was the Google summer of code BoF (Birds of Feather) that was proposed and also accepted. This was another chance to meet fellow countrymen involved in the development of FOSS. Altogether this was something really big and was close to one of my all time dream of being amidst full time geeks and computer science pundits.

I was getting ready for the event and unfortunately cold and soar throat struck me a couple of days before the event. Nevertheless I asked for a sick leave on the first day of the event and thanks to my manager who granted it immediately. I quickly got ready by noon after some extra resting in the morning and took my uncle’s laptop and moved to IISc to meet the OSS freaks from different parts of the country and the world.

As I was late I missed out on talks related to extension development and a couple of other dev stuff in the Mozilla project days schedule. When I went there it was close to lunch time and almost everyone was moving to the dining area. As I was not completely healthy I had restrain myself from enjoying the FOSS delicacies. I just roamed around the event area looking at the various corporate stalls that were put up there. A couple of days before the event I had met a friend’s brother, who was going to launch a product of his company in this event. I went and met him and looked at the various products that were out there for exhibit. This got over pretty quickly and I had to find something for me to spend time.

Fortunately the event area was Wi-Fi enabled. I utilized the lunch break to update my Mozilla repository on my uncle’s laptop and also to submit a patch which was waiting in my inbox. The wireless connectivity was really good and the speed was well worth mentioning. By the time my repo was up-to-date the afternoon session had started. Then I moved to Satish Dhawan auditorium where the Mozilla talks were being held and spent the rest of the day with the Mozillians. More about the time spent with Mozilla folks in a later post. But I must really thank Team FOSS.IN which made it possible for me to meet the Mozilla people and have some good time with them.

On the whole the FOSS.IN/2007 experience was awesome and memorable. It was very well organized and at the end of the day I saw Atul Chitnis (One of the main men behind the success of the event) hanging around with the volunteers. The sleeveless jackets that the volunteers were given always made me feel that I too should have been a volunteer. ;-)

Jai Shree Yalaguresh Prasanna

Hari Om.

Wednesday, December 5, 2007

My First Hangout with Mozillians

As I am involved in the development of the Mozilla Firefox web browser I have always thought of meeting the actual full time Mozilla developers and spending some time with them. As most of them are in US, in a normal scenario this would have happened sometime when I was in US. But luckily for me this happened in India, right here in Bangalore where I stay. It was today, the 4th of December 2007, during the FOSS.IN/2007 event at IISc.

On account of being sick during the event I was not able to attend all the talks. I missed out on all the morning talks as it was already lunch time when I went there. So I started with the afternoon session where Axel talked about localization, Chris Hoffman talked about Testing and Krishnakanth talked about accessibility. Though these were not the talks that I was looking forward to listen to, I just spent my time in the auditorium waiting for an opportunity to speak to Myk, who was the only developer guy amongst those who had come. All the talks got over at around 6:00pm and it was announced that interested people can talk to the Mozillians. Though Myk was already caught by a couple of Akamai guys, I went to him and introduced myself with the “Resumable Downloads” tag. Though he did not remember me he remembered the feature and that made it easy for me to talk to him. Moreover I was wearing my GSoC shirt, which luckily my father had got it from home just a day before. That carried some recognition too.

Then me, Myk, the Akamai guys and another person interested in XUL and Thunderbird talked at length about various things involved in Mozilla development. The Akamai guys asked me if I am interested in joining them when they realized that I knew Mozilla stuff, after they heard me speaking about debugging release builds of Firefox using remote symbol server. Then we exchanged contact info and they asked me to send them some info on that debugging thing. There were a couple more incidents like this where in I met different people from different companies, small and big, who were doing some work related to Mozilla.

Then we carried the banners and posters to the store room and that was when I got introduced to the other 3 Mozillians present there: Mary, Chris and Axel and also to other Indian developers, a couple of NIT-Jaipur students and a RV college lecturer. After we deposited the banners and stuff in the store room, I asked Mary about their plans for the rest of the day and she said, “We are going out for dinner to some place nice and you are coming with us.” I was like “Me???!!!” She said, “Yes you. Lets go, the cars are here.” I was so surprised and did not know what to say. Luckily the RV college lecturer and the NITJ students were also coming and that made things a little more comfortable. I and the lecturer agreed to go on his bike and the rest of them came in cars. We went to an Italian restaurant named “Sunnys”.

We spent nearly 3 hours there eating and talking. A few of them had some nice Italian wine and other drinks. I sat next to Myk, with Axel and Mary in front of me. We again talked about the various things happening at Mozilla. The OS conflicts, views of different people and who is working on what. It was during this discussion that Myk told me about Timeless’ secret project at Nokia, where he was involved in development of a Mozilla based browser for Nokia N810 tablet. I also got to know about several other such things. Mary told us about her driver running over a dog and several other things that they find so very surprising about India. For instance, traffic was one of them. They even took pictures and video recordings of the traffic to show it to people back in US.

Overall it was a nice time and I learnt that the employed folks are also as fun loving and easy going as us. I got to know a lot about the internals of the Mozilla and some of the current affairs. It was basically a start for me to get more known in the community so that people would identify me with my contributions when I talk in IRC. I guess this motto was achieved to some extent. At least of the 4 I am sure Myk remembers me. After that me and the NITJ students went home and it was the end of a memorable day. Hope I get more of such days.

Jai Shree Yalaguresh Prasanna

Hari Om.

Thursday, November 29, 2007

Intellisense in VS2005 stops working

Its a very well known issue with VS2005. Intellisense is not all intelligent, though it is programmed to be like that. It is indeed helpful and helps us avoid a lot of dog work and remember the big long names and types and parameters a function takes and all that regular crap. But the bad thing is that, the intellisense works fine for the first few days until we get addicted to it and one fine day when you are close to your deadline it suddenly stops working crippling you like anything and your work almost comes to a halt.

Thank god for editors like Vim and build systems which use "Make" and other command line tools. These keep our mind fit enough to do some exercise in case of emergency. Nevertheless we still want that intellisense thing to work, because we have this "IDE" here and it must be better than any editor. So here is how you get it working again:

  • Close the solution.
  • Go to the directory of the solution and delete the .ncb file.
  • Re-open the solution and build it once. The .ncb file must be regenerated now. This must wake up intellisense again and get it working.
  • If not then delete the obj directory of the project also and then build it again.
If none of these work then there is some serious problem that you should not try solving and stop reading this blog and read something useful.

Sunday, November 25, 2007

VS2005 has a feature (supposedly) called "Copy Local"

VS2005 and .NET users are pretty familiar with the way the IDE makes the job so easy and keeps us away from all the build related things like references, linking and all that stuff. But in many cases this might actually be far from desired behavior. One such that recently took away some of my time was the "Copy Local" attribute on the references. This is a boolean property on the references added to a project. If this is set to true, then when the project is built the assemblies added as references as copied to the 'bin" folder of that project. Depending on the build, its either the "Debug" or the "Release" folder. With this, in future whenever the project is built, the DLLs in the bin directory are used, unless you change your references. This will cause a problem when one of the referred assembly is updated and you expect the new behavior, but get the old one instead.

Example, You would have added an assembly, E:\assemblies\MyAssembly.dll as a reference. Now when you want to update the assembly you typically replace the old MyAssembly.dll with the new DLL in the above mentioned location. And then you expect your project to reflect the new assembly, but it does not do that because "Copy Local" being true would have lead to the old DLL being copied to the bin folder of the project and though you updated the DLL in its original location, the reference was pointing to the DLL copied to the bin directory.

So watch out for this Feature. From what I know, this feature can be serialized in the assembly itself. Though this might be a good feature for applications which will use the same DLLs for a long time, this is clearly a bad choice for people who are writing small test applications to test their DLLs. Because with every new build the DLL version changes and yet the references point to the old one.

Friday, November 23, 2007

.NET GAC --- CompileTime v/s Runtime synchronization

GAC - Global Assembly Cache is just a run-time thing.

People familiar with .NET will surely know about GAC. Its just a one stop for any application running on the .NET framework to look for the assemblies (DLLs). When ever we run any .NET application, the framework will look for the referenced assemblies in the GAC. Note that even the version number of the DLL must match. If the application was compiled with an assembly 'A' of version 1.0 and you currently have anything, but 1.0, the application will not run. It needs exactly what it was compiled with. And the best part is that multiple versions can co-exist in the GAC

But this GAC look up happens only at the run-time. In Visual Studio, we will add the required assemblies for a project under the project references. These references will be pointing to the locations where the assemblies are present on the file-system and may be remote locations in case of web references. When we build the project the compiler will look at these locations and not in the GAC. Now if you are referencing an older assembly but we have a newer version in the GAC, then the project will compile but not run. Because at run-time the framework will look for the older assembly but does not find it in the GAC. So be sure of updating your references when your assembly of a particular version in the GAC is updated or replaced by an assembly of a different version.

This problem becomes still more evident and a little tricky when we are using an assembly(say assembly 'A') which again depends on another assembly (say assembly 'B'). And in such a case the problem can become evident even before compilation itself(If the assembly 'B' is related to designer of the Visual Studio). Say assembly A-1.0 was built using assembly B-1.0. Now when we use assembly 'A' by adding it as a reference to our project we are using assembly 'A-1.0' that was built using assembly 'B-1.0'. 'B' does not come into picture during compilation at all. When we build our project and run it, the framework looks for 'A-1.0' and finds out that it needs 'B-1.0' and finds both in GAC and runs the application. Here as 'B' does not come into picture during compilation, it is sufficient if we have it GAC, where as 'A-1.0' has to be at some location on the file system (either local or remote).

Now if 'B' in the GAC is updated, i.e 'B-1.0' is replaced by something like 'B-1.1', and you try to run the previously built application, it fails. Though the assembly referred by you , 'A-1.0' has not changed, the assembly 'B' which is necessary for 'A' has changed. So at runtime the .NET framework will search GAC and the current-folder for 'B-1.0' and as it would not be found, the application fails.

There are a couple of other posts about GAC and references in VS2005. Look out for those.

Sunday, November 18, 2007

One deadly enemy today’s youth is facing

This is another thing that swamiji told us during the gyaan transfer. The earlier one was about us all being so lucky. This post is about one of the several reasons why today’s youth is going haywire. As you would hear from any other staunch Hindu or a strong supporter of ancient ways of life, the first reason mentioned by swamiji was “Westernization”. But this term here was not against “Globalization” or international exchange. Swamiji also believes that there are a lot of things that we have to learn from the west and yet a lot more that we should not. But here are a few things that he said about modernization and how it has affected us.

Recent technological advances have almost removed the barrier of distance for communication. This has lead to increased and more frequent talk to our kith and ken. But this is what swamiji said “This technology has increased “Samparka” (communication) but has drastically reduced “Sambandha” (relation)”. This is very much true. With increase in communication the feeling or urge in us to visit our parents or relatives has come down. But this again is a choice. There is nothing like free meal, everything comes at a cost.

Coming to the enemy that we are facing, a surprisingly simple fact which is neglected is that in most cases the starting salaries of the current youth are very close to the retirement salaries of their parents. Though we can argue that the value of a rupee was much more than what it is now. The world has been through inflation and all that. But despite any inflation, a rise to the extent of retirement salary becoming starting salary is a steep one. This is not just alone. There are strings attached to it. The earning age is lesser than what it used to be and the responsibilities are lesser. All these result in superfluous money staying in the hands of not-so-mature and the so called adventurous youth. This combination of lack of knowledge and excess money is the deadly enemy that today’s youth is facing.

After listening to this I have realized that I should keep a check on my expenses, by which half of the enemy is under control and do lend my ears to elders to deal with the other half. Hope I am successful and so are the others in the same league as me.

Hari Om.

So many of us are so Lucky; but not all are so.

Sometime in November I had been to been on a bike trip to Mysore with Pavan.A.C and a couple of his friends. Though I really liked to go on a bike trip to Mysore, this one is something that I will not look forward to have again. The lack of preparation made me really tired and not to mention the dust, the hot wind and the charred faces at the end of the trip. But this blog post is not at all about the trip or the adventure. This is about a discussion that we had with Swami Maheshatmanandaji during our late night debates. Well actually this was more of gyaan transfer than a debate.

This is one of the several things that he told us. When we were discussing about the facilities provided to us as V’Shala in comparison with students outside we simply agreed that we are a lot lucky than several hundreds and thousands of children studying in other schools. At that time swamiji said that we are way too well off and blessed than what we actually think or just said. It’s not just the extra facilities or amenities available to us that make us the fortunate ones. The very fact we could live a “Student Life” during our childhood is something that a lot of unprivileged and unfortunate children do not get. This was something known to me and did not appear like some hard truth, but the gravity of the words was way stronger than I could imagine. To justify this he cited an example.

During the last vacations when he had been to bus-stand to see off some students going home, he saw a child in his early teens drunk and swaggering on the road. Well this is the treachery of the nature, I thought. Not all the fingers are same. But the treachery actually runs deeper than this. Swamiji continued and told us that it’s not the boy’s fault at all. The boy, by birth, has every right to be a student, to play like any other child of his age would do, to learn, to experience the joy of learning, to dream of great and big things and make every possible attempt to achieve them. He is deceived of all these. Instead he probably became an unskilled labor doing all sorts of small and petty jobs to earn his meal. Fortunately or unfortunately he got a little extra money which he used to purchase illicit liquor and now he is on the roads, unchecked, unadvised and without and help.

I protested to this saying that it’s the law of the nature and about he being unadvised, I said that he surely would have been told by someone about leading a healthy and successful life. Swamiji sapped back at me suddenly in strong disagreement. Here are his answers for my protests:

It’s not the responsibility of the nature. Is it nature that has taken care of us till now? Well it stuck me that parents/guardians are the ones who come into play here. They are the ones who nourish us, take care of us and make sure that we reach good heights and make us capable of leading a respectable life. This is probably what is missing in that boy’s life. Either he is not privileged enough to have a life with his parents or he is not fortunate enough to have parents who can give him a life. And about the advice, only words will not suffice and all that he would have got would be just that. As Swami Vivekananda said “Don’t advise hungry stomachs, they can’t be receptive”, this boy should be first shown some light and then advised to reach that light.

Then I realized what he earlier meant by we being way too privileged than what we talk or think. The only solution is to set a balance in nature and that would be possible only on a one-on-one basis with the privileged youth standing up and deciding to take care of one underprivileged. More about that in another blog post. As of now just realize that if you are reading this you are one of the most privileged in the mankind.

Hari Om.

Tuesday, November 13, 2007

WaterWays - An amazing way of transfer

Water ways - The most cost effective transport system:

This is the outcome ofyet another discussion with Doddappa(Uncle). We were actually about varied careers and how one can be successful and not be yet another engineer or a doctor. Though we came up with a lot of options like being a scientist after doing a masters in pure science or may be be take up journalism and many more, but the one that stood out as an extremely lucrative one was Merchant Navy. Then my sister asked the typical youngster question: "What do these people at Merchat Navy do??!!". That was what my uncle was precisely waiting for, an opportunity, and he started the gyaan transfer.

Though most of what he said was known to me, there was one thing which struck me like anything. He said that a large part of mass-goods transfer i.e actual large scale business hapened through water-ways because it was the cheapest mode. Though I knew this bit of fact the reason for this interested me more than anything. It is very simple. For roadways we ave to "maintain roads", for railways we have to "maintain rails", for airways though we do not have to "maintain air" its really a costly affair to maintain airports, the air traffic control and hence makes air-transport an ultimately costly choice for transfer of all regular mass usage goods. But with waterways there is no such thing at all. Ships move on waters and seas and oceans take care of that. Traffic control is a lot easier than airways. From what I know fuel is also much cheaper compared to the extremely high quality air-fuel. (So much of comparision with airways is because the others cannot be used for transport across the globe)

So all that we need to worry about is ports/harbours. i have heard about natural harbours and hence I guess even those costs are partly taken care by Mother nature already. This and so many other things make water ways the obvious choice for shipping large amounts of goods. may be other modes of transport will make transportation charges itself more than the actual cost of the goods being transported.

Now there might be some environmental considerations that need to be taken care of. Because recently when some American or French ship was coming to Gujarat port for scrapping there was a lot of opposition as it was hazardous and leading to pollution big time. But still cost stands a big deal. I hope our good scientist fellows will soon find a less hazardous and pollution-free shipping ways. :-)

So businessman and would be businessman, watch out for your shipyard. And also learn how to swim, just in case, you know. ;-)
Hail Water-ways, Hail mother Nature... (Thank god I can swim :P )

Friday, November 2, 2007

Registering and UnRegistering a DLL - Two ways

There are 2 ways to register a DLL.
Any DLL registration happens through the windows tool Regsvr32.exe present in C:\Windows\System32\
  • The HARD-way: Using the above tool directly from command line. This is the obvious geekish way. This actually turns out to be simple after some practice. The command would be as per the following specification:
Regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname
/s - Silent; display no message boxes
/u - Unregister server
/i - Call DllInstall passing it an optional [cmdline];
when used with /u calls dll uninstall
/n - do not call DllRegisterServer; this option must
be used with /i

  • The EASY-way: Right-click on the DLL you want to register and open it with the above tool. Again the tool resides in C:\Windows\System32\. Thats it. The DLL if proper would be registered and error messages if any would be shown in an alert box.
I do not yet know of a easy way for unregistering a DLL. So for that command line is the way.

Thursday, October 25, 2007

First check-in of my code into Mozilla codebase

This was a long awaited post, not by the readers waiting to read this but by me, the author, waiting to write this. This is by far the most important blog post written by me, not for its content but for the moment it describes.
In a previous post titled "My GSoC 2007 Story" I wrote about how excited I was about this association with Mozilla and about the opportunity to fulfill my long lasting dream of contributing to open source and having credit for some notable software development. But that just the beginning of the fulfillment of the big dream. The way was just shown to me and I was given the map just having the end points of the journey. It was up to me to figure out the way and reach the destination after crossing all the hurdles. I am now proud that I could stand the journey and complete it. This post is the proof and the reward together.

The journey was of course not smooth as described in my "First Mozilla journey" post. But it was worth it. Now about the day I achieved it. It was 5th Sep 2007, yes Teacher's day here in India. (I guess I should really be thanking my teachers for their teachings as well as blessings). That was when Shawn(sdwilsh) checked in my patch, of course with certain changes to it from him. Here is the check-in comment.

The end was more tiring and hectic than I initially assumed. My feature was initially targeted for M7, but then due to delay from my side it was re-targeted to M8. Since this was considerably big thing and involved quite a bit of risk the drivers decided that this feature would be in only if it can come in by M8. Things were going pretty well with me working till 10 or 10:30 at the office due to lack of internet connection at home. I used to get a new patch every alternate day or at least hit a dead-end and wait for help from biesi/dmose/sdwilsh or some other person. I ended up adding more stuff to nsDownloadManager class than I thought I would be doing. Every week more than 2 or 3 times I used to discard some done stuff and redo it in different way. This was mainly because of my lack of XPCOM knowledge. Though I was very determined to get it in FF3 it was getting heavier and heavier for me. Thank God, I finally submitted a patch which addressed all the issues mentioned in the comments earlier.

It was all working and just a few hours (that was 10:30pm here and I had to go home - by bus) before the tree was to close for M8 I figured out that nsIFile.GetSize() was not returning the proper value because of which downlaods were getting corrupted and were of sizes more than the source files. The solution turned out that I had to clone the file to avoid the cached values. This required some effort and I postponed it to next day morning hoping to get it done before the tree closed. Though dmose told me to do it right away so that a review can be done that day itself and the patch would go in. But it was too late for me and I just left the office against all my wishes to stay overnight and work with those guys struggling in US. All the way to home I was cursing myself as I was not confident of getting it done in couple of hours and hence I might lead to this feature being dropped from FF3. That would have been like a big blow to me as I had widely publicized this among many of my friends.

The scene on the other end was also pretty similar. sdwilsh and Mardak spent almost the whole debugging my patch and figuring out what was happening. dmose had mentioned earlier itself that the management wanted this feature though it was not in the FF3 PRD. Lots of people had already blogged about this feature in FF3 and hence it was very critical. They finally figured out that the "http referrer" was also needed for resume to work properly and they added that also to the DB and sdwilsh came up with a new patch and probably got it reviewed by Mano.

When I came back in the morning the new patch was ready and the whole of mozilla team worldwide was active as lots of check-ins were to be done before midnight. sdwilsh finally got mconnor to review the patch. Since it was patch which was r+ by sdwilsh, mconnor could not find any flaw except for a comment about the file cloning to be made more clear. It was finally made and sdwilsh told me that he would be checking in that patch. I was very much excited and I had every right to be. After 3 months of work, several night outs discussing stuff with my US counterparts and much other effort had gone into bringing out the code in that patch. And finally when sdwilsh put the cvs check-in output on the bug I was so relieved. I knew that it would take an hour atleast for the new code to be picked up by mxr. After an hour I visited mxr to see my name in the contributors list. I copied the link to the line with my name in the nsDownloadManager.cpp and put it as my status message in GMail chat and Gtalk.

It was a great learning experience for me and a much greater sense of achievement.
Thanks again, Google and Mozilla.

I now continue to be a part of this awesome community and contribute whenever I can. After this success I took up the job of providing resume support for "Open With" kind of downloads. More about that in another post.

Shree Yalaguresh Prasanna.
Hari Om.

Wednesday, October 17, 2007

Theory X and Theory Y

This is yet another discussion that I had with my Doddappa(uncle). The title seems to be a very interesting and something exciting. Even I felt the same when my uncle first mentioned it. But it eventually turned out that it was a very much common and known thing. Then why the hell am I writing about this here?? Well the answer is, I did not know that such a common thing could be documented so well and that it would be on of the most important management theories.

There is a nice Wikipedia article about this: http://en.wikipedia.org/wiki/Theory_X_and_theory_Y and hence I will not be writing anything about this here.

In short Theory X is the pessimistic view and Y is the optimistic view about the people you are managing. But in reality people at any place are really a mix of this and are generally somewhere in between these two extremes. So the manager needs to shrewed enough to identify and categorize people and manage them accordingly. Because X-type of management will piss-off the Y-type of people and may result in resource loss. The reason is that self motivated and creative people want freedom and do not like to be persistently nagged. On the other hand Y-type of management for X-type of people will result in zero or close to zero output and the manager's neck is on the blade. The reason simply being that lazy people who are at work just for money and exploit all facilities will just do that and refrain from working. So managers and people aspiring to be managers, though this is a very common and old and also a sort of outdated philosophy my guess is that it still is an important one.

Tuesday, October 16, 2007

Basic Planning Gyaan

I recently completed my graduation in Computer Science and Engineering and started my career at National Instruments R&D as a Software Engineer. There are a lot of things that I learnt here in first few days. Of course I cannot put all of that here. But I can indeed put some most generic things, things mostly known to all or at least a lot of people. This post has something like that. The freshers here (one of whom was me) had a meeting with our manager for a particular thing. We discussed a lot of things out which I found few interesting and have put them here. These are mainly management related stuff like how a professional should lead his/her professional life. Pretty simple but very important things. These things are very essential for any organization to be successful.

Don't push things , rather take things on. Take Responsibilities .
-- This is the good old thing which told us not to put the blame on someone else when we do not succeed. Its just put in a different way. Whenever we have task facing us we should always go for it rather than shun it away waiting for someone else to take it. We should realize that the more we work the more we grow. Its always a +ve things to take up responsibility than to drop them or avoid them.

Always Under Commit , Over Deliver .
The previous point tells us to take up work. But what it does not speak about is that whatever is taken up must be completed in time. When accepting a job, when committing for something we should make sure we got enough room for this new thing and it is not going to affect our previous schedules and commitments. And also when finalizing deadline we should think of unforeseen situations and obstacles and plan accordingly. Have some buffer time reserved. Hence we should always under commit and try and work hard to over deliver. This point might seem contradicting to the previous one but both are to be balanced well to go up the ladder.

Don't randomly oscillate on days . Divide your day properly.
-- This is the discipline part. Every day has to be productive. At the end of each day when you ask yourself about that day's outcome you must have a valid answer. And this can happen only when we properly plan the day. Planning plays a crucial role even in a day's work. So instead of spending the day trying to do a lot things, we better plan the day. Tools like post-it reminers, or an online dairy or a calendar or some other form of To-Do list will come a long way in making the day fruitful. So the first thing you got to do when you move in daily is to list down the tasks you plan to do that day. Something like 5 to 10 minutes should be sufficient for this. Be sure to note these things so as to verify later. Start work as per plan. Note down any new thing that you come across in the middle of the day. Then close to the end of the day, say around an hour before you leave verify whether you accomplished all the listed tasks. If some critical things were left out then complete them before you leave. Or may be you can postpone the less important ones to a further date.
What is more important to a plan to work is that it should be followed. So once you have a plan for the day follow it. And follow it as closely as possible. Do not oscillate between multiple things at a time. For example - if you are focussing on something very seriously, just don't start browsing. That will put you out of the frame(of course unless you have some real good control over thoughts and mind).

Plan everything well for the time you spend out of the office as well.
-- Our personal life affects our professional life almost in every aspect and the converse is also true. If we can't get things done on time in office we end up staying late and that annoys people at home. They start cribbing, telling us why we are late daily and all that stuff. That obviously makes us angry and we lose the mental balance. And when we are in office with such a mind we do things in a much worse way and the cycle goes on. So we better plan things for our personal life also. Just to make sure that we are successful everywhere.

These are a sort of Golden Rules for anyone who aspires to be successful. At least that is what I feel. I of course have started following these and it has helped me a lot.

Mozilla - Bookmarks' keywords & Quick Searches

This world is really full of amazing things. How much ever we discover and find out, there will be something interesting just right next to us which we would not have figured out. This post is about one such thing, which was right here from such a long time and I had not figured it out.

The first hints for this came to me when I saw one of my colleagues, Pramod S, at NI using shortforms for Google(g) and Wikipedia(wp) when searching. I thought he had come across some hack and tweaked his browser. But just today I realized that it is infact a feature in Firefox.

For any URL or webpage that we bookmark we can assign a keyword, a shortform, which can be entered in the URL bar to visit that bookmarked page. This is really a very useful things if we visit certain pages over and over again. In my case http://mxr.mozilla.org/seamonkey/ is one site that I cannot live without. So I have keywords for the 3 different searches available at this page, viz:
  • mxrf - for file search(find)
  • mxri - for identifier search
  • mxrt - for free form text search

This feature is really handy and increases the brwosing speed to a great extent.

How to get this working? or how to assign the keywords?. This again is really simple. For existing bookmarks just go to the Bookmark properties by Right-Clicking on that and you get a small dialog with a text field for Keyword. Key in whatever you want and click on OK. Thats it you are ready to fire the internet with your keywords. For new bookmarks it is still easier. When you are creating a bookmard with the helper dialog you get the keyword field which you can key in or leave it blank (either to be filled later or not to be filled at all).

This is not the end. There is yet another enhancement to this. Certain bookmarked urls have query strings, as in case of search urls. The google url: http://www.google.com/ is followed by a query string of the form "search?hl=en&q=search string" which carries the search string entered. Such strings work with the keywords also. Meaning you can search for something on google using the keyword, 'g' like this:

"g any-search-string" . This will be converted to appropriate URL with a proper query string as specified in the bookmark properties. As it appears this of course requires a little bit of extra work. When saving an URL as bookmark, for instance when saving http://www.google.com/ you can save it along with the query string, but the search string being substituted by "%s" and whatever string you specify with the keyword will replace every occurance of %s in the URL. So this is how the bookmark URL will look like:

http://www.google.com/search?hl=en&q=%s ---- with g as the keyword. Now when using this bookmark, if you enter something like this in the URL bar:

"g bookmarks " -- this becomes-- http://www.google.com/search?hl=en&q=bookmarks -- and finally giving you search results for bookmarks.

Now this is how I have arranged my mxr bookmarks:

Now does this method appear too complex and cumbersome? Well mozillians come to your rescue yet again. You can save such enhanced search bookmarks called "Quick Search" bookmarks very easily like this:

Go to the search page and Right-Click on the search bar, and click on: "Add a keyword for this search" . That will give you the small bookmarking dialog, with a field for keyword. All that you have to do is to just enter the keyword that you want and click on OK. All the URL, query string and %s headache is taken care by Mozilla.

Well mozilla is here just to make your browsing experience easier, safer and worthwhile., isn't it?

And I am proud to be associated with this awesome community. ;-)

Happy and Fast Browsing.

Subtle things about s/w code Performance

Any software product is first benchmarked for its performance before it is shipped out. No company/developer wants complains about the performance of the product from its users. This one single thing can make the users to simply move away to another better performing product. And moreover such a complaint would mean inefficient coding and to some extent incompetence of the developers, which we software developers can't really take.

Performance is generally measured with 2 parameters:
1) Time taken by the application
2) Memory consumed by the application

Typically, on current day Desktop systems the memory criteria is almost ruled out, unless the application is really memory consuming like 3D games and other high end stuff.

But time has always been a concern. So many algorithms are developed to solve the same problem, with each algorithm being a good choice under some set of conditions. Those are all the high-funda things involving Math, mainly things like: O(n), Exponential complexity etc, etc..

Apart from these there are a lot of very small things, which appear as very trivial and insignificant but eventually make a lot of difference. I learnt about 2 such things at my work place NI, yesterday when I was working on my first task here. I of course cannot speak of the nature of my work and what exactly I was doing. Here are the generic things that I learnt:

1) Avoid calling a function in a loop, instead pass the data you are iterating in the
loop to the function being called.

Suppose you have a large amounts of data to be processed and you have helper processing function and an actual processing function. The most common way of accomplishing such a task would be to iterate through the data in the helper function and for every single instance of the data call the actual data processing function. This can be optimized to a great extent in a lot of cases. By iterating through the data in the helper function and calling the actual function we introduce a lot of function-call overhead, which obviously eats up a major chunk of time. If possible, which it indeed is in many cases, we should instead pass the large data chunk to the actual data processing function and iterate over there and make the necessary processing then and there itself as and when we fetch an instance of the data.

PS: By data instance here I mean one data unit. Something like an element if the data chunk is an array. If it is an array of structures, then one data instance would be a structure.

This way we reduce the overhead caused due to extensive function calls and there by improving the performance.

2) If we have an if/else block which is hit a lot of times continuously, then we should have the code for the most probably case in the if block.

This is particularly interesting. Yesterday when my tech lead told me about this, I was really surprised that optimization can be done at this level. I liked this very much.

Consider the following code fragment:

for ( execute some times) {
if (aCondition) {
} else {
Something like above when compiled into machine language would look like this:
loopLabel: instruction for condition check;
JMP if false to elseLabel
code for true case (if block)
some more code for true case
loop condition check
JMP to loopLabel if true

elseLabel: code for false case (else block)
some more code for false case
loop condition check
JMP to loopLabel if true

This is how the assembly code would look like.
Here the if/else block is repeatedly hit as it is in a loop and is the main body of the loop. In the assembly code when the if condition turns out to be true the code for true case is execute and then a JMP is made to loop beginning. BUT, but, in case of else there will be "2" JMP instructions - one to go to the else block and another to go back to loop beginning. This double jump obviously is an overhead and takes more time for execution. Hence we should try and design the if/else in a such a way the code for the most common or most probable case to be put in the if block, so that a maximum part of the execution happens only with a single jump.

This might seem so stupid or so subtle that may lead to the thinking that the performance gain with this trick is almost negligible. Its not so. Believe me, the gain is really good in most cases where the if/else block is repeatedly hit.

So stop jumping around and start improving your code. ;-)

Wednesday, September 12, 2007

Learn to say NO , Learn to be harsh

Doddappa & General Dyer

This is one of the several discussions or talks that I had with my Doddappa (Uncle). It was during and after supper (during mine and after his.. though we started together). He just started with the JalianWala Bagh incident which happened before Indian Independence. Just to recall, a large number of Sikhs had gathered in this place JalianWala Bagh for a religious meeting (from what I know). At that time General Dyer had issued a notice that no public meetings could be held, as it was a sign of freedom struggle and the British always wanted to avoid a full fledged opposition to their rule. When General Dyer became aware of this religious meeting he came with a troop of gunmen and positioned them behind the Sikhs covering the only the entrance to the enclosed JalianWala Bagh ground where they had assembled. He gave a warning telling the people there to clear before his countdown ends. The Sikhs did not budge and the General ordered the troops to open fire on the people. He killed almost all of the Sikhs present there. Some say the number was hundreds and some say it was thousands. Whatever it is, I am pretty sure it was big number.

There was a lot of opposition and revolt after this incidence in a lot of places in India. Also there was a great big opposition in England also, about the action of General Dyer. So the British, fair in governance as they few call them, formed a committee to investigate the matter. The committee had Indian(s) too.

It started with the General Dyer being questioned. When he was asked for a reason to take in a troop of gunmen inside that enclosed area, he said "The entrance was too small for my tanker/automated firearm weapon to move in. Thats why I had to finish the job with few gunmen". This might enrage the Indians, but there is a lesson to be learnt here.

Never in the interrogation did he confess that he did a mistake. Never was he sorry that he killed so many people. Not even through out his life. Any time he was asked about that incident he said "I was just protecting the queen. I was following my orders. I just did my duty". Never did he regret that action of his and he always considered that he had discharged his duty properly.

Each one of us will face a similar scenario in our careers. We will come across situations when we are supposed to make harsh statements or we receive such harsh comments. In either cases, it that was the need of the hour then we should never regret about the situation. Sometime a senior of ours may scold us or make certain negative remarks. If those are justified then all that he has done is his job. He would have failed in his duties if he had not done that. This justification is again a very difficult thing. Not all would be ready to accept any such thing told. The very first reaction would be think that its wrong. But a proper thinking with a cool mind will sort out the things.

On the other hand there might be a situation when we are supposed to speak like that or make certain hard decisions. If that is in the best interest of all then we should never hesitate to do it. The person at the receiving end may consider us to be rude, but we know we are not. All that we have done is dischared our duties. This is the harder part. And this is what we have to learn from the above mentioned incident in the life of General Dyer.

Thursday, July 12, 2007

IBM Internship: Part I: The Interview

This is the second post regarding my internship at IBM. Since the prologue did not contain any information about my interview here is a bit about it. It was my first corporate interview and I guess I did fairly well. Before the interview I went out with a buddy to get print outs of my resume. He was one of the volunteers coordinating the selection procedure. He revealed to me that the IBM folks were selecting just about 3 or 4 students. This was certainly not welcoming information and it brought some concerns.

I did not top the written test and hence I was later in the list. So I watched people go in and come out at an interval close to 20 minutes. Pals like SI shared questions and even suggested answers. A couple of those finished their interview came out jumping, literally, and were totally sure that they were in. This raised certain doubts in my mind. I started imagining scenes where I and a few others would be just sent back without even being interviewed. Luckily IBMers were pretty patient and nothing like that happened. And then came my turn. I went into that same interview hall, which our senior Harish Bhai had shown as a place where he got his job.

A person named Suresh interviewed me. He started with typical questions which SI had told us earlier outside. The first one was the television and the remote control question, where in I was asked to design a system which will enable interaction between the two devices, just the object oriented (OO) software (no hardware details). My design was a little ok I guess. Then he went on to as me about some other design questions closely related to OO. Then it was my college and CSI senior Gautham Pai, who in a way is one of my gurus, who interviewed me. He looked at my CV and started asking me about the paper that I and my friend Ashwin had presented. We divulged into several discussions regarding authentication and authorization and how they differ and all that. It was all good and smooth. Then finally I was asked about the UNIX style access control system.

With this came an end to my first interview and nearly a 45 minutes wait to the next candidate. It was a good experience for me as my performance was satisfactory to me. This was confirmed when the list of selected students was announced and my name was the first. The first thing I did was, obviously, to run to the phone booth and inform my parents. Well I had officially started earning and 12K per month was a good enough deal to be happy. :-) After that I called Doddappa and a few others to inform them about the beginning of this success.

After this followed verbatim recitation of my interview and casual talks and finally the PARTY. More about the party and other happenings in another post. After all, Success Story has just started. ;-)

Tuesday, June 26, 2007

IBM Internship -- The Prolouge

Internship @IBM - The first productive period of my Engg student life.
The title clearly states that till this internship I have not done anything productive. On the academic front it was bound to happen considering the way college was being run, the competence of the people who imparted knowledge and the way exams were conducted. Had I been dependent just on these things then probably all that I would have been is a book-worm. But thank god, there is this world of open-source software which saved me. Thanks to a few seniors, a few peers and partly also my ego, a fire to learn things beyond the books was kindled and I started "wasting" my time on things not present in our textbooks. But it was all learning, a one-way traffic. It was never reflected back in any achievement. Though I and my friend Ashwin Biyani came up with a paper, we both know what research (re-search) we did for that paper.
I do not know what held me from doing anything. It was my laziness or probably lack guidance. But neither of these are reasons worth mentioning. All that matters is the outcome and what can be present in "white and black" and there was no such thing in my case. We did have certain failed attempts though. After our 4th sem we stayed back in holidays and learnt HTML. Of course the plan was to further continue it and come up with a project which of course did not succeed. Then probably in 5th sem, we tried joining GNOME, Bangalore with projects like Mono or Evolution. Again that too failed. We did try to knock the doors of Novell but backed out later, just because of laziness and lack of josh and passion.
It was so until the middle of 6th sem. I was at our university hockey tournament at Tumkur (I guess it was Tumkur). At the end of first half of first day we had won our first match against PESIT and were to play our second match later that day. It was a little late in the evening and we were getting thoughts that we will not be playing our second match that day as the first round was still going on. Around this time I got know (I do not remember how, I did not have a cellphone with me back then) that the very next day IBM-ISL was visiting our college for offering internships. I was a little disappointed considering that I will have to travel and reach hostel that night and the very next morning I would be attending the test and hopefully the interview also. I hurried without informing all of my teammates. Kushal, the team captain, was pretty reluctant and tried retaining me for the rest of the tournament. He said "VTU Cup maga". I said "Nanna career Maga" and he said no more. (I now realize that I was absolutely correct about what I said. This internship did shape my career as a s/w engineer.)
When I reached hostel I could feel the heat of the next day's test by seeing all my able friends gummed tight to OO - related books, mainly C++ ones. (It was revealed by a senior interning at IBM that selectors would concentrate on OO concepts) There were few BOOs and WOOs when people saw me back, as I guess they were expecting me to miss this internship opportunity. I was a bit tired because of the game and the journey. But I had to hold the books and I did. I started with Herbert Schildt's C++ and I started to realize that there is so much in C++ that I do not know. But this attempt for last moment preparation was in vain as I was very sleepy. I do not remember much about that night, but I am sure I would have had a few discussions with friends, both technical and non-technical. I would have narrated the hockey match and finally when we realized we were wasting time, few punters would have gone back to books and I would have gone to sleep.(of course with some hope - which I always like to carry)

Tuesday, June 19, 2007

FULL SLOSH - The day I realized (visualized) it’s meaning.

There is a saying in Sanskrit which tells us about the heights of mischief or hyper-activity. It deals with a MONKEY being drunk and later bitten by a scorpion. Well first of all it’s a monkey and over that the two additional treatments would take the monkey totally out of control. There was a similar condition back at the hostel. Though the animal involved was not a monkey but a much more decent and a LOYAL one. [:P].

It was during our last days of the hostel and as expected people had a lot of reasons to booze and dEOp and do any such similar thing in the name of parties and have fun until they would get high and later either become sentimental(most of the times) or comical(very rarely and only a select few). The day I am talking is also a similar one. It was with the grace of one of the funniest guys around, Mr.PETU, that a new kind of party was organized. Actually there was no organization. The right resources were there along with the right consumers at the right place, at the right time. (What more is required for a grand party..? [:D] ).

The location was the area in front of the Gym. There were around 15 people probably. The resource was Imperial Blue (IB). There were two candidates who were comparatively new to the boozing world and were still semi-pro if not amateurs. They were done with KF and Romanov but never touched anything of the order of IB. This day obviously they were excited (I believe) as there was no other option and hence no reason for them to avoid it. These two punters were the two strong V's of our class (and also group) --- Viggu and Vikya - The LOYAL one. They were partner in crimes like boozing (right from KF to IB) and eating chicken (and other non-veg dishes of which I have no idea at all). This blog entry mainly revolves around one of these two characters, to be precise, the animal involved.[;)].

Almost all were there in front of the gym at the said time and were waiting for the few missing ones. In the mean time, as I needed to EAT, went in search for a food place with PJ(Civil) on Koli's bike. Unfortunately we had to move around a lot and finally landed at Manu's. The peak time crowd still delayed my default long food duration. Moreover we had a Kannan stop for a Mango. While waiting for that I saw Kolya with Kudva and messaged him to go to gym. And finally when we were back the melodrama had already started and unfortunately it was sentimental one(as laughing is always preferred to crying). The loyal one was all set and was crying in front of Kolya(who is very popular as an all time NON-FUNCTIONING partner for boozers, though recently he started getting high with a few drops of beer). And Viggy was speaking his heart out in front of SI. After a very short stop there I and PJ went to hostel to give Anya's parcel. And by the time we wanted to go back we had all the crowd coming back to get ready to go for food. Casino Park was chosen and many rode off. Kolya was struggling a bit with Vikya and asked me whether I would like. I agreed almost readily as I was interested in seeing what circus these HIGH people would do.

/******* FACTS **********/

Vikya and Viggu were heavily drunk, much beyond their capacities. This was only known later after we got back from the awesome road trip described below.

/****** END FACTS ******/

So me, Kolya and Vikya started and as per SIs instructions we went to Metropol. There when Kolya was refueling his vehicle Vikya delivered his first output. It was one big Omelet(or whatever you call it). It polluted a big area and I finally had to put a bucket of water as the petrol bunk guy insisted on it. Meanwhile Kolya got an Aquafina bottle and Vikya cleaned off a bit. Then after a short pause Vikya started the second round. But this time it was mere sound(VVVyyyyaaaaaaaaaaakkkkkkk) and at the end a spit. After a bit of this he was ready to go and when told to sit on the bike he said: "Aye L**de Activa myaale karkond honti matta?" (Well god only knows which bike this Mahaan Rider wanted!!!). Finally we started moving, with Vikya between me and Kolya. All through the journey I was afraid that Vikya would pluke again and I would be bathed in that. Luckily that did not happen. Vikya tactfully spat a couple of time and it did not come near me. (Thanks buddy for that CLEAN ride.. [:P]). We of course had some kireek at the gate, but Vikya's VVVyyyyaaaaaaaaaaakkkkkkk and Kaju's fast words cleared the way pretty early.

Back at the hostel we threw Vikya in front of L-Block just to give him some more time to clear of the crap within. He looked like a devdas. Kolya got his Dig cam and I took Kaju's cell and a lot of snaps were taken. (I hope they are still available and not been deleted because of fear of parents seeing it). Vikya made any more sounds but nothing came out. It was very clear that he had consumed far beyond his maximum limit. The way Vikya was acting was very funny for me and I tried to take pictures from all the possible angles. After some time we took him upstairs and made him sit in front of his room. He was so much out of control that he could hold himself up and sit. He repeatedly kept falling down. Then there was a bathroom trip also. Finally he was thrown on his bed. Now that loafer put out some more Omelet here INSIDE his room after all that mere sound outside. I started video recording at this point. We took him out. I do not know how but his pants started dropping and we could not pull them up and tighten. He was now lying in the pathway in front of his room, with an old shirt tied around his neck as a napkin, by Kolya and a sheet of paper shielding some more of his body and clothes. Here he looked like a pakka drunkard lying on the roadside besides some Gutter.

Almost at that moment SI and others returned from Casino Park and was a bit taken aback (I think so) to see his good old LOYAL one lying like this.

/******* FACTS **********/

1) All this time Mr. RamanaMurthy, the L4x puppy was besides Vikya. A friend in need is a friend indeed. [:D][:P]

2) Vikya was not aware of any of these kaarnaame.
/****** END FACTS ******/

Then SI suggested carrying him to the terrace and we did so. Got his bed there and put him in the cool breeze and he was totally switched off there. No more sounds, no more inside-crap and no more actions. That was the glorious end of the drunkard Vikya’s best booze day. It was a day worth remembering and hence this writing.

There was a parallel hungama going on at the Casino Park, involving Megastar Raghu Moms, and also earlier in front of Gym. Those are described in another entry. If this was interesting for you then check that out also. It was a different story there, more interesting in fact.