< April 2006 >
2 3 4 5 6 7 8
Mon, 03 Apr 2006:

Rebellion is inevitable. I don't mean the political kind with weapons, leaders and death. I am talking about the much more intrinsic outpouring that most of us associate with teenage angst. The basic instinct that metaphorically makes us feel happier running into the darkness with eyes shut rather than walk into the tunnel of future groping and feeling the walls.

Rebellion is the first side effect of a growing mind - shaking off the training wheels carefully tied on your life cycle by your parents. Consider it the original sin if you want, but the first act of your free will is hardly likely to be an act of good. There are many who have said that the truth shall set you free, but for generations told to tell the truth, lies are what really sets them free from the apron strings.

The first kiss, the first cigarrette, that first mug of beer - they all change more things than their immediate effects. They are things looked upon quite badly by them and therefore become things to do to spite the world with. The basic thread of "I do what I want" drives people to do what they don't want as well.

Then one day, as quickly as it began, rebellion dies. Like a phoenix, it is reborn into what we prefer to call purpose. Same thing, new bottle - but Purpose needs no strutting or posing, it acts. Cause and effect comes into play - the word consequences creep into your mind and the clock of the human life clicks into the doldrums of young adulthood, where nothing much happens but everything important seems to be revolve around that fact.

I've walked around a couple of colleges in the last year. I miss the rebellion that used to thrum underneath the seemingly calm veneer of college day-to-day. Maybe I'm tuned to a different wavelength of a past. Maybe they changed what the rebellion means and forgot to tell me. But I just don't feel the vibe - I just get a disturbing sense of obedience from these future adults. The world's going to be really strange for me if people just obey without threat of consequences or reward for keeping in the lines. No stick or the carrot, merely orders and obedience.

The seeds of rebellion are planted deep. They are watered by the tears of everything denied to you and rooted in all your potential. Pass through the gates and join the club.

Humanity has advanced, when it has advanced, not because it has been sober,
responsible, and cautious, but because it has been playful, rebellious, and
       -- Tom Robbins

posted at: 15:12 | path: /philosophy | permalink | Tags: ,

FOSS spawns a huge number of applications, anyone who has seen freshmeat can confirm that. Very few of them really reach usability and even fewer are well maintained. So here are some I found lying around in my own harddisk, along with the rpms mirror I pulled out sometime back.

Ever since I saw XGL (more correctly compiz) doing extra magic during the kororaa demo at NITC, I've been wanting to try it out. But this one was a surprise - 3ddesktop. It is basically a 3d desktop switcher that could be hacked around to work like XGL has - but minus the actual X updates across the multiple faces.

[gopal@phoenix ~]$ 3ddesk --acquire=1

[gopal@phoenix ~]$ 3ddesk --mode=cylinder --nozoom --goto=2

It is the most awesome thing I've ever seen work out of the box. Even without restarting X11, it just started working. The screenshot is of carousel mode with zoom enabled. You can see my four desktops and the various things on them. OpenGL rules.

The night sky in Bangalore is orange. We have too many glowing streetlights to actually see the sky. While I was in NZ, I remember walking around in the garden at 2 AM looking at the stars I've never seen before. I've marked out the Southern Cross in Celestia and now I can watch them anytime I want. Anyway, a set of spots with no connections hardly makes any sense to the average viewer. Then there's that small blue planet that is hardly even in the middle of nowhere that we are quite interested in.

But before I started bitching about the lack of marked constellations in Celestia, I ran into something that's even more awesome. This one is a virtual planetarium on your desktop - Stellarium. This thing literally blew my mind away. There is no other program I've ever seen that makes me want to plonk down hard cash. If I ever go to a college to talk again about the coolness of software, I am sure as hell going to demo this particular application. Head and shoulders about the rest, that's what this one is. This is a bloody video game, that is what it is. There is even a windows build for it.

All the following images are screenshots captured from Stellarium. If I'd pulled the ones without markings, you could misunderstand them for real photographs. If you don't believe me, look at the bigger versions.

I don't know how many of you have played an old DOS game called Xargon. But I am pretty sure you guys have seen one of the Mario series at least. So, supertux is a side scroller of the very same sort. Except for the lame save file style - which is a plain-text lisp macro file, I love the game. Maybe I might love it better because of the lame save file *wink* *wink*.

Then floated before my very eyes, something that was even more annoying than anything before (and probably after). Something that burns CPU just to render on screen and even more because of all the composition on the backbuffer. I give you xpenguins. They even have themes, like the Simpsons with Bart & Lisa. The most awesome part is when the penguins fall too far - they die with a lot of gruesome blood and fly away as a angels. I literally died laughing when Bart mooned standing over a root terminal.

There are serious tools in there as well, like redir. This is a port deflector which accepts connections and forwards them elsewhere. Looks to be a lot cleaner than using netcat/ssh for the job as I've always done. But yeah, those are almost on every *NIX box - this might not be. Or hping which can finally send SYN pings which aren't blocked by most boxes. Technically you can take down entire blocks of webservers using that simple tool - not Yahoo!'s or any decent company's servers, but not everyone knows what Accept Buffering means. For the really paranoid security dudes, there's the knock which lets you script up your port knocking. How about if I hit 3333 and 6666 twice within 10 seconds, the firewall lowers the connections to ssh-22 for next minute - well, then I'd really need knock around or I'll be writing LOTs of code in the link layer to detect hits on closed ports. And ssh proxy-command has the ideal thing for it - nc host port1 ; nc host port2 ; nc host 22 .

Also when you walk around a wifi network, you can't do without kismet or in a pinch, ssidsniff. Last cool toy around is the fakeap which lets you fake the existence of hundreds of 802.11 accesspoints with a few thousand beacon frames. I wonder what would happen to the poor guy who tries this at a conference - killed by a thousand laptop blows ? Or maybe run driftnet on a host with lots of traffic and see how many naughty pictures people browse.

It is already the next day now and I still haven't played around with torcs, dircproxy or qdvdauthor. More importantly, I haven't really tried out all the network tools that are so important to my basic mode of operation. Maybe sometime later.

We are all in the gutter, but some of us are looking at the stars.
               -- Oscar Wilde

posted at: 11:44 | path: /hacks | permalink | Tags: ,

Some of the world prefers to know their destiny (if there is such a thing) from tea leaves. I, for one, prefer to drive mine using coffee beans and chaos (code and chocolate optional). Needless to say, I sat down at my box planning to write something totally random, pointless and useful only to my curiousity - as befitting the first of mad new year's. On a side note, did they call all of us Indians who celeberated new years last week fools ? Anyway, I wrote something that would read RPM .hdr files as dumped on my disk by yum. The docs were pretty useless and so was all the samples on my box - but I read through the pullheaders.py inside yum and discovered most of the secret calls used.

As it turns out, there is no function around which will accept a filename for a .hdr file. The closest I found was rpm.headerLoad which seemed to accept a string and then complain about a bad header. The code for rpmlib is pretty heavily documented though completely useless for my particular purpose. After I discovered the secret Gzip calls inside the old rpmutils, I began to suspect what headerLoad actually takes in might be a gzip decompressed buffer of data rather than just a filename. From that point onwards it was a peice of cake.

import rpm,gzip

hdr = rpm.headerLoad(gzip.open(f).read())
name = hdr[rpm.RPMTAG_NAME]
description = hdr[rpm.RPMTAG_DESCRIPTION]
summary = hdr[rpm.RPMTAG_SUMMARY]

To test this code properly, I started pushing in all the headers in my dag repo mirror I have at home. I found quite a few interesting applications once I started reading the HTML output of this program. More on that later.

Make sure every module hides something.
           - The Elements of Programming Style (Kernighan & Plaugher)

posted at: 10:44 | path: /hacks | permalink | Tags: ,