Skip to main content

The graduate student anthem

So, I wanted to send round the graduate student anthem to some labmates, but I just could not find it on the internet. So, finally, on the wayback machine I found that on an old website of mine instead of linking to it I had actually reproduced it. Hurrah for redundancy. So here it is again, hopefully to rise up from the depths of the 'net once more (to be sung to the tune of Hotel California):

In a dark deserted room,
Brylcreem in my hair.
Warm smell of unwashed socks,
Rising up through the air.
Up ahead on my PC...
I saw a shimmering light
My head grew heavy and my sight grew dim,
I had to work through the night.
As he stood in the doorway,
I heard the Rush Rhees bells.
And I was thinking to myself,
'two years of researching - and this could be hell'
Then he picked up my paper,
And he gave me an 'F'.
there were voices down the corridor,
Thought I heard them say,
'Welcome to the world of academia
Such a lovely place, such a lovely place, such a lovely phase.
Plenty of room at the world of academia,
Any time of year. any time of year,
you can get screwed out here.'
My mind was stiff and a-twisted,
The coursework never seemed to end.
Got a lot of glassy genius boys,
That we call friends.
How they crammed in the libr'ry,
Sweet summer sweat.
Some mugged to remember,
Some mugged to forget.
So I called my advisor,
'Please make me a T.A.'
He said ' We've never had such spirit here
Boy, you really make my day'
And now those students keep calling from .. far away,
Waking up in the middle of the night,
Just to hear them say
'Welcome to the world of academia,
Such a lovely place, such a lovely place, such a lovely phase
Livin' it up at the world of academia
We don't mean to cheat, we don't mean to cheat,
where's your answers sheet?
Four years was my ceiling,
Then came some advice.
He said 'We are all just prisoners here
Failed my defense thrice'
In the dissertation chambers,
The doctoral committee,
They quiz him with their steely glares
And he can't get his Ph.D.
Last thing I remember,
I was running for the door.
I had to find a passage back
To the place I was before.
'Relax', said the chairman,
'Til some results we receive.
You can check out any course you like
But you can never leave.'

Comments

Popular posts from this blog

A note on Python's __exit__() and errors

Python's context managers are a very neat way of handling code that needs a teardown once you are done. Python objects have do have a destructor method ( __del__ ) called right before the last instance of the object is about to be destroyed. You can do a teardown there. However there is a lot of fine print to the __del__ method. A cleaner way of doing tear-downs is through Python's context manager , manifested as the with keyword. class CrushMe: def __init__(self): self.f = open('test.txt', 'w') def foo(self, a, b): self.f.write(str(a - b)) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() return True with CrushMe() as c: c.foo(2, 3) One thing that is important, and that got me just now, is error handling. I made the mistake of ignoring all those 'junk' arguments ( exc_type, exc_val, exc_tb ). I just skimmed the docs and what popped out is that you need to return True or...

Store numpy arrays in sqlite

Use numpy.getbuffer (or sqlite3.Binary ) in combination with numpy.frombuffer to lug numpy data in and out of the sqlite3 database: import sqlite3, numpy r1d = numpy.random.randn(10) con = sqlite3.connect(':memory:') con.execute("CREATE TABLE eye(id INTEGER PRIMARY KEY, desc TEXT, data BLOB)") con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", sqlite3.Binary(r1d))) con.execute("INSERT INTO eye(desc,data) VALUES(?,?)", ("1d", numpy.getbuffer(r1d))) res = con.execute("SELECT * FROM eye").fetchall() con.close() #res -> #[(1, u'1d', <read-write buffer ptr 0x10371b220, size 80 at 0x10371b1e0>), # (2, u'1d', <read-write buffer ptr 0x10371b190, size 80 at 0x10371b150>)] print r1d - numpy.frombuffer(res[0][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] print r1d - numpy.frombuffer(res[1][2]) #->[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] Note that for work where data ty...