Sunday, April 19, 2015

Android App Installation Issues

I recently started developing Android Apps.

I encountered some strange issues installing the app I was developing on my phone (nexus 5 android version 5.1.1).

I got this strange error message :
"
 Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
"

A closer look in the log-cat revealed this message :
"
 signatures do not match the previously installed version; ignoring!
"

After poking around I found that there can be couple of things causing this problem.
1. You might have changed the SDK version between your last install to this new build
2. For some reason signature of your app changed (which can be if you try to install the app from your friends (or any new) device.

Solution to this :
1.  uninstall the app and restart the device. It should work in most cases.
2. But for some reason even after doing this you get the same error message while installing the app.
Goto your phones' : Settings > Apps > All (tab) . Remove the app from the list here. It seems this can happen if you have multiple users on your machine and if you install an app for all users. Just removing /uninstalling from your user login will not help. So need to remove for all users. This will make sure that android has no history of previous version of the app to compare before installing.

Spent half day debugging this stupid thing. I hope this saves time for someone somewhere!

Happy developing!!

Sunday, December 25, 2011

Are we connected?

I am constantly amazed at minds ability to constantly find things to occupy itself. And this time my brain is trying to answer a philosophical conundrum. Are we connected?

OK here is a brief background of what does this question mean to me or how did I start thinking about it. I was listening to this physics lecture about atoms and quantum particles and how they interact. The presenter was pointing out the facts how everything around us is created of atoms molecules and sub atomic particles. How the food we eat and air we breathe has these particles. This got me thinking...... does this mean we are all connected? Let me elaborate about my train of thought. We all eat food and breathe in air which we know is used by our body to produce energy using various bio-chemical reactions. But there are also certain by-products which are released back into the blood stream and finally into the environment, for example carbon dioxide. This carbon dioxide is used by plants during photosynthesis to generate energy and produce oxygen used by other creatures, on this planet, for respiration. Same thing with the food we consume and excrete. It recycles itself after decomposition. From a macroscopic view all seems so disconnected and each process seems completely independent. But when I try to zoom in and get a closer view, I find something mind boggling. My body, my tissues, my cells are made up of atoms. The chemical reaction in my body is interaction between the atoms in oxygen molecules I inhaled and the food I ate. Same thing is true for the trees which absorb the carbon dioxide generated by the reactions within the molecules in my body. These oxygen atoms/molecules are then used by some other organism for its metabolism. Now if I try to look at the level of sub atomic particles, there should have been an interaction between the particles within my body, within the tree and so on. I am assuming interaction between molecules happened as there was a change in energy states of particles and new particles/compounds were formed. I believe that with these interactions at sub atomic level I am interacting with almost each and every particle on this planet. Not only present but from distant past.

This begets my quandary. Are we all connected? Can my thinking be affected by some other organism? Is butterfly effect a fact of life?

Another thought that emerged from my previous argument was that do these interactions make me, in a way, immortal? After all the atomic particles never die they are just recycled in nature. Although I know I will forget about this in a month or so. But I still find it amusing just to think that I am just a recreation of some atomic entity which existed in past and I may exist forever after I disintegrate / decompose after my death. (I believe this thought of mine may have been inspired by from planet Gaia from Isaac Asimov foundation series) And here we are trying to cheat death every day when we know it is inevitable. While in reality there is no me, you or us. It is in reality everything but at the same time nothing.

Wednesday, December 22, 2010

Net neurality

It's been quite some time since I blogged about anything.
I felt I should not let a whole year pass by without adding anything into the archives.
Since there is not much excitement in life apart from studies, work, soccer, racquetball and travel ( doesn't that cover almost everything?), so I thought lets write a few lines about a proposed net neutrality bill by FCC (Federal Communication Commission). Although I have not read the details of the proposed bill. But from whatever I have read/heard/gathered + my own opinion, sounds like a bad move.

First things first, I do not think net belongs to any regulatory authority or corporation. So who gets to decide about how internet is used/abused/accessed is a moot question.
Net belongs to nobody and everybody. I think today internet is one of the rare places (if you may call it a place) on earth where caste, creed, color, race, etc does not have any importance. You are (almost) free to express yourself (anonymously) without fear of repercussion of any kind (assuming you are on the right side of great firewall of China). But powers that be, completely fathom the dominion of internet and its denizens (Wikileaks??). Obviously an uncontrolled mob is always perceived as a potential threat by people in power and they would love to either control it or kill it. Later is not an option. So the only way is, put controls around the freedom of the net, or "regulate it", to make it more palatable.
I am not scared about the initial revisions or "regulations" per say. But what is concerning is that an organization (with vested interests) thinks it has right to tell us people how, when, what, how much information is delivered to us. If it is not in the first draft, wait, eventually it will, unless we nip the bud and stop this right now. Lest it might be too late.
For example if they want to charge corporations and even end users by the amount of data they send (upload or download) through the tubes just to fill their or their friendly lobbyist's pockets is pinnacle of greed. Heck if I want to download or stream my lectures/movies then why should I pay above and beyond for my already absurdly over-priced internet service? I was reading somewhere about toll data highways for the internet of future, where corporations can pay more to ensure faster and wider tubes while poor and weak have to use the more congested networks with no guarantee that the data will ever reach its destination. From here on you can easily imagine what all big corporations might do to milk the common users.Like they can ask you to pay per byte (we are not talking food here), data insurance to make sure that data is secure and delivered safely to its destination (banks?), packet sniffing to make sure you are not transferring naughty things around (viruses??). Worst of all they might get powerful enough to bar you from using the net (SSN for net will help track individuals for their safely :P). Now imagine without a net connection in say 20 years from now. I would say you would be equivalent to a below poverty line (BPL) citizen of today's generation. As the whole world would connected online and you my friend won't be part of it. With smart homes, phones and intelligent devices becoming a reality with each passing day. All your data, records, activities are getting easier to track and record. With someone controlling the net your whole privacy is at risk. And the sad part is, you will be told it is for your benefit. As if I am not sensible enough to decide for myself what is good or bad for me. I KNOW it is outright BAD!
As of now I see no solution until we put our foot down and make a stand we will always be treated unjustly by the very own people we elected to make sensible decisions/policies on our behalf.

Anyways a very charged and a long blog. Time to go to bed. Need to work tomorrow to earn my bread :).

Monday, March 30, 2009

Magic of perl!

Here is a small script my friend gave me to debug...
Amazing piece of perl regular expression mastery..

perl -e '$i=$ARGV[0];$i++while("."x$i)=~/^(..+?)\1+$/;print"$i\n" _input number_

The output will be the next possible prime number inclusive of the number itself.

for example:
$ perl -e '$i=$ARGV[0];$i++while("."x$i)=~/^(..+?)\1+$/;print"$i\n"' 8
11

$ perl -e '$i=$ARGV[0];$i++while("."x$i)=~/^(..+?)\1+$/;print"$i\n"' 7
7

Each time a number is input the number. A string of "."'s with length equal to the input number is generated.

try:
$ perl -e 'print "."x$ARGV[0]\n;'
To understand what "."x$i does.

$ perl -e 'print "."x$ARGV[0];' 4
....
$

now here is the master piece...
(..+?) matches the smallest possible string of dots (>=2) in the generated string (remember "."x$i) which can be repeated to match the generated string. The ? makes sure that the search is not greedy.

Repetition is achieved by \1+
which says repeat the last matched pattern (\1) at least once (+).
Now smallest possible factoring number is achieved only for non-primes.
Any prime number will not have any string of dots which can be repeated atleast 2 times. Hence the match ("."x$i=~/^(..+?)\1+$/) will fail and while will not increment $i.

So the output will be the next prime number >= the input number.

Who said perl was not powerful? And regular expressions are arcane and cryptic?

Happy scripting!!

Monday, February 23, 2009

Changing Internal Field Separator in a Bash Shell

It took me a long long time to change the IFS (Internal Field Separator) in a bash shell. Which by the way is set as default to whitespace, tab, linefeed and carriage return.

If you want to change it in the shell you have to enter: IFS="whatever you want"
You can view the same using : echo $IFS | cat -vte

My problem was to rename files with spaces in them. As for loop was breaking each file name at space.

So I had to do the following:
# Before you modify your IFS please please please make sure you save your old IFS just in case things do not go as expected. Remember Murphy's Laws are omnipresent!

#IFS=:Space:Tab:Line Feed:Carriage Return:
IFS=$'\x20'$'\x09'$'\x0A'$'\x0D'

Then rename each file.

for f in `ls *.txt`; do
echo $f
# change each file extension from .txt to .csv
mv $f `basename $f .txt`.csv
#Additionally if you want to remove the whitespace too then the following line replaces it with underscore!
# mv $f `basename $f .txt|sed 's/ /_/g'`.csv
done

And done in seconds..
sigh (of relief and happiness)!!!

Happy bashing! :)

Thursday, August 28, 2008

Base conversion utility

The following code is a small utility I wrote to do base conversions to and from different bases.
Right now the support is till 2-36 base values. As of today (28th Aug) I have no intention to extend the base values. The code has been tested on Linux platform but should be portable to other platforms without any hassle. I have not tried to cover all the corner cases for error handling, but it serves a good purpose. And the algorithm is also very basic. I wanted something to just work for me :)

Any comments/views are welcome.

Useage: ./a.out -f fromBase -t toBase NumberForConversion


/*
* You are free to edit/modify/redistribute this code.
* But do acknowledge the contribution of the previous authors!
*
*/


#include < iostream>
#include < cstring>
#include < cstdlib>
#include < errno.h>

using std::cout;
using std::endl;
using std::string;

const int MAXBASE=36; /* maximal base value allowed */
const float version=1.0; /* Version of the tool */

int from, to = 10;

/* Display help for incorrect usage or if requested */
void help() {
cout << "Usage: run -f frombase [-t tobase] digit" \
"\n\t-f -- base to convert from" \
"\n\t-h -- show help" \
"\n\t-t -- base to convert to. Defaults to 10" \
"\n\t-v -- show version";
}

inline bool rightChar(const char &c)
{
return c=='-' || c=='f' || c=='t';
}

//
// Function to parse command line
//
void parse_args(char **args, int c) {
int i = 1;
char **p = args;
while(i != (c-1)) {
switch (*p[i]) {
case '-':
++p[i];
if(rightChar(*p[i])) continue;
else help();
break;
case 'f': // Get "from" base
++i;
from = strtol(p[i], 0, 10);
++i;
if (from < 2 || from > MAXBASE) {
cout << "Error: invalid from : " << p[i] << " \n";
exit(1);
}
break;
case 't': // Get "to" base
++i;
to = strtol(p[i], 0, 10);
++i;
if (to < 2 || to > MAXBASE) {
cout << "Error: invalid to : " << p[i] << "\n";
exit(1);
}
break;
case 'v': // Version
cout << "Current version number is: " << version << " \n" ;
exit(0);
case 'h': // Help
help();
exit(0);
default:
cout << "Invalid arg " << p[i] << "\n";
help();
exit(1);
}
}
}


/*
* This function converts the base ten integer to the required base
* ToReqdBase(const int& tBase, const int& dig)
* returns: int - converted integer from base 10 to the required answer
*/
string ToReqdBase(const int& tBase,const int &dig) {
int tExpr = dig;
string result = "";
//int msbMultiplier = 1;

while(tExpr) {
int tempResult = /*msbMultiplier**/(tExpr%tBase);
char tempRes = tempResult>9 ? ('A'+tempResult-10) : ('0'+tempResult);
result = tempRes + result;
//msbMultiplier *= 10;
tExpr /= tBase;
}
return result;

}

int main(int argc, char *argv[]) {
if (! (argc==6 || argc==4) ) {
help();
return 1;
}
parse_args(argv, argc);
errno = 0;
char *errCheck = 0;
int dig = strtol(argv[argc-1], &errCheck, from);
if ((errno == ERANGE && (dig == LONG_MAX || dig == LONG_MIN)) || (errno != 0 && dig == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
if(*errCheck != '\0') { cout << " Error in input number. Check the from-base value too! \n\n Wrong answer probably"; }
cout << " " << ToReqdBase(to,dig) << "\n";
return 0;
}

Saturday, February 09, 2008

Firefox tweaks

After spending tonnes of time sorting out my thesis and writing my own, as I call it ,"world's first ****** netlist generator"(I cannot divulge the details for non-disclosure agreement I have signed). I thought it was time for me to let the geek within me have some fun. So I went scurrying around looking for some tips to improve the performance of my browser, firefox(open source rulz!!).

Here are some of the tips I tried, and yes they did make a difference. Maybe you will like them too, but, I must forewarn that it may not work on some of the sites/servers, as they might not be supporting the advanced features these tweaks enable in the browser.

First and foremost, type "about:plugin" in the address bar(no double quotes please).
It will present the configuration of your browser, which we have to tweak to improve the performance.





Restoring session: Although firefox2 and beyond restore the session after a crash, I like it to restore the session where I left. In order to restore the session in firefox every time to shut it down, search for browser.startup.page in the filter. The default value for this configuration key will be 1. You need to change it to 3. Simply double click on the value and a pop-up window will come up for you to edit the value.





Make browser.urlbar.hideGoButton=true to hide the unwanted go button next to the address bar.

These were only for the cosmetic changes in the browser. To get a performance increment following changes were helpful. But again, be warned, it might not work with certain servers/websites.

network.http.pipelining=true : To enable pipelining. This feature might not be supported by certain websites.

network.http.proxy.pipelining=true (default false)
network.http.pipelining.maxrequests=8 (default 4)


The above three tweaks improve the browser speed a bit, at least for me!!
Zip through the net.

More tips later!!!!


Source:: http://lifehacker.com/software/firefox-2/geek-to-live-top-firefox-2-config-tweaks-209941.php

Saturday, October 13, 2007

Redirection In *nix

After having gone through "search implement and forget" cycle of redirection in *nix environment. I thought it will be best in my interest to just make a small note on it on my blog. So that I have it at an easy to remember and accessible place.

To redirect both stderr and stdout streams on a bash shell you need to do:
command args >& logFile

To redirect only the stderr you should do only:
command args 2> logFile

NOTE: If you invoke a subshell like:
sh shell_script
Then you should encapsulate the command within apostrophe(') to prevent the parent shell interpreting and converting the stderr stream to an integer. This is because, if you invoke your script in the aforementioned way, then the parent shell invokes a child shell and tries to do substitutions where ever possible.

I should be explaining this more in detail in future, maybe :)

Sunday, March 11, 2007

Is it all about the money?

No matter how hard you try.....
no matter what you do.....
it still boils down to the greenbacks!!

I am just curious we pursuit our entire lives for these same greenbacks,
so that we get at par with the others. While we very well know that these,
are the very reason for the divide in the first place.

Why can't we just do things for fun? Why does that money have to act as a wall between the friends?
Why does this world understand 1 language, have 1 faith.....of money? Why ..why..I ask WHY???
Maybe I ask too much. But this is the end I always hate and have to face. People weight every thing in money eventually......

Maybe because its the human nature. "What will I get out of this" is so heavily engrained into everyone's mind that it supercedes all justification, logic and human values.

I was really hurt because of this....today. The pain is inexplicable.
You try to help a friend, and if he wants more of your time...he says "I'll pay you by the hour".
Hey I never asked for it. I thought we were friends, when did money come into picture. I guess it inevitably does....somehow! But the pain of friendship being paid back in terms of money...this was really a saddening moment, for me atleast.

There are certain things you value a lot. Certain things you want to keep separate from the maddening materialistic world. Friendship is one of them. but people...ppphhh....forget it...

Maybe the feeling will eventually sink in someday.....
But the pain will linger!

Sunday, December 17, 2006

Your own uname!

Adding another simple code to find some basic system information on Linux/Unix machines.
There are some API's, you will need to do some input parsing, which you can add to make this act as your own "uname" command!!

I have not added those to keep the code clean and simple....KISS - "Keep It Simple Stupid"



#include "sys/utsname.h"
#include "iostream"
#include "stdlib.h"

int main()
{
struct utsname name; // Structure to hold the system info.

if(uname(&name)==-1){
perror("System error:: ");
return -1;
}
cout << "sysname == " << name.sysname <<
" release == " << name.release <<
" version == " << name.version <<
" machine == " << name.machine <<
endl;
return 0;
}

NOTE : The above code compiles under Linux/Unix for sure. Have not tested on other platforms...


Here are the functions I wrote for parsing the input string....You can use them if you want
CALLING PI is : parse_argv(argc, argv, name); // You will have to add this in main after the if{}

template < class T>
void
printErr(T str_ch)
{
cout << "Invalid option..." << str_ch <<
"\tUsage: uname [-m][-r][-v][-s]" << endl;
}

void
parse_argv(int argc, char** argv, const utsname& sysinfo)
{
while(--argc) { // Check arguments supplied or not as argc == 1 imp no args
char* str = *(argv+ argc);
if('-' == *str ) { // - imp option specifed or not
while( *++str ) {
switch( *str )
{
case 's': cout << " System == " << sysinfo.sysname << endl; break;
case 'm': cout << " Machine == " << sysinfo.machine << endl; break;
case 'v': cout << " Version == " << sysinfo.version << endl; break;
case 'r': cout << " Release == " << sysinfo.release << endl; break;
default : printErr(*str);
}
}
} else {
printErr(*(argv + argc));
}
}
}

Tuesday, December 12, 2006

Fun with programming

Well another interesting piece of code I came across on some website....sorry I forgot the source. But I claim no responsibility or originality of the code....

It is called a quine....
Well quine is a piece of code that outputs itself exaclty.
Search on the net and you will find many more of thses examples. Search for "quine"

Here is the one i liked!
main(){char *c="main(){char *c=%c%s%c;printf(c,34,c,34);}";printf(c,34,c,34);}

Just compile and run the code....and enjoy the beauty of "C programming"

****************************************************************************

Here is another of my favourite fun code in C....
Program without the omni present main()....

// Code to print hello without main()
// compile gcc -nostartfiles filename.c

#include "stdlib.h"
#include "stdio.h"
_start()
{
printf("Hello World\n");
exit(0); // If no exit seg fault "Cannot find bounds of current function"
}

That is all folks...
I might update the page if i find some new interesting things...till then
Happy Coding :)

Monday, December 11, 2006

Remove those spaces!!

Its been a long time since I have posted something new and useful...well have been really busy with life!!

Here is a code I wrote for fun...it removes all the multiple tabs and blank spaces in a string.

Feel free to use it, but do give credit to the Author :)
And if you find any issues...or feel like giving some feed back...you are most welcome!!



/*
* Date: 10th December 2006
* Simple Utility code written by hundredrabh
* It simply removes more than 4 spaces and tab stops
* from the input string and replaces them with space.
* You can download and play with the code
* But please do give due credit to the author for his efforts!!
* Happy Coding
*/

#include "stdio.h"
#include "stdlib.h"

/* Function declaration and defination */

/* char* enterString(char*)
* Accepts a char pointer, to return the input string
* returns a pointer to the input string, and this pointer needs to be freed by the user!
* Error checking needs to be added for return values and realloc
// TODO - Enhance it for buffered reading/writing
// As realloc is slow....
*/
char*
enterString(char* str)
{
char ch;
int len = 0;
while(10 != (ch = fgetc(stdin)))
{
if(0 == (len % 512)) {
str = (char*)realloc(str, len + 513); // TODO - Need Error Checking here...
}
*(str + len) = ch;
*(str + len + 1) = '\0'; // adding the null termination as realloc does not return 0ed memory..so EOS determination is difficult.
++len;
}
return str; // This needs to be freed by the user
}

/* End of enterString(char*) */

/* DETAB
* void detab(const char*)
* returns a void, accepts a char*
* remove all the tab spaces or spaces which are in multiples of 4 from the string
* Spaces before and after a tab will be considered as continuous!!
*
*/
void
detab(char* str)
{
char* dummyRetStr = str;
int spaces = 0;
while(*str)
{
switch(*str)
{
case '\t': // Remove the tab
*str = ' ';
++spaces;
break;
// check for 4 spaces together
case ' ' :
++spaces;
break;
default :
spaces = 0;
break;
}
*dummyRetStr++ = *str++;
if(spaces == 4) dummyRetStr -=3, spaces =1; // Remove 4 spaces occuring together!
}
*dummyRetStr = '\0'; // null terminate the modified string
}


int
main()
{
char *inp = 0;
printf("Enter the string \n");

inp = enterString(inp); // Free inp, it has been malloced
detab(inp);

printf("You entered .... %s\n", inp);
realloc(inp, 0);
return 0;
}

Thursday, June 15, 2006

Bug of the week - 15 june 2006

Well this blog will be a bit techie one!!

There was a certain problem I faced while compiling a small cpp test code.
Whacked my brains for 3hrs to find this small bug!!
maybe a pro would have found it earlier!!

but here goes the problem!!


1 #include < iostream>
2
3 using namespace std;
4
5 class A {
6 public:
7 A( int a ): x( a ) {}
8 int getX() const { return x; }
9 void setX( int a ) { x = a; }
10 virtual void abc( void );
11 virtual ~A() {}
12 protected:
13 int x;
14 };
15
16 class B : public A {
17 public:
18 B( int a ) : A( a ) {}
19 void abc ( void ) { cout << "its B" << endl; }
20 ~B() { cout << "ending B" << endl; }
21 };
22
23 class C : public A {
24 public:
25 C( int a ) : A( a ) {}
26 void abc ( void ) { cout << "its C" << endl; }
27 ~C() { cout << "ending C" << endl; }
28 };
29
30 int main() {
31 B b = B( 1 );
32 C c = C( 2 );
33 cout << "b is : " << b.getX() << " C: " << c.getX() << endl;
34 b.abc();
35 c.abc();
36 return 0;
37 }

Now when compiled with g++ the code gives the following lonker error!!
/tmp/ccQfBUdf.o(.gnu.linkonce.t._ZN1AD2Ev+0xb): In function `A::~A()':
: undefined reference to `vtable for A'
/tmp/ccQfBUdf.o(.gnu.linkonce.t._ZN1AC2Ei+0x8): In function `A::A(int)':
: undefined reference to `vtable for A'
/tmp/ccQfBUdf.o(.gnu.linkonce.r._ZTI1B+0x8): undefined reference to `typeinfo for A'
/tmp/ccQfBUdf.o(.gnu.linkonce.r._ZTI1C+0x8): undefined reference to `typeinfo for A'
collect2: ld returned 1 exit status


Now for the bug!!

Well it was a small issue...
You ought to give a dummy implementation of virtual function abc at line 10 as



10 virtual void abc( void ){} or
10 virtual void abc( void ) = 0; make it a pure virtual function...

it will compile as a charm!!

Happy coding!!

Friday, May 26, 2006

Social Justice .. Other Means

This blog is to express my views against the 50% reservation policy of the Indian Goverment..

Why do our leaders think that making reservations in higher education will bring social equality in India? I beg of them not to do such grave injustice to the common people of India and contemplate over some other alternatives.

All the measures should be implemented at the grass-root level. So that all a poor/backward student needs at the higher level is scholarships and financial aid, which of course can be provided. But introducing reservation in higher education will not be an effective measure. You cannot teach a person integral if he is not comfortable with addition.

Instead of the mid-day meals, why not give the students money itself(I may not be fully correct here). It will be an added incentive for their poor parents to send their wards to school. You can introduce 2 mandatory credits in MBBS, BTech, MBA, BCom, etc for a person to teach in rural areas. Village panchayats should look after the boarding and lodging of these people and government should pay them minimla wages. This will resolve teacher shortage crisis and also help people connect with the grass root level. This way people will also take their modern outlook and ideas to the village, resulting in upliftment of the village as a whole. Other countries have 5 years of mandatory army duty. We can have atleast 6 months of teaching job?

This reservation policy will only further divide the nation which will be orthogonal to the vision of equality which our freedom fighters died for. We should look for progressive policies not these regressive ones. This might win them more votes in the next election or so..but as an Indian why dont they think what harm it will do as a whole to the country. Sometimes a person needs to rise above the petty political games. But maybe these people have sold their soul in order to achieve their personal greed.
Writing with a lot of hope and faith!! Hum honge kamyaab......
Inqulab Zindabaad!!

Wednesday, March 01, 2006

The Invisibles!!

The other day while whiling my time at Chennai Mofussil Bus Terminus(CMBT,India) at 4:00a.m in the morning(Don't ask what I was doing there at such a weird time). I had the opportunity to observe the otherwise not so visible bi-peds. Those who have a great bearing on how smoothly our lives function, yet unknown to us. I am talking about the daily wage worker, the rickshaw wala et-al.
They all seemed to be sleeping on the dirty floor with some old newspapers neatly and appropriately placed below them as though these were their "prized" bed-covers. Most of them seemed like sleeping in a state of trance, dreaming for what they really dream!! Far away in their own sweet world.

Then from somewhere comes the deafening noise as though there is a cloud burst.
It was the policeman who had come to wake them to the realities of life.
The sound of the policeman's "Lathi" hitting the ground made most of them sit upright and look as though they were awake...But their half sleepy eyes gave away the truth.

Most of them sat up, to move on and face another day in their lives which somehow was not comfortable for them. while some of them slept nonchalantly knowing it was a daily routine. They sat up and went back to those sweet dreams, as though not wanting to face the "realities", as soon as the policeman left. Those who had woken had by this time disappeared in the crowd as "the invisibles" ready to support the human civilization hoping for once they get their due credit.

Watching all this made me realize how indifferent we are to our fellow beings and how we "overlook" the implied. Anyhow it was time for me to move on and try to figure out how not to ignore "the invisibles" from now on........

Can see them really!!!

Friday, December 30, 2005

Happy New Year!!

Happy New Year
As the sun sets for 2005,
Another great chapter closes in our lives.
We usher into a new era in 2006,
hoping not to be haunted by for what we've already given a fix!

Yesteryear was a great one,
full of enjoyment n loads of fun.
I hope that 2006 is equally prosperous and bright,
with you achieving, on whatever you set ur sight.

Raise the "BAR" and ensure all hurdles are crossed,
and you do not take the path that is already falsed.
So, Another great year comes to an end,
time to say "HAPPY NEW YEAR" to all,
near-dear and good friends!!

Happy New Year to all!!!

Tuesday, December 20, 2005

Questions unanswered.....

Not once, not twice, neither thrice. I ask myself infinite times.

Why all this? For whom? What is the purpose of this life?
I came, I saw, I tried to make the best for myself. Because its me who is affected.
That sounds a lot of "me", "myself" and "I" to me!!
Why cant it be more "we","us", "them"?
Is this this "I" the sole purpose of our existence or is it "us" ?

It feels somewhere down the line we loose the meaning , the sole essence of life.
If we try to cut out that "I" and "me" replace it with "us" and "we".I think this world can be a better place.
After all we know how to respect other peoples emotions and feelings. That can come out in a better way if we respect "them". I have tried it many a times and have never faced failure, but don't know how to make it a more universal feeling/phenomena.

Maybe I think the wrong way...may be I miss the point somewhere...but still i feel that this is not the way it should be. I try to figure out what is amiss...
But alas in the end find my "questions unanswered"!!

Monday, November 14, 2005

A Journey in Indian Railways.....

This weekend I had the "once in a lifetime opportunity" to travel in a general compartment of Indian Railways. The experience was a little short of a nightmare that you dream should never come true.

I will mention some of the inumerable instances that made the journey really tiring and discomforting.

First hurdle was buying tickets. To start with I was lucky enough not to stand in the long unwinding queue to buy the tickets. One of my friends bought the tickets and in all the jostling lost a Rs.500 note,but to look at the brighter side he came out of the queue unharmed and more pleasantly with 4 tickets for us. (First battle for tickets won!!).

Then came the challenge to get a seat, as 4 hour long journey can be really taxing on your un-exercised legs. There was a sea of people wanting to jump into the bogey. I could not imagine so many people fitting into that small compartment but I could figure out this reason later when I learnt that it was a norm for 4 ,even 5 people sometimes, to sit on a seat marked with 3 distinct integers. My assumption that 3 numbers meant that 3 people could sit on it was wrong.
Again one of my friends who was well accustomed to all this had a small trick up his sleeve. He jumped,as everyone else did, into one of the compartments while the train was coming to a stop at the station. And hence we managed to get 2 seats for 4 of us to sit.The alley between the seats was supposed to have zero voids with all available space to be used by the traveling "junta" to stand and travel("suffer").

Traveling from then on was a little more comfortable. With only the person next to you pushing you more and more to sit more comfortably,you literally had to fight for survival.But somehow after a few pushes and nudges everyone was settled and able to adjust. Now if you are lucky/unlucky to have a window seat you can have the full view of a**es of people trying to answer mother natures' call, early morning. All the stinking sweat; yours and of the people around you is something you should be prepared to bear with. After all we are a tolerant society! Somehow we pass our time playing cards or listening to music from my newest gizmo, a Samsung digital music player, we reach your destination. After realizing that you have passed this endurance test you, notice that your face and hair all having a fine coating of dust which due to mixing with sweat forms into a thin crust. But the realization of having successfully traveled in such adverse conditions, you are happy. And all the sweat and mud is just a symbol of labour and effort you have put in. But that faint smile on your face disappears soon as you realize that you have to return the same day. Thoughts of going again through that ordeal makes you sweat already and drain whatever water your body has been able to retain.

Wednesday, September 14, 2005

Where Why When ???

Where are those happy days?

Why don't we feel the fresh air .... see the rising sun.. hear the chirping birds and sip the morning dew.
Now the air is already conditioned .... halogens have replaced those golden sunrays ..... birds are all gone,not south but somewhere i surely can't hear and the dew drops are slowly converting into tears which i myself drink,quietly.
Why can't i fly like the falcon high in the sky?

When can i give wings to my dreams so that they can soar high? They no longer be a dream but a reality which will bring joy to the morose soul.

But a ray of hope is still there ... you can see the rays if you switch off those halogens that blind you.
switch off the conditioner and open those closed doors and windows ... move out of the closet ,come out in open .. hear those birds and feel the fresh dew. This flickering ray will become more radiant when we hear what our ailing heart cries for and follow the message. The message it wants to put across........

Then only this quandry , predicament will subside and we will relish the true ecstacy in life!!!!!

Sunday, August 21, 2005

All Lost.............

This is how it feels to leave the college and enter the corporate world!!! How it feels when those starry dreams ain't fulfilled.When you miss all your friends.Who too are consumed by this corporate world leaving little time for ol' pals to sit back, meet and relax.
No more chats, news n reviews....
Life it seems is drifting too fast or is it just inertia?
Lethargy is now not just a feeling its a habit.

The corporate world has drained all the energy from the spirited soul.
The zeal is no longer there and the fire within has extinguished.......
But still we come daily , do the cursed job ,do not crib
though this heart bleeds within......
Is this what the dreams were all about??
or was it just a fallacy, a mirage???