day of fckups

Sure has been one hell of day, today. Starting early to office just got me stuck in traffic for an hour. I burnt the whole day trying to get Roundup work with Apache. Then ended up deploying Bugzilla. And, bugzilla has a global numbering scheme for bug IDs. :-S Grr.. The entire drive back home, I had to tell myself not to get to writing yet another bug-tracker, just to scratch my itch.

Back home, a stupid injury forced me to cut the run short at 6k. Now, I'll have to nurse this thing for the next two days. Ants have invaded my bed, and have effectively evicted me out of the bed room.



when it works, be happy that it does.

Refactoring code that is "running" fine, is the next biggest mistake that you can do. Especially when all you require is a 100+ line modification to get that bug fixed in the dirty way. The fact that it looks extremely ugly and that it could get worse when you try to hack a patch on top of a hack, still just not justify it. Simply because, it _is_ running fine no matter how fugly it looks. A refactor sure does put you back on the path to nirvana, but only after a painful bunch of sleepless nights.

If you brave it and go ahead with the refactor, the FUD that your subconscious generates while in the process is not even funny. As you do the next best design for world domination, your FUD-subconscious is silently calculating the broken parts of the application. And before you realize, your 'deliverable application' just became a 'still-in-development application' :-/ Not something that should happen when your deadline was yesterday. Slowly it becomes a war of reasoning between the 'FUD-subconscious' and the 'Optimist-subconscious'. As the pain increases, the damage caused by the refactor starts to out-weigh the pros. Thats the time when the FUD-subconscious starts pushing in ideas of abandoning the refactor and going on with the 100+ line fugliness. You might even apply it, reconsider, revert the fugliness and get back to refactoring, a couple of times.

All the while, silently reassuring yourself that this pain is not for nothing. That this pain is for more than just beautiful looking code. That this pain is to make sure you dont have to go through this again in the future. That this pain is actually for something useful. That once its done, it shall open up limitless possibilities. Whether those 'limitless possibilities' are required, only time can tell :-/ It is very likely that those 'limitless possibilities' would never be realized, ever.

Hmm.. Why then?


its there.. not there.. there.. not there :-/

Never (ever) drop a cheque on a Saturday. Especially when that cheque is going to make your negative bank balance, positive. Coz, all through Sunday you'll end up seeing that 'Cheques in clearing' notification, over and over, inspite of knowing that banks dont work on Sundays :-/

Ye.. paycheque finally. But, I aint jumping yet. Coz, its not my bone till I get to chew on it :-/ (I hate being a pessimist. But lately, looks like thats the best way to avoid disappointment :-S)



Breathe in. Breathe out. Sigh! Dusty mess of a room in a stinky city. Feels like home baby. :) After 35 days in a hotel room costing a 6 digit bill to the client, a milestone delivery. I finally can see a paycheque in the horizon. Phew..

Cannot sit back for too long. Another promised delivery is coming up in another two weeks. But for now, I am home :) Sure does feel good. :)


recession? my ass.

Not many days ago, I see a Jaguar on the road. And, last night I spotted a Lamborgini. The next fool who is going to talk to me about recession will have my foot in his mouth. Seriously.

Where the hell are my pay-cheques. :-S


OMFG, spammers sure are creative

Just noticed a whole lot of 'nancy's and 'chloe's on the list of followers on twitter. Spam bots which behave like humans. Sending in arbid tweets every now and then, and pushing in links on the sly. Check this out..


National ID Cards, Ye :)

India to launch 'ID card' scheme

The Indian government has begun moves to provide a Unique Identification (UID) number to its citizens, the central government has announced.

Cards?? What the fuck. Why cant they just put an RFID chip into everyone's head? What a total lack of creativity. Shyte.

Hopefully, in another five (or fifty) years I would not have to carry a dozen documents to prove who I am. And, please please dont fck it up like that (joke of a) voter's id-card.



And then I totally surprise myself with a full 11.2km in 61min 31secs. The walk back home was the weirdest feeling. Legs were worked out beyond pain, and felt like i was floating :P



You dont call it 'workoholism' when you dont have a choice do you?

I saw the dusk last evening from my desk. I ran a 8k in the middle of the night just to make sure my limbs havent ceased to function because of lack of movement. More than three liters of coffee has gone down. And, I am still at the desk looking at dawn break wide open, reminding me that time is running out. Every crossed out task opens up two more new ones. At the exponential rate its growing, seems like there is no end. Maybe I should just stop being a perfectionist. Maybe I need someone to tell me that I am at the raw end of the deal, and perfectionism is just not what is required at the moment. But that glitch is such a sore to the eye. And, if my brain simply wont move coz of it, am I to blame. OCD?

Havent cleaned my room in weeks. Have been missing phone calls, weddings of friends. Havent replied to emails.



Code reuse == Orgasmic

By 'orgasmic', I mean 'literally orgasmic'. No joke. Check the following python method:

def _readData(self,data,pos,maxLen=0):
"""I read bytes from the given 'data' stream from position=pos
bytes until I get a byte stream of length maxLen. If the given
data-stream was not enough, I return a tuple saying so. I
should be called with more chunks of data till get the
required stream length.

When the given data-stream did not have enough bytes, I return
a (False, new-position, None).

Once I get all the required bytes, I return a (True,
new-position, byte-stream)

@param data: data stream to read data from

@param pos: position from which data should be read

@param maxLen: The maximum length of the bytestream that I
should gather

@return tuple (bool, int, str): I return a tuple containing
the following: (1) boolean saying whether I have collected the
byte-stream completely or whether I would need more data. (2)
int saying the new-position from where the next read should be
done. (3) byte-stream containing the requested bytestream
collection after I have finished reading the entire length."""

left = len(data) - pos
assert left > 0

if self._Buffer is None:
self._Buffer = []
assert maxLen != 0
self._bufferRequiredLen = maxLen

if self._bufferRequiredLen > left:
npos = pos + left
self._bufferRequiredLen -= left
return (False, npos, None)
npos = pos + self._bufferRequiredLen
b = ''.join(self._Buffer)
self._Buffer = None
self._bufferRequiredLen = 0
return (True, npos, b)

Its a fairly trivial piece of code. Does no jing-bang stuff. It just accumulates buffers in pieces till it gets a defined total-length, and returns the whole thing as one single buffer.

I wrote the above method for a project back in Oct. 2007. Since then, I have copied this method 'as is' umpteen number of times for every protocol implementation (be it on twisted, or plain python sockets) thereafter. And, every time I slurp-plonk it into a new project, I feel this happiness deep within. I cannot explain exactly why/what. It definitely is not rocket science. Its just something about the relief that I dont have to do that 'collect the buffers' thingy again. Maybe I am lazy to the extent that I am orgasmic, for not having to do something _yet_ again. :P


15 days, 11 runs and finally a full 5k

The title explained it all :) The stitch comes around every run. Guess I have to fix my breathing pattern.



Cut myself open wide
Reach inside
Help yourself
To all I have to give
And then you help yourself again
And then complain that
You didn't like the way
I put the knife in wrong
You didn't like the way
My blood spilled on your brand new floor


work, compromises, etc.

Another twelve hours to pack my bags to Ooty for the hash. A well deserved break after some mad working frenzy over the past couple of weeks. But, with the deadline still looming around the corner, I am quite unsure what to do.

I dont want to miss the break. I dont want to miss the deadline. Does it justify to flex the deadline a bit if it got so stressed up for no fault of mine? Can I even shrug it off when it is me who is responsible for it? Should I compromise the break to keep the deadline which I doubt will still be met. :-S I dont want to keep compromising every single thing. But, this is my one last opportunity. And, I do not want to regret later.

Shyte. What do I do now :-S

Three pots of coffee have gone since 2:00, and a tangible result still seems far away.

2009-03-22 == brilliant

In the middle of a mad work frenzy, you look up a link that a friend posts on FB coz it popped up as an email notification. Smile. Then, start clicking another.. smile more. Then another.. and another. And when your coffee became cold, you realize that you just blew an hour on it. Not regretting though :)

Here is some brilliant shit people : :)

:) Enjoy.

Ending parathetical statements with an emoticon.

Hehehe. I thought it was just me. Check this out :)


Debian and the rest of the world

I remember Redhat 7, Guinness. Then 'valhalla'. And then 'Shrike'. Ofcourse there were these intermediate flirtations with Slackware. And, then I touched Debian 'woody'. And, have not gone back to anything else. I remember desperately waiting for 'sarge' release. And then 'etch' release. And then 'lenny' release.

I am not quite sure as to why I am in love with this distribution. I thought it was the stability. I thought it was the package manager. I thought it was the ease of use. I thought it was the flexibility. But figured that, I just cant point to one good reason and say thats why I am stuck to debian. Looks like I am just too emotionally attached to it :P Looks like I am in love with it :)

So, why am I ranting all of a sudden? I am watching an 'apt-get dist-upgrade' happen without a single fuss, without a single tantrum. Oh it is such a pleasure. :)


Old pals :)

It is a nice feeling when old pals get back to you and scold you for not being in touch. Whoever the person is, and however the relationship was. Coz, that one single action brings up a whole lot good memories and makes you feel cozy inside :)


dumb dumb dumb

"what the heck is this thing??"
"hmm... This is in the wrong place.."
"its just a stupid copy"
"you sure its just a copy"
"oh yeah yeah.. its just not in the right place"
"if it is not in the right place, it has no right to be"
rm -rf /.../postgres-main/
/etc/init.d/postgresql-8.1 stop
ERROR: could not find .... blah.. blah..
"MOMMMMMMMMMM... save me.."

So, thats how, a smooth upgrade from Debian Etch to Debian Lenny, turned out to be not so smooth. After the panic attack, the blabbering, the ranting and the running around office, I settled down and thought for a second. Unmounted the volume and started googling. There were two databases in it which are being used by the rest of the office. :-S Cant afford to lose them.

Since the actual database was on a tablespace that was still intact, my first attempt was to try and recover the databases from the tablespace. Something like, create a new main database and link the tablespace to it. But, looks like the main-database has a whole lot of shit linking back and forth with every available database. So, that seemed like a bad idea.

Then got on to 'ext3grep'. Though the guy (author) was giving some hope by mentioning how he had recovered his accidentally deleted 50k+ files, he was not helping at all with the disclaimer which seemed to be coming up on every second line in the manual :( However, after 3hours, ext3grep showed me all the files that were deleted in the recent past, and I saw the 'postgres' folder there .. Sigh!!. Another 1 hour to recover the files into a new folder. Then moved it to the original place and started PostgreSQL. That 10sec startup time seemed like 10hours. Finally it came up. Checked the databases, and everything seemed fine.

Phew.. Someone up there still loves me. :)


preconceived notions kill musical experience

LOL. That sure did sound like a realisation :P

I have been putting 'porcupine tree' away for a real long time now. Two previous attempts were futile. I found myself trying to list what I did not like in it. I was actually looking for things that I would not normally like. And, today I was listening to it without even realizing that it was porcupine tree, and I actually liked it. So, all it required was an open-mind. Shite. Where do I dunk my stupid head :-S


git bit me.. yet again.

Moving 'bases' from the local git-svn repository over to was quite enlightening. The local git-svn repository was pointing to a SVN repository which could not be accessed. git-format-patch converted the git-svn repository into a series of patches, and git-am happily applied those patches onto the new git-svn repository at

In fact a simple fetch+rebase in the new git-svn repo would have done the magic. But, I had to lose the git-svn-id tags that every commit log had. Lucky that there were only 32 revisions. Else I would have had to read the 'sed' manual which I have been carefully avoiding for a long time now :P

From 'twitter' to ''..

The thing that got me hooked on to twitter was the ease with which I could update from a simple XMPP client. But then twitter's XMPP updation service broke. I waited and waited. Things never got back to normal. I tried using the thirdparty XMPP gateways to twitter. They were good.. just not good enough. And, then I discovered It runs on a Free Software uBlogging server called 'laconica'. Not bad at all. It works good.

Most of my friends are on twitter. So, it would be slightly lame to ask all of them to move over to But for me, I am done with twitter. I still will be following up with people on twitter. But, no more of tweeting.. just denting :P

Finally split 'official' and 'personal'

There was this silly confusion about what ID I was using for official work and personal work respectively. Just sat down and fixed the damn thing. Had to reshuffle projects on and juggle around IDs with launchpad. But now it is set right, and I am happy :)


I want timestamps :(

Grr. Silly 'plaintxt' theme is not showing the time-stamp :(

No i am not dead yet..

Yep, I am very much alive. :)

Just saw my bank balance drop to a three digit mark. Sighed. Smiled. Had a coffee watching the night sky. I know rescue is a phone call away. But, I am not giving up yet. Just not yet. I am gonna go through this thing to see how far it can get. Just so that I know I can get there, and still smile.

Getting back to work.