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.
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.
[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.]
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!
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.
...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.
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.)
-- 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!
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
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.
...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.)
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.
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.
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.
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. ;)
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.
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."
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? :)
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?
"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.
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.
"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!
|
|