What work is like
March 1, 2006
I realized today that while I complain a lot about grad school being a lot of work, I've never described what I actually spend my time doing. The project I've been working on for the past year is a new protocol to increase the reliability of wireless mesh networks. I've described the idea behind a wireless mesh here before, so I'm not going to do it again now. Instead, I'll explain what doing this work is actually like.
One thing I spend a lot of time on is struggling with the ns2 simulator. ns2 is a program written to simulate a real computer network. It has a lot of problems, but it is free and widely accepted as accurate by the research community, so we use it anyway. Usually when we want to test a new protocol or other network feature, we implement it in ns2 first and try it out to see if it works. ns2 lets you test your new feature on a much larger network than you could reasonbly test it on in real life. Supposedly, this will let us verify whether or not our protocol works before we spend time and energy implementing it for real.
ns2 produces large trace files that document everything that happened on the network during the simulation. I have written a bunch of programs in python that read in these trace files and create graphs of network statistics. For example, I usually want to know the throughput of the traffic on the network (which tells you how fast the network is), so I have a program that calculates that for me.
While I do all this programming, I usually listen to music on my headphones. This is important because we have cubicles and sometimes I need to block the noise of other conversations. I have found over the years that electronic music is best for programming, due to the fast beat and relative lack of distracting words. I recently discovered a drum and bass blog that has provided me with some good material.
At the beginning of the year, my advisor and I decided it was time to implement my protocol on a real network, so we purchased a bunch of very small pcs with wireless cards so that we could set up a small wireless mesh of our own. I spend a lot of time configuring each of these with the linux operating system and, in January, I wrote a program for the linux operating system that implements my protocol on this test network. There is another student named Mike that is helping me with this part.
I also spend about 10-20 hours a week with my teaching assistant hat on. This semester, I have two discussion classes where I teach 19-20 year old business majors how to use computers, including SQL, Excel, and Visual Basic. Usually I learn how to do it myself right before class, since computer scientists rarely use Excel for anything, but business majors use it a lot. Being a TA also means I answer a lot of email, deal with grade disputes, make homework, proctor exams, and go to boring meetings. Last semester I taught programming to engineering majors. Here are some of the things they wrote on the course evaluation. My friend Tony used to ask his students to write a haiku about him or the course. I thought that was a good idea and a few students actually did it.
He smells nice. TAG or Axe?
Matt teaches me C
He is very clever you see
Go swim in the sea
Matthew Belcher is
Super fun awesome dude guy
He make class splendid
Roses are red
violets are blue
all of my base
are belong to you
Matt is a C sage
Just ask and you will see
Light and dark today
C doesn't make sense (if you're not a programmer).
Matlab is much cooler (like Matt).
Semicolons suck.
With my hand held high
I wait for Matt to come by
He is stuck again
I still don't get C
But its not the fault of Matt
I blame my parents