Get Conversations about InsaneCats    
Feb 01st, 2004 - Grade Curving: Open Source's hidden Arch-nemesis
clarence: I just hope everybody messed up big time.
clarence: I'm a cruel, cruel man.

-- clarence, a very nice dude, as said via IM after our CC&C test on Friday.

curious: I felt so bad, a girl near to me started crying right in the middle of the test...
curious: and all I could think about was "good! now they'll have to curve it!"

-- curious, a guy from the other section of Programming Languages last term, after the exam.

<Ninja Tim> I hope lots of people spent lots of time on question 1.
<Ninja Tim> It was hard one and not worth very much. That'll bring the average down.
<Ninja Tim> Yeah, it'd be good if everyone fell for that trap. Curve curve curve!

-- Tim, friend from work, about a CS exam of his last term.

I find it kinda bizarre how competitive you are, but you're never nasty about it, not in the slightest as far as I know.
-- flaps, in an email from a year ago, after I made some comment about how he shouldn't give someone part marks for a crappy answer.

Grade curving is a great thing in an ideal world: if a test was made too hard, a little grade curving will help account for this and more accurately portray the grades of the students in the class. Unfortunately, this isn't an ideal world, and the class averages in humanities/social-science classes tend to be a letter grade above the averages in my sciencey classes (and yes, "sciencey" is a technical term). As well, some classes just happen to have better students than others, and the testing procedure is far from perfect (I have a rant about my Operating Systems course brewing, it's just not fully formed yet), so all in all, when you're dealing with already "corrupted" data, trying to normalize it isn't necessarily going to give you a more accurate picture.

It's going to give you students who maliciously wish failure upon their classmates.

With the exception of my first year physics course, I've found computer science at UofT to be the most active in terms of mark adjustment. Tweak here, tweak there, add 5% to this assignment, round up the exam mark, use the second assignment grade instead of the midterm one if you wish, and add 1.5% to the final mark. And all that you have to do is talk to CS students directly after a test or exam in order to hear the results: I hope everyone else did badly, because it will mean that I will do better.

I find it astounding that there's any cheating going on in the department at all, since we've all been bred to be so competitive. I have a good idea for this question, but I'm most certainly not going to tell anyone, because then the class average will go up.

Sat in a 207 class last term, was astonished to hear the prof utter the words: "If you're having trouble, just ask your classmates, I'm sure one of them will know the right answer." What?! Why would anyone help their classmates get over any problems? Every bit of help you give contributes to a slightly lower grade for yourself. This didn't make any sense to me. But the class nodded their head: they'd been told this before, they probably knew who to ask if they couldn't get their CVS repos working, who to ask if they had trouble with unix files, who to ask if they didn't understand Python dictionaries. In fact, several times in that one single class I was there, the answer to several of the questions students posed was "have you asked your classmates?" Every single CS student I've told this story to was astonished; to quote one of them, "That doesn't make sense. We've been told since day one not to talk to other students about anything computer related as soon as assignments were passed out, or it could count as cheating. And almost every assignment and test is rounded up at the end, so why would you give away trade secrets? It's stupid. You must have heard wrong."

This afternoon I was talking to a friend in second year CS. He wanted help understanding a concept in his second year course, and I thought to myself if I help him, in my fifth year I'll probably be taking some of the same courses as him, and he'll do a little better from this help, and that'll bring the class average up and hurt my marks a little. What?!?! Don't help him incase one day he's taking the same course, and incase this bit of information helps him slightly and the class average goes up slightly and thus the rounding is a gazillionth of a percent less high than it would have been otherwise? "Makes sense to me", said another CS friend I told this to. This has become sick.

I formally object to the grade curving system turning me into a knowledge-hoarding hypocrite.

Grrrr.
 

Feb 02nd, 2004 - Better hope it's open book...
When students have a complaint about a course, there's always the issue of objectivity. Far too often I've watched students gripe about profs, classes, and TAs, simply because they're getting low marks in the class and the problem couldn't possibly be them, it absolutely has to be someone else. (But not me, of course, because I'm perfect.)

But sometimes it's valid. Sometimes exams are badly written and don't properly test the material. Sometimes profs do suck, and some courses just are really bad.

I think I've found a minor example of the last one. I know that I'm not complaining due to low marks, because I'm just handing in my first assignment today and I expect to do really well on it. My complaints are three-fold, which I will enumerate below; the course is Operating Systems.


Course content: I've been sitting in this class for a month now, and there is absolutely no new content being provided. We're currently talking about threads -- for the fourth class in a row -- but we're talking about the most basic of basic concepts involving locks. We discussed this already in CSC209, which everyone had to take to get into this class. We're barely going into anything at all, instead just talking about surface information: what a thread is, how it's different from a fork, what it's good for, how to use it, some examples involving two threads, some examples of different types of locks and why they're inadequate, an example of a good lock, using that lock in practice, how you can use it in forks too, different names for "thread", etcetcetc. If we were allowed to use Python, I could write that screenful of C code in two lines....and it wouldn't have that buffer overflow error you didn't check for on line 17. Oh, and it would work; which, as freyr just pointed out, yours doesn't.

The Operating Systems course used to be a 4th year CS course in which students got to build various aspects of an Operating System in teams. (Note: I'm not encouraging more team courses.) They decided to turn it into a 3rd year course instead, and remove the practical element. Oh, and all the content too. So now there's an empty shell of a course, where we see slides that I could flip through and retain all the knowledge on them, at the speed of about 8 per hour. I've talked to a few others in the course too, and they agree: we're not learning anything. Soooo badly do I want to jump to the front of the room and grab the laser pointer. So we're learning threads, huh? Okay, well let's do some cool stuff with it, not this lameo depositing money in a bank example that we've been "trying" to understand for three classes now. And we're learning network security in a little while? How many of you guys have ever programmed a man-in-the-middle attack against an SSH tunnel? Well we're about to build one today! "Let's talk a little more about basic locks..." *sigh* *yawn*


Evaluation: This assignment was horrible. It consisted of five questions: definitions, a listing of three items, C program to do basic "cp", given a 19-line C program (including comments) change the algorithm slightly, write a program to spawn a thread which calculates primes less than n and returns.

Definitions: This exercise was stupid, quite frankly. The definitions included "real time" and "network". Everyone is going to write very different things and it's going to be fairly arbitrary who gets the correct marks on this thing.

Listing: "What are the three..." questions I always hate, usually because I find more than the requested number and then worry about which ones I should be choosing. "Name three of the..." tend to be better. Anyway, this question was directly out of the textbook, as was the answer.

C program to "cp": What am I, in second year first term, when we wrote programs more complicated than this? And second term we most certainly covered this example, very probably in the first couple weeks of classes. We did this already!

Change algorithm: The change was stupid. Add a new variable, increment it in loop one, decrement it in loop 2. End.

Primes: That's our introduction to threads? Spawn one thread and then don't even have the two threads interact? How the hell is anyone supposed to do anything coming out of that class? If you hand them to me and I need them to write a GUI on a different thread from the backend which is multithreaded, they'd probably just explode.


Clarity: The assignment was horribly unclear. It says "a number" which the prof later said on the newsgroup means "one or more numbers". It says "your filenames should have the prefix question# such as ques5.c". Which?? "question5.c" or "ques5.c"? It says you need to include a Makefile, which almost everyone in my class has no idea how to make and is all panicking about, but he's not responding to the newsgroup with solutions. All of the minus signs are underscores (as in: "complete this for n_1") whereas underscore traditionally means subscript, but he means n-1. etcetc.


My overall conclusion? This class is a sad waste. There's lots of stuff to be discussed, lots of stuff to learn, but I doubt we're going to cover much of it. The marks are going to be fairly arbitrary, since the evaluation scheme seems to suck. And if the midterm/exam looks anything like the assignment, I'm going to have to hope that it's an open book test, because I don't know how else I'll be able to remember the three hardware aids of an operating system, and all the other arbitrary facts the textbook quickly mentions.
 

Feb 03rd, 2003 - [Insert irrelevant or headliner title here]
[Insert introducing teaser, often with no real importance to the rest of the page, just an attempt to get people to keep reading; ensure sarcastic tone.]

[Subject begins to make itself known, if not already introduced in a headliner title.] [Insert story, usually accentuating the already over-dramatic flair of the tale.] [Insert a few inside references, carefully enveloped in sensical ramblings so as to not chase off those outside the reference with confusion.]

[Insert bulk of the entry, conversations quoted, colloquialisms rampant.]

[Insert concluding phrase or two, Catspaw telling you all that she hates you, or the world, or the department, or some other thing she's been ranting about for a few screenfuls.] [Insert final, comment-inducing sentence.]
 

Feb 04th, 2004 - What's a homework?
Got home around 8 pm last night and have been spending a bunch of time putting together the presentation for the KMD1002 course where I'm discussing "Hacking as Research Inquiry" tomorrow. I'd better be careful or soon I'm going to be completely type-cast as the chix0r and will never be able to move beyond that title. Of course, if it lets me teach a grad class while still an undergrad, you can type-cast me as whatever the hell you want; I'm in!

Preparing for this lecture is sooooooo much more fun than the homework I probably should have spent the last six hours doing. First of all, I get to talk about something I find cool, which is always a treat; secondly, I like preparing academic lectures because it feels like "practice" for the rest of my life.

I've divided what I'm going to discuss into four categories: hacking tools and methods, hacktivism, other types of hacking, and ethical questions. The first one is when I get to spew all the cool examples of probing tools out there (nmap, ethereal, and the like) and talk about why Google is the best thing that ever happened to anyone who's game is information. Next comes hacktivism, which is the typical speech that I've given with Nart and Graeme over ten billion times to reporters, PhD students, academics, etc. I could discuss this stuff in my sleep. "Other types" is my excuse to discuss wetware hacking (a little lecture about social engineering is good for everyone I feel), and circumhacking (I'll define this on here another day -- today I'm too lazy). And then the ethical questions range from "Is portscanning more like looking at someone's doorknob from across the street while blinking rapidly and swishing your head back and forth, or smashing their windows open so you can stick your head inside and look at whether or not their door is unlocked from the inside?", to "should ISPs be allowed to watch your traffic through their computers?"

The only thing I regret about this lecture is the fact that I feel that lots of its content should be learned by far more people than just the tiny KMD1002 class. Most of my undergrad classmates have no clue about computer security, or any of the issues surrounding it. Come to think of it, there should be an entire course on computer security, not just this subsection of it: from buffer overflows to network traffic analysis to permission systems to input validation. Students need to learn these topics desperately.

Why the hell isn't the department teaching undergrads this stuff?! ARGH!
 

Feb 05th, 2004 - Morekut
Teehee, I just can't get enough of taking words that end in "ore" and adding "kut" to them. I was perhaps a little too proud of my politically incorrect invention of the term "whorekut" for those people on there who added everyone as a friend, but I liked watching it circle around the community spheres as people picked it up. So I've had my orkut fame, my work here is done...

...after I finish this rant.

Orkut has a lot of potential, but unfortunately it's not realizing that potential. If Orkut suddenly handed the design reins to me and said "do something cool with this", the first three things I would do would be:

1) Change the domain name to orkut.google.com
There are two reasons for this, one sneaky and one very evil. The sneaky reason is that once you append "google.com" to it, you remind everyone right in their face that this is a Google product, and therefore has the same high standards as the rest of Google. This is not just a friendster clone, this is a Google product. The second reason is that happy little cookie that is sitting in my browser at all times from *.orkut.com, remembering who I'm logged in as. Understand yet? No? That's why you're never going to rule the world. If the cookie to orkut instead was from *.google.com, suddenly when you login to orkut and then leave and search Google for "php array_shift", our happy little search engine also knows a heck of a lot of information about you: what communities you belong to, how often you post to them, how many friends you have on Orkut, what sorts of stuff they like, whether you're in a relationship or not and what your sexual orientation is, what your religion is, age, home town, home page, etcetc. Anything that you put into Orkut, Google can now tie to your search results. That is very high value data.

2) Improve Orkut's searching abilities
C'mon...it's a Google product, people! How can a Google product have such a shitty search engine? I want to be able to search for people who are not a member of the Python community but are a member of the Open Source community, from Canada, and who somewhere along their chains of friends of friends of friends, know all three of Joi Ito, Brian Behlendorf, and Tim O'Reilly. (Actually, all three have the other two as friends, so that solves that chain.) But the point is that I should be able to make searches like this. Apparently better search facilities are on the way, but I'd ensure that they weren't just "better", but in fact kicked some serious ass.

3) Allow interfacing through different pre-existing protocols
Okay, so communities have newsgroups. That's fine, that's nice. But why the hell can't I use NNTP to access them? Messages are nice and great, but give me POP3 abilities to get to them. You don't have to worry about Orkut becoming a "free e-mail service" problem, because you don't have to provide it as a public e-mail address. But if messages for me are just sitting on the Orkut server, I should be able to get at them using tools already at my disposal and without being restricted to my browser. Same with newsgroups. And if we did all the above properly, why not add in some IM capabilities as well.

I think with just those three things changed, it would offer a whole lot morekut.
 

Feb 06th, 2004 - If you were my co-worker...
...this would be your life too.

Arrive, Nart updates me on what I missed over the last two days, and we go grab some coffee upstairs. Matt arrives, and the three of us discuss Orkut for half an hour. "Look at this guy: he has a book written *about* him." "We need a book written about us." "Nah, if we want a book written about us, one of us is going to have to do some time first." "I vote it's G. Some jail time'd be good for him. Build character." Speak of the devil, Graeme arrives, carrying a computer, drops it on the floor, rubs his arms and cries, "These big strong arms are feeling pretty damn small right about now..."

I decide today is a Rhizome kind of day, so open up rhizome.py and all the little libraries it runs on, and evaluate what needs doing. Ugh, lots of testing and documenting: gee, my favourite.

I decide today is a doing-something-else kind of day, and help Nart map out what our filtering-technologies database is going to look like on paper. I love our database outlines because only Nart and I could possibly understand them. "Okay, this little arrow isn't really an arrow, it's a pointer, okay?" "Yeah, gotcha."

Matt heads out and Graeme, meanwhile, is taking apart a computer and shoving all of its guts into another computer. He stops, glances around, frowns, glances around a little more, and exclaims, "Go go gadget find screwdriver!" (It doesn't work). A little later the computer Graeme's working on starts beeping horribly, but he's out getting a refill on his tea. "AHH bad noise!", shouts Nart, while I try to figure out how to make it stop. G has to come to rescue us. "You guys are so useless with hardware", he sighs.

The mail arrives! And with it, an envelope containing a half dozen issues of ComputerWorld, with the team of the three of us on the cover. "We look so badass." "We look like a fucking gang." "Look at that. No smiles. Glares. We're glaring at you." "We're going to kick your ass." "That's an awesome photo." "Don't mess with us." "Seriously." "Nice."

The inside article is pretty good too. I don't trust the media, and normally they totally screw up what all of us say, but this time it's not too bad. The inside photo has us looking pretty mean too: Graeme's dangling a keyboard at his side ("Argh! But look! My pinky is sticking out! My pinky finger is sticking out of my pocket! Look! Argh!"), Nart's got his leg up on a bench (while posing for the photos, the photographer kept telling Nart to "look more natural" and then forcing him to do un-Nart things, like sticking his leg up on a bench), and my arms are crossed and I'm leaning back. Of course, I'm also not looking at the camera, but rather something nearby to it. Oh well. Pink hair stands out in the inside photo; clashes with Graeme's red shirt.

Do a bit of coding ("Look at this function! Just look at it! It's beautiful! Does the proxy test, and adds to the message queue, but does it all thread-safely, and makes a call to update the GUI's gauge. Man, that's beautiful. That is a beautiful chunklet of code. I think I'm going to bring it home and give it a name.") and notice it's 1:30.

"Lunch time." "Pita pit?" "Robarts Pasta?" "Yeah, pasta." "No, not pasta! I want the Pita pit." "Pita pit is sux0rs [note: we actually pronounce it this way (sucks-zors)] we've been there too much recently." Robarts pasta wins, where the Pasta Ninja flings pepper in the general direction of Nart's pasta and it lands in a two foot radius around the pan. "Alright, check that out." "Holy crap, did you see what the ninja just did?" The ninja doesn't break a smile at our cheers. In fact, he just looks more stern. "When I grow up, I want to be as cool as the pasta ninja", I declare. Graeme shakes his head: "I just don't think that's possible."

We come back to the lab, pasta and bottles of coke in hand, and I type this up while eating lunch. "Who are you talking to?", Nart asks. "She's writing an e-mail", G responds. "No, I'm writing an insanecats entry. You're both wrong."

"Are you telling people about the noises I make?", Nart asks, paranoidly. "I bet you are. 'I thought it was a beached whale, but it was just Nart." I giggle and tell him no, that's not what I was writing about, but I'm going to write about that now. "No! Stoppit! Ahhh, and now you're writing this! Stoppit! Stoppit!"

At this point we realize that Graeme is talking to himself, and giggle. Then Graeme makes fun of Nart's giggling and we all giggle. Glance down at the cover of Computer World where we all look like "badasses". Yeah, sure we are.
 

Jan 07th, 2004 - Nitpicker's guide to Catspaw's dreams
Had the ol' "failing the exam because you can't get to it" dream again last night. "You're weeks too early!" I wanted to complain when I woke up. There was a dress code for Spadina and I wasn't allowed to cross because I didn't meet the dress code. But that didn't bother me. I also had the ability to cause people serious pain by thinking about it. That didn't bother me either.

What seriously bothered me was when I walked past a reflective surface and saw long normal-coloured hair. "What the hell?", I asked in my dream. Stopped. Stared. It wasn't right. I got rid of that. It's been coloured for months now, and short for almost a year. "Someone screwed up." But as I kept watching, it turned green and short. Aaah, better. The fact that it changed didn't bother me. I was back to trying to figure out how to cross the street without meeting the dress code. The world was right again.

(For those curious, no, I didn't get to the exam on time. I arrived half an hour late. Fearing I wouldn't be able to do it in the amount of time remaining, I was spending my time inventing a plan of standing up when the exam was over and collecting a group of people's exams -- including my own -- pretending to be official in my doing so, and then later burning them all at home. When they find out that a dozen exams are missing, what will they do? But I woke up before I had a chance to see.)
 

Feb 08th, 2004 - You're only getting older
-- except for that guy who lives in a time machine except for a few seconds each day to check insanecats. He's getting younger. Except for those few seconds each day. He's getting older then.

Got an IM request from someone I exchanged infos with a few months ago. ("Got a card?", I remember him asking me. I'm too young to be carrying a card just yet. But if I had one, it would say "Catspaw: undergrad at UofT, like thousands of others". I'm so good at selling myself.)

"Want some contract work?", he asked me. It was approximately line 8 in our conversation, right after "Hi", "Who the hell is this?" and then his attempt to get me to remember who he was based on a meeting where I met a few dozen people.

"What is the work?" I like to humour people. If I'm remembering the right guy, I wouldn't want to work for him (seems like he has big ideas and little sense of realism or constraints). But I've decided that taking up contract work every so often is good for building contacts.

"Uh, well, that's a good question. Hmm." You've gotta love a response like that. He doesn't know? Hello, yes, I'd like to hire you to do something but I'm not sure what yet. Could you sign above the dotted line here? Yes, I know the form is blank, I'll fill in the rest of it after you sign.

He pauses for about a minute and then says, "Some sysadmin stuff, some coding, some database design." I start typing that I'm pretty busy right now.

He gets his sentence in first: "We're trying to build a suite of tools to sell to third parties that collects public information off the internet about a desired individual, for example their interests and e-mail address."

"Third parties as in dating software, or third parties as in spammers, or third parties as in stalkers?" I'm so polite.

He doesn't read my question before continuing: "I've heard that you have some experience with information extraction from search engines. This would be very helpful in this position." Then there's a pause as you see him read my above question. He starts typing, deletes it, starts typing again, deletes it again. Cheers to MSN Messenger for letting you see these things.

Finally he answers: "Yes, online advertising agencies mostly." Spammers. Just say it.

"Ah, okay. Well, you know what, I'm pretty busy right now. I'm working, going to classes, and on a bunch of committees and that sort of thing..." Do I say it? Do I make a comment? "I've also got some personal issues with spam software." I said it. But don't lose the contact. "But if you've got other projects in the future and I'm less busy then, I'd love to hear from you." Suuuuck uuuup...

"Aw, too bad. What are you doing after you graduate? You're in 4th year?"
"3rd. Of 5. And probably grad school."
"Taking time off first?"
"Doing it in 5 years is my taking time off. I'm just doing work at the same time as classes, rather than after them."
"You sure you don't want in on this job? The pay is very sweet."
"Yes, but thank you for thinking of me."
"It's a nice opportunity. You're only getting older. Take 'em while you can get 'em."
Pushy fucker. "Heh, thanks, but I'm sure I'll be alright."

You're only getting older?? What the hell does that mean? I could take five years off, sit in a box in someone's attic, and then return to third year university, and still would be approximately the same age as everyone I hang out with there. You're only getting older. Sheesh!
 

Feb 09th, 2004 - Three stunning reviews: Firefox, coffee, and Chromatron
A few days ago, I made the statement that the Firefox (then Firebird) browser continuously surpasses my expectations, but some of you were cynical. "Firebird is bad", one reader so eloquently put. "What's that flaming burd [sic] browser thing you were talking about on that website thing of yours?", said another. I've decided you're all drowning in your own ignorance. Therefore I make this offering to you: ten reasons why you should be using Firefox.

As for coffee, coffee is great. I don't know how I ever lived before coffee. Do I say the word coffee a lot? Coffee. Coffee.

Chromatron is a free game available for Windows and Mac OS X (sorry to everyone on Linux) that involves bouncing various colours of lasers on a grid against a variety of mirrors, splitters, benders, etc., while trying to hit certain targets and avoid others. Read about it on a FOAF's blog on Friday and I've spent a few hours throughout the weekend wrestling with it. I appreciate the kind of game that you can walk away from and reflect on throughout the day, and then come back and attempt some of your genius (though often inadequate) ideas. Not too hard and not to easy, I managed to get through the first 12 levels of 50 in a short amount of time and they're quickly getting harder and harder. Good, I like a challenge. Unfortunately, this is also the type of logic puzzle that brings people to tears, violence, and insanity. If I don't think of a way to get this green laser past the red target in this level soon, I fear there will be dents in my monitor by morning.

Countdown to reading week: 5 days
 

Feb 10th, 2004 - If ten people use it, it's not a 'popular' word
Slashdot this morning covered MSNBC covering the Washington Post covering a local newspaper covering a stupid story (I'm not kidding about this chain). I hate when this happens. Each news agency assumes that the one before it checked the story out, so it gets through. (Kind of like all those reports on Internet Censorship that drive me up the wall -- did you check anything before you wrote this article? Did you? No. So stop writing about rumours. There are plenty of real juicy details for you to write about, stop focusing on the untrue rumours.) In this case, they're writing about a new popular term: "google dork". But you know what? Google thinks that only ten people have used this little term so far: the person who was being interviewed for this article, and then nine people quoting him. Guess what? That doesn't make it a popular term! That makes it a word someone invented that hasn't propagated yet.

Anyway, his point is all about using Google to search for information that shouldn't get out.
MySQL passwords
Plaintext passwords
Trillian MSN passwords
PGP keys
etc. All the rest that I've been giggling about for years now. Absolutely nothing new, except for this guy's term. Wow, well, there must be a sudden rise in people using Google to "penetrate helpless systems". Get over yourself. Speaking of media reports, been asked to do yet another interview, for the Globe, but like the Ottawa Citizen one, it's for non-work related reasons -- but I don't know what those reasons are. I'm as confused about it as that sentence sounds. Topic hop!

Finally riding my bike again to campus! It feels so nice, after spending months stuck on a stuffy streetcar. Swerved around two jay-walking peds, nearly got doored, and was practically squished between two cars who decided to overtake me on both sides simultaneously. Wow, I'd forgotten all the fun of biking on College. Plus with huge snow banks and ice on the roads, it certainly feels more like an exaggerated video game than biking to class.

*sigh* I'm tired, slightly cranky, and wish I didn't have so much to do over the next couple of days. But lots of fun projects in the works for me to spend my time thinking about.
Countdown to reading week: 4 days

Update: If you're looking for some way to spend your time (perhaps recovery for those of you who were awake at midnight still playing Chromatron last night -- there were at least half a dozen of you) you should check out some of the totally kickass films at AP Film Fest. From 2002 I highly recommend "End of the Rainbow", and "Easter 8", and 2003's "American Openfist" is absolutely classic. There, Graeme, there's your damn link. Sheesh.
 

Feb 11th, 2004 - "Oh c'mon, this is stupid"
...I repeated. I was in my PolSci tutorial, feeling particularly snippy because the class was having silly little debates back and forth and it was a waste of time. Especially because we were discussing cybercrime and most of my tutorial-mates had no idea what was and was not possible on the Internet. There was little educational value in listening to two sides argue when both were using invalid points and not recognizing each other's faults. I'd spent most of it designing on paper what my assignment 2 would be in a third year computer security course. When my participation was requested in class, I declared that the debate activity was stupid.

"What would you have us do then?", my TA asked me -- very patiently, considering my attitude.
"I don't know, learn something?"
"Why don't you teach us then. Presentation next tutorial." It was supposed to be a threat.
"Okay."
"Huh?"
"Okay. Sounds like fun."
"Really?"
"Yes."
"You'll present? Just like that?"
"Yes."
"Really?"
"Yes."
"Have you given tutorials before?"
"Yes."
"Uh.....okay.......presentation for next tutorial on hacktivism."
"Cool. Can I leave now then?"

My Operating System class hasn't changed (no new content, still fearing arbitrary grades), and CompComp&Comp is challenging but not in that "ooo, I'm learning so much!" kind of way. More challenging in the "I wonder when the hell I'm going to have time to invest in figuring out what the heck these notes mean" kind of way. And 49x is, well,...I'm certainly learning lots. This week's lesson was: if you give yourself more coding work than you give your teammates in order to set a good example, this may seem like a great idea, except that you probably forgot about the fact that the time spent simply organizing them already uses up approximately as much time as they're putting in to do coding (if not more), and then you have to add your coding on top of that, and then add your extra coding ontop of that too. Oops.

(Bad thought: Hm, I should port Chromatron to palm os. Bring it to all my classes.)
 

Feb 12th, 2004 - Canta per me
Devoted an hour and a half Wednesday evening to making the first ten seconds of my next flash video. (Don't get excited; this one won't be done for a while yet, as I haven't the time needed to work on it. It's going to be slightly over 5 minutes long, and a thing of genius.) Anyway, it felt remarkably good to do something creative, even if it only produced ten seconds of footage. I think I've been seriously missing making these animations this year. For some reason, deciding whether I'm going to prove something by induction or contradiction is an inadequate creative outlet. Crazy, I know.

Bought a handful of books for chewing on during reading week: book of short stories, two novels, and two techie books. It's hard to stop myself from reading through them all now -- they're just sitting there, looking at me, wanting me to read them. Also, haven't touched Chromatron in an entire day. I feel like I deserve some sort of award for all this self-restraint. It may of yet be the death of me.
 

Feb 13th, 2004 - "Go socialize with your peers"
Greg headed downstairs to leave just as Tim walked up at the Peel Pub ("the one without the rats") and within ten minutes the place was flooded by CS undergrads. As Flo ran around failing at finding seats for them all, I hid behind Tim in a miserably failed attempt to avoid having to speak with stalker-boy:
"How are you [Catsy]?"
"Good."
"I'm going to get loaded tonight."
"That's nice."
"Want to split a beer with me?"
"No."
"You skipped class today."
"Yep."
"You're not scared of failing?"
"No."
"Are you an A+ student?"
"Why?"
"You seem really smart."
"Oh yeah? Did you extrapolate that from my one-word answers?"
"See? You say 'extrapolate'."
*sigh*

It was a different crowd than the usuals at CS events, which meant far more meeting of new people than I would have liked. Some guy asked if I was the girl from the undergraduate committee ("uh yeah, I guess that'd be me"), and if so, was I also the girl whose father was a CS prof and who was taking a 49x project course with Greg this term? How the hell do these people know this stuff? Don't they have something better to talk about? I hate people.

Later in the washroom some girl from another event downstairs (not with us) stopped me and asked if I was the girl from that TVO documentary and would I mind coming downstairs and meeting her friends because they were thinking of setting up an IT center in Central America and would love to hear my stories and could they have my e-mail address? Flo just laughed at me ("Look who's oh so famous!"). I hate people.

And then as it got late and people had more alcohol, someone I'd never met before that night brought up the topic of "why do all of the staff know [Catspaw]?", and someone said "She was in [flaps]' office all the time last year" and another said "before everyone arrived tonight she was drinking with Greg" (you were right) and well, I won't get into it, but have I mentioned that I hate people?

"I was having such trouble with CSC318 this week", someone was saying later. "It just wouldn't work right and it took me like two hours to debug."
"Yeah, I feel that pain." I nodded.
"You're not taking 318."
"No, but I spent 7 hours debugging today."
"Debugging what? My program was huge! Were you debugging some little C program or something?"

"No. I was debugging a Python program that worked perfectly under normal circumstances but as soon as I used py2exe to convert it into a .exe file for Windows, the gauge stopped incrementing properly. It was a multithreaded program where each thread added one to the increment once it finished a task from its Queue that drew objects from a central Queue, but for some reason in the .exe version the program finished without having added sufficient entries to the gauge, so it wasn't at the maximum. Plus py2exe upgraded recently and didn't work upon install so I had to tweak it in order to have it recognize that filenames with unmatching caps are the same file in Windows, and plus it doesn't handle encodings properly so when it hits Russian or Iranian HTTP headers, it refuses to process them unless I include the encodings libraries manually, in which case py2exe decides that I'm declaring more manually than I intend to and doesn't include all of the libraries that I need for the wx side to work, so I have to include those manually too. Then you've got threads that are dying on me for no reason I can see, because they're not dying when I'm calling this all as non exe-Python code, and that damn gauge is still not working, and it takes me seven full hours to track down all of the bugs, and seven of the eight bugs aren't in my software but in someone else's, and all the while I'm thinking to myself that if we just accepted our limitations, we could have had this software in command line Linux-only mode back in September, instead of trying to make it pretty, cross-platform, user friendly, etc., when we're not a software-producing company, we're a research institution, and something on command line would have been producing results for months now which we could be using this time to analyze and maybe actually produce a report rather than having me bash my monitor in frustration because no one ever teaches you how to debug this sort of hellish situation."

"Oh."
At least no one attempted to respond to that one.

It's almost reading week. I keep repeating it to myself. I need this one really bad.
 

Feb 14th, 2004 - Wanted: time machine
I've read more than enough stories to know that the worst thing you could possibly do with a time machine is go back and try to fix some mistake you've made (spoiler: you screw up history, you stupid idiot!). The second worse thing that you can do with a time machine seems to be going into the future to try to see how something is going to end (spoiler: something unexpected comes back with you). I don't want either of those: I have more than enough to deal with without having mutated humanity such that we all have teeth-covered arms growing out of our ears, just because I decided to go back and choose the braised lamb instead of the roasted chicken. (Who would have thought that Wednesday's dinner could have changed the course of humanity so radically, huh?)

Anyway, I don't want this time machine to move forwards or backwards in time, I want it to acquire more time, so that it becomes even remotely possible that I might get everything done that requires doing, before leaving Monday. Set my alarm for 7:30 this morning, grabbed a pair of rollerblades [1] and a CD, and got to work on doing dishes and cleaning the house. With tonight off-limits, I have a billion things to do, not the least of which is trying to get my 49x group to such a state that I can leave 'em for a week without worrying to death that they all need me for something and no work is getting done until my return.

[1]: If you do dishes without wearing rollerblades, you're doing it wrong. It's just not as fun and challenging -- nay, it's downright boring! -- when you're not on wheels.

On a completely different note (it's hard to smoothly transition from a footnote about roller-dishes to any other topic, except maybe roller-vacuuming, which is also fun), read through the blogs of five students from Jason's KMDI class that I gave a lecture to a week and a bit ago. Highly amused to see the differences between them: from what "morale of the story" they picked up from the presentation, to little things like what name they use to refer to me.

ilstate calls me "ML or KAT" and talks about how easy it is to break into accounts (though don't forget, ilstate, that almost all break-ins are caused by "insiders" like ex-employees), social hacking, hacktivism, and software writer accountability.

coolresearcher calls me "Jafffery" (which comes from the story of how I met Jason while known as Jeffery Catspaw, which I'm sure flaps can grin about too) and just lists two things I said ("hacktivism" and "hacking tools"), but apparently wants to do his second assignment on this stuff, so the brevity obviously isn't related to a lack of interest.

elise25 uses real name and "Kat" combo, and says "[Kat's] talk allows you consider how we really should question how the provision of information is governed, in that we need to know who are the creators, disseminators, manipulators of information, and so on, we discover that it is imperfect", and also discusses software writer accountability.

kyowl calls me "Kat" and delves into that difficult question of "whether publicly available information [should] be considered public information".

sunir doesn't refer to me, but talks demystifying hacking (also see his previous entry for more thoughts on the topic).

Everyone pulled something slightly different out of the talk, but it got people thinking, which makes me happy. Now let's see if I can be even a tenth as successful with this politics tutorial on the same sorts of stuff. Won't be as much fun without a Jason there to giggle at me, of course.

And lastly, because it's, well, y'know, today, I just have to say it:
Roses are red,
Violets are blue,
All my base,
Are belong to you.

 

Feb 15th, 2004 - Last entry for a week
Bags are packed, house has been cleaned, homework done, team met with, and now I head out for a week.

I'm lying, of course. Clothing is strewn on my bed (it's hard to plan for warm weather when you're feeling this cold), I've run out of warm water while washing dishes, most of my teammates decided just not to e-mail me back (no, that's fine, really, it's not like we have a lot of work to do in only a few weeks or anything), and I'm trying to print out an entire half-term of Operating Systems notes (thanks for writing all your code on the slides in light blue that a black and white printer doesn't pick up) so that while away I can study for our midterm that's the day after I get back (nevermind the other midterms and assignments due that week).

Go onto IM and two of my group members are there telling me about how they have this brilliant idea about how they're going to do the coding before writing the test cases. No! That's not how we're doing it. Test cases first. I explain why. They get it, but: "We're having trouble coming up with the test cases though." Then do more research first; plan before you start coding. I promised myself I wouldn't say anything about my team on insanecats (and I've been so good about it so far), but c'mon, surely they can handle this. Grr...

At the same time, the Open Source conference people are e-mailing me saying that they need website updates that absolutely have to happen before I leave or there's a chance that the world will explode. And where the hell is my passport? Clock's ticking.

Slogs says that the fact that me taking a week off has turned into a scheduling catastrophe is indication of something about the way I live my life. Just means that I like packing my life tightly. 21 and no serious nervous breakdowns yet. ;)

As for all of you: have a good week. Party hard (even if reading week doesn't apply to you), spoil yourselves, and -- sheesh! -- go find something to do other than checking for insanecats updates all day. This is it for a week, folks; if you run over here every morning, you'll see this same entry staring right back at you. You can console each other via comments if you want.

We all know you'll miss me. ;)
 

Feb 23rd, 2004 - For every answer there are two more questions
To describe my trip would take several screenfuls and since most of you are from the nintendo generation -- with the exception of a few of you old fogeys out there ;) -- I know that you have the attention spans of rabbits caught in a strobe light show, so I'll spare you the details. Suffice to say, it's quite cold here in comparison, and only the multiple cups of coffee Mud made me are keeping me awake enough to do all the work that grew like some sort of fungus on my desk while I was gone.

However there's nothing like staring out into the pacific ocean for hours at a time -- switching between the novel you're consuming at an alarming rate, and the pile of homework you "should" be doing, and just staring into nothingness -- for asking all those Big Questions.

- What the fuck am I doing with my life?
- Where am I going to be in five years?
- Why aren't I eating a big plate of fries right now?
- How do I do all I want to do when time's going so quickly and a lack of cred is holding me back?
- Could you get a glass knife past airport security?
- How can I justify feeling bitter towards northerners for exploiting the locals as a tourist attraction when the locals themselves are trying to increase tourism?
- Why does salt water wash out hair colour so quickly?
- Getting sand in your glass of coke sucks. (It's not really a question, but you can still reflect on it.)
- Should I just abandon both academics and the computer industry and get a job putting the handles on paint buckets at some assembly line?
- Is no one watching that child who is about to be hit by a seadoo? (Other than those watching for entertainment value, I mean.)

...and other deep thoughts. Anyway, despite having an awesome time, it's good to be back -- it's amazing how much I revert to inner narration when I don't have insanecatsers to tell stories to every night. Even when I'm just spewing garbage.

Hxd qjen cxx vdlq byjan crvn xw hxda qjwmb.
 

Feb 24th, 2004 - "Eez cat now."
Sleep evades me. I'm uncertain whether the blame should fall upon the massive amounts of coffee I drank, or our 16-hour travel, but the fact remains: I need to fall asleep but can't. It's 4:10 am and my alarm is set for frighteningly few hours from now. There's a lingering temptation to simply skip sleep altogether; perhaps it would be easier on the body to not tease it with so short a rest.

But, regretfully, time quickens considerably as the hour grows unreasonable. Learning, programming, memorizing, writing: these all seem to take longer at four in the morning. The sensation is not one of feeling laggard as much as it is comprised of the impression that the clock is simply moving unnaturally fast.

If I hadn't things to do in the morning, or a midterm to write at noon, I would accept my fated slow progress and begin the morning's work now, while my body refused to submit to sleep. But I need to be well-rested in just a few short hours and can't afford to work slowly tonight.

So I'll lie in bed -- counting primes, or designing a computer security course exam, or working out the details of the flash movie to come, or whatever my mind decides to try -- and hope the caffeine wears off soon. Knowing my luck, this will occur seconds before my alarm breaks the peaceful silence of my eventual sleep.

Coffee should bear warnings upon its label: "Will keep you awake, but at a price. It delivers what it promises."
 

Feb 24th, 2004 - Smuggling out scrap paper
This is the story of my Operating Systems midterm. When "10 minutes" was written on the board in the front of the room using the squeakiest chalk I think the prof could possibly find, I abandoned focus on the midterm, grabbed the scrap piece of paper, and took notes for this entry. You're not supposed to take scrap paper out of the midterm with you, and the TA was standing right next to me, so this was no easy smuggling feat either. I asked the TA a question on my page but leaned my elbow on the corner of the paper so she had to bring her head close to the table to read it, rather than being able to just pick up the booklet. Meanwhile I "accidentally" dropped my pen, scrap paper plus an extra sheet in hand, shoved the scrap paper between my lap and the desk, then lifted the pen and the extra paper back onto the desk in time for her to finish reading the question and look up.

Yes, I do know that if I spent even a tiny fraction of the effort I spent in getting that paper out, on studying, that I'd probably be a whole lot happier with my academic career. But, as I was recently reminded, grades aren't everything. Sometimes minor offenses like sneaking out your scrap piece of paper prevents major ones from tempting the mind.

But let's backtrack to why I bothered writing a copy of some of the questions onto this paper so I could take it out with me.

So I sit down at the midterm. There are over a dozen questions listed on the front page, with grade values associated with each. The midterm is out of 100. Of course, if you added the grade values together it only came to 99. Which I find reassuring. Yeah, sure, let's just magically lose a mark.

I get to a question and read it once, twice. Frown. I must be misunderstanding something. Read it again twice more. My hand goes up. The TA waltzes over to my desk and I explain the potential problem to her. She listens and reads the question once, twice. Frowns. She calls over the prof.

"What seems to be the problem?"
"This question. It's impossible." I show him the question:
P1, P2 and P3 are processes. R1, R2 and R3 are resources.
At t0, P1 holds R2 and requests R1; P2 holds R1 and requests R3; P3 holds R3.
At t1, P3 requests R1; P2 requests R2.
"There's nothing wrong with it", he shakes his head. "It's a deadlocked. That's the point."
"No", I shake my head in return. "It's broken."
I get a look like I just asked him what a midterm is.
"Look", I say. "At t0, P2 is requesting R3, which is currently busy. R3 is never released, meaning at t1, P2 is still waiting for R3. If P2 is waiting for R3, it can't go on and therefore never requests R2. But you say that it does. Therefore, P2 was being blocked by waiting for R3 and simultaneously advanced to the next line of code, meaning that requesting doesn't seem to block in this system, meaning there mustn't be a deadlock for any of the processes, since they can just keep going like P2 magically did."

He reads through the question once, twice. Frowns. "That's a very good point", he says.

I start a little victory parade in my head. There's balloons and streamers and people cheering on both sides of the street as the vanquished midterm is forced to be dragged across town in humiliation.

"But --", he continues, putting an abrupt end to my perfectly good parade, "this question is worth too much. I cannot take it out. Just answer it as best you can."
"Answer it as best I can? There's a contradiction in the very question."
"Just write what you think is right."

What happens when you're asked to presuppose a contradiction in a proof?

I felt like I should be drawing little unicorns and elves on the margins of my paper to go along with the rest of the magic that seemed to be taking place on the page. I decided to ignore the "P2 requests R2" line, in order to remove the contradiction. In retrospect, that was the wrong choice. Because now my answer will be different from everyone else's and I'll have to justify my case to a TA at some point in the future.

I did, however, find it slightly scary that no one else asked about the contradiction. Did they all think that it was fine that a blocked thread continued to ask for more resources at a later time? Doesn't this say something about what they're learning? sigh.

There were some definitions I didn't know the answer to, and I added some numbers incorrectly when making Gantt charts of the CPU schedule. I also probably messed up some of the reasons why this-or-that occurs. Meaning my mark isn't going to be anything fabulous. No one in the class recognizes our threads doing impossible things, and I'll get penalized for not spewing out textbook answers.

"If she sounds bitter, it's because she is."
This blog would be boring without bitterness though, wouldn't it? :)
 

Feb 26th, 2004 - They invented higher level languages for a reason, y'know
That's what I kept telling myself while I muttered my way through this assignment. It was programming an event-driven simulator of a CPU scheduler that uses one of several included algorithms: nothing particularly difficult or exciting. Except there was a catch.

Of course there was. There's always a catch. This time, it was that we had to write our code on-top of a template that was given to us -- a template I didn't particularly fancy --, and we had to write it in C. Except for a few small scripts for work, I hadn't touched C in almost a year. And even then, I'd only learned it a year before that. But let me back up a bit so we can include a more general audience in this rant.

The C programming language is kinda like making a cake from raw ingredients -- starting with harvesting the yeast and grinding the wheat. (Where Assembly language is like making a cake by putting all the correct molecules together.) Other higher level languages (like Python [1], Perl [2], PHP, Java, and all them) are like making a cake by adding an egg, water, and maybe milk or something to one of those ready-in-20-mins! cake boxes you can buy.

[1]: I lie. Making a cake with Python is more like having your own personal chef who can create an assortment of delicious cakes, customized to your every desire, at your slightest whim. Your personal chef also does his own dishes, lends you his pack of robot guard dogs, and thinks you look great in that sweater.

[2]: I'd argue that making a cake with Perl is kinda like throwing up in a cake pan and sticking it into the oven and then covering whatever comes out with lots of chocolate icing and hoping that no one notices what they're really eating.

Now, where was I?

So I'm sitting there, grinding the metaphorical wheat into flour, and wondering why the hell I can't just use the flour that's sitting in a nice little bag on-top of my fridge right now. I know that I could code these hundreds and hundreds of lines in only a small fraction of the time, space and energy, were I only allowed to use a higher level language.

Now I know that C has its place. If someone is coming over for dinner who doesn't eat white flour (like, say, reeuq), then you want the ability to make the cake from scratch so that you can customize the nitty-gritty of what's going into your cake, and maybe use wheat flour instead.

If you want to test our ability to harvest yeast, then sure, by all means, make us use the applicable baking strategy. But when you're trying to test our cake icing design and everyone I talk to is so busy trying to figure out how to make yeast grow and where they can buy a wheat-grinder, then you've got a problem. The icing gets slapped on last minute because by that time you're so tired of the whole ordeal, you just want it to be over with, and that's the part being evaluated.

Well, it's 2:30 am and I finally finished my C cake. I'm proud of it, having managed to create something tasty enough that you'd think it came from an easy-bake box. Sure, it was a good chance to refine my wheat grinding skills, but it most certainly wasn't worth it.

So, breaking out of this metaphor (it's making me too hungry), here's the real question:
Is it possible to have a course that has no required programming language? That you could write your assignment in Scheme or Perl or Moo or ten thousand friends holding up 1 and 0 signs or whatever other language you want, so long as it acted as a functioning black box? I'd like to think that the answer to this question was 'yes', but I'm dubious. Grading the top 20% of the class and the bottom 20% of the class with this would be easy. The hard part would be for those who almost got it. How do you evaluate how close they were if you -- the TA, prof, or programming police -- don't know that particular language?
 

Feb 27th, 2004 - Insanecats: 24-hour morning pages
"What are you going to do when you grow up?", someone I just met asked me today. I ignored the slight jibe ("because I'm just a kid now, right?"), mostly because I wasn't sure that it was necessarily false. Age is weird. But therein lies another rant, which is not for today.

Here's what I told him: I'm hoping for one of three things (this is an exclusive or).
1) I want to be the person that people read about in the history books about the 21st century who revolutionized the world ("how could people have even lived before Catspaw?", students will wonder in awe), or
2) I want to become an evil emperor, or
3) I want to go insane.

He gave me a look like the third option had already happened. "Uh, why those?"
"I dunno, they sound interesting."

The first option worries me because it genuinely feels like everything has been done already. There are plenty of trails to blaze, but they're all through someone's backyard garden, rather than into the wilderness. Above all else in life I want to make a significant difference, but it seems to be something that isn't just going to magically happen on its own.

The second option appeals to me because of the challenge of it: could I extend (what Lao calls) "this great morality you have that everyone likes, where you sound so evil" to a global scope? Somewhere I have a sheet of paper with all the countries I promised to everyone once I take over (if you're not on this list, you'll probably end up lion-food unless you start brainstorming right now as to why you're useful to me). I figure I could make an awesome villain. The most awesome villains are the ones where you find yourself genuinely tempted to join their side, because they seem to have all their shit together. The Kuja and Sephiroth of modern day. (Hm, I wonder if this means I need long silver hair and a slightly questionable gender?)

And, of course, the third option is a great fall-back. I think I'd choose intellectual-insane over drooling-insane. Writing prophecies on the walls, quoting ten digit prime numbers, borrowing books from the library and crossing out words until they form a new story. All that stuff. Of course, drooling-insane has its perks too.

It's funny the sort of sudden respect-fear-awe-worry you get from others once you state those to be your three career choices. Next time I'm going to say "docile housewife" and see what fun I can have with that one.
 

Feb 28th, 2004 - Is Open (speech) more Closed (accessibility) than Closed (beer)?
I had a little visit today with my old friend Mr. Brain. During a temporary power glitch, I was stuck between two subway stations today for about twenty minutes on the way home. Equipped with not even a sheet of paper or a pen, I just sat and thought. There's hardly enough thinking time in the day: I always find that I produce some useful or meaningful result when the time is forced upon me.

In the case of today, I was busy grumbling about GForge's inadequacy and somehow it turned into a more complex rant. When I got home, I decided to put my thoughts on paper (screen), in an attempt to make some sense of them all.

This is what I created: Fundamental Issues with Open Source Software Development.

It's nothing formal; just my way to try to make sense of all the wandering observations in my head. However I'd appreciate any thoughts you might have: agreements, disagreements, questions, solutions, comments about celery, complaints, etc. This is the sort of inquiry where I feel like my personal experience may be the bottleneck.
 

Feb 29th, 2004 - iBook prettiness
"Awww, that's beautiful." "It is." "Look at how sleek and tiny." "That's nice." "I'm drooling." "Me too." "I have bad news, dad. I can't graduate. I have to spend all my tuition money on this laptop." "I understand. Can I come over sometimes and look at it?"

This conversation took place over a year ago. And I notice that I still don't have the world's sweetest computer sitting on my desk. Ever since I first saw ads for the 12" iBook, I've been drooling over it. I resent all those who already have one (and I can count 8 people off the top of my head who I know who do) and myself for not owning one. I don't need it. I already have an old box that runs WinXP well enough and an even older box that runs Debian just fine. And at work there are more than enough computers for me to drool over, including (and especially) a particularly slick G5. When I had a functioning laptop, I never brought it to classes, so it's not like I need a laptop for that reason. So I'm guessing this is just some odd "geek toys" impulse that doesn't have to make rational sense.

But now it's a potential reality: the money's there, and the UofT bookstore is offering them on sale. Jason and Mud are both trying to convince me to get it: "Just buy the friggin thing. Either you're shit hot and $$ will come your way, or you'll bust and be flipping burgers. So no worry either way. Trust yourself half as much as you get other people to trust you." But I don't need it.

In my head I'm counting the $2000 (once the wireless card and three years of apple care have been added) in terms of McDonald Happy Meals -- the standard unit of monetary measurement this decade. Is it really worth 500 Happy Meals to me? Or 400 trips to Robarts' pasta? Or 3076 cans of coke? 3076 cans of coke is a lot: that would last me....what?....six or seven days? The point is: is it worth 3076 cans of coke to satisfy a geek toy whim that doesn't make rational sense?

I'd say no. But then I look at the photos and start drooling again. ARGH!
 

insanecats.com



CC License
Creative Commons License
Shameless hypocrisy
This is my personal blog. The views expressed on these pages are mine alone and not those of my employer.


Archives
2009:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep]

2008:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2007:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2006:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2005:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2004:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2003:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2002:
[Jan] [Feb] [Mar] [Apr] [May] [Jun] [Jul] [Aug] [Sep] [Oct] [Nov] [Dec]

2001:
[Aug] [Sep] [Oct] [Nov] [Dec]