It's a scary thing when in your schedule of how you're going to get everything done this week, the
words "magic" and "miracle" appear as often as there are days of the week. The words "double
chocolate brownies" don't appear anywhere on the schedule, though I'm convinced that they work just as
well at getting work done as waiting for magical powers. (It's been many, many years, and I still
can't move that pop-can just by thinking about it. (Obviously I'm just not thinking hard
enough.))
Add into the normal schedule of balancing work and school (ie: this doesn't include my problem sets
and midterms this week): helping a masters student, and two PhD students, with questions they have
about hacktivism, the documentary, and third world technology respectively; answering some media
person's questions about being female in CS ("it's just like being male in CS, only minus being
male"); trying to conquer the growing pile of dishes done in the kitchen; preparing for a giving a
tutorial on Tuesday, and a presentation on Thursday; playing with Mota so she doesn't get cranky and
go live in Mud's room; an undergrad committee meeting, and a student-rep meeting thereafter; and
dealing with a computer that decided last night it was no longer going to load a number of
applications, specifically the ones that I always need.
"It's possible to get all this done," I said to myself, "if I find some magic way to clone fully-grown
versions of myself. And then convince them not to rebel and kill me."
It seemed like such a great plan. How could a plan like that go wrong? Turns out that clones are
soooo cranky. They also seem relatively upset about my plan that they all get obliterated when the
weekend comes around. "Look, you can complain about your imminent death after you're done
preparing the presentation on dynamic type representation." They just got crankier. Sheesh: clones
not solving all your problems. Who'da thought?
Random thought: FOAFOAF lives seven houses away from my parents, but they've never heard of him. Is
this a case of the world being small or the world being large?
Random thought: My project course has caused a large investment of my brain's real estate to be
dedicated to the contemplation of groupware, user interface, knowledge databases, information transfer
protocols, and the inadequacy of tools currently trying to provide all of them. The result? I'm
finding myself becoming the Jerry Fodor of groupware.
Random thought: When I was 10 years old, I decided I solved the P = NP problem that people hanging
around my house were always talking about. P had to be 0, or N had to be 1.
Random thought: from __future__ import finalExams
SyntaxError: future feature finalExams is not defined
.... damn!
Random thought: Prof Stein hugged my head and kissed the top of it today. It goes high on the weirdest
moments ever list.
Non-random thought: I'm sorry, Mario, but our princess is in another castle.
Bonus random thought: Iiiii'm saaaailin' awaaaaaay...
Seeking lifelong enemy. Job description includes foiling my plans, having yours foiled by me,
and fostering my permanent ambition and motivation for success by a desire to bring you to ruin.
Must be extremely clever and charismatic; can be on side of good or evil (I'm flexible). Creativity
and dramaticisms an absolute must.
Interested applicants should have extensive experience in creating flexible long-term plans that
involve extremely complicated manipulations of world powers to achieve ultimately simple ends.
Applicants who wish to play the role of evil should be interested in pursuing a cause that motivates
me to fight for good (helping the coca-cola corporation to take over the world is an example of an
unacceptable "evil" pursuit). Applicants who wish to play the role of good should look into acquiring
a tragic history that instantly wins the hearts and minds of the public, and simultaneously provides
an explanation for future sacrifices made in the name of a greater good.
The position is only open to those who are my equal on all levels, and can provide an adequate
challenge. It is acceptable for applicants to have sidekicks and romantic interests, under the
non-negotiable condition that they are swiftly killed in a tragic scene of violence and/or betrayal.
The title of "arch-nemesis" will be revoked at any time if the chosen applicant is found to be an
unworthy opponent.
Ever feel like your life would be so much more cool if you had an arch-nemesis? Or is that just
me?
This evening I was discussing with Jason his favourite topic for several years now: how could moos be
redesigned so as to fix all the mistakes that were made the first time? (I have several PhD-theses
worth of stuff to say about this topic; don't get me started. (The discussion led itself to Jason's
class, where Greg was giving a presentation that night. Giggled with some of the KMDI students and
somehow decided to stick around and listen (which turns out to have been a good arbitrary
decision))).
The University of Westminster Hypermedia Studies masters program has asked if I can give an online
lecture about moos. Another grad-level lecture. And UofT still is giving away their TA positions to
those more "qualified". *sigh*. cred cred cred. It always comes back to cred.
Have an idea for an undergrad course that would greatly improve the curriculum? Sure, we'll listen.
Just be the undergrad, then be the masters student, then be the PhD student, then do the postdoc,
make sure there's some industry experience in there, as well as several impressive publications, and
then come back and get a job with us, and after a few years we'll be happy to listen to your
suggestions.
I don't like doing things in the "right" order. So let's see how many steps I can skip, shall we?
As the Jerry Fodor [1] of internet groupware, I seem to have developed a talent for instantly finding
problems with the fundamental design of 99% of the groupware handed to me, and yet I have no
offerings of a better alternative, nor do I have the time to fix the existing software myself.
Today's example of this is the search for wiki software. For those of you fortunate enough to be
leagues away from the internet groupware world, a wiki is a webpage whose content contains a link to a
form where you can edit the content of that page. Those who think that wikis are the coolest thing
since rubbing dirt on cave walls will tell you differently, because wikis contain "web words" (read:
"html links") and "formatting rules" (read: "html tags") and "automagically crystallize collaborative
composition in a meta-editorial discourse" (read: "people sometimes post stuff, and then others agree
and post 'Me too!' or disagree and erase the first guy's stuff"), which obviously somehow makes them
special.
But let's say (not as hypothetically as I'd like) I'm looking for wiki software that can allow me to
do remote updates using a versioning system, instead of using the wiki editing form, and I want the
versioning system to be able to establish a secure connection. Searched through Twiki,
JSPWiki, Subwiki, Swiki and Quickiwiki, and didn't find what I wanted.
Zwiki holds some promise, but the documentation is bad and it requires a Zope installation just
to find out. Oh come the fuck on, wikis are all about versioning and none of them allow secure
versioning access? What the hell is wrong with this world? [2]
The search for decent groupware continues. Though I'm beginning to recognize the fact that it's not
out there. Guess I'll have to do the best of the worst thing. Hey, and all of you coders who
read this and are always telling me "I'm bored...gimme something to do", have I ever got the activity
for you! :)
[1]: Jerry Fodor is a cognitive scientist who comes up with absolutely brilliant philosophical
arguments to rebuke people's theories of how the mind works. Fodor's attacks tend to be
extraordinarily solid and just rip the theories to shreds. Unfortunately, he doesn't have very many
theories of his own to offer as an alternative, and of those that he does, they tend to not be
bullet-proof in the way that his attacks are. So Fodor is awesome for removing the clutter in
cognitive science, but just leaves a gaping void in his wake.
[2]: I don't know what's wrong with the world, but earlier this year I figured out what's wrong with the internet.
I want it. Until today, I didn't know that I wanted it -- in fact I'd hardly even bothered to glance
at it at all -- but now that I have, I want it. It fits so ideally and would be such a perfect stone
from which to leap, and it drives me crazy that I know that I can't have it.
CSC104. The title of the course, "The How and Why of Computing", sounds so boring that I nearly fell
asleep just typing it out right now. In first year I'd been so eager to jump into real,
non-self-taught programming (finally!), that I'd skipped the description of that lame-sounding course
entirely to get onto the "Introduction to Computer Programming" train (which turns out to have been
more like a dog sled pulled by dying monkeys than a "train", but I digress).
It wasn't until over two years later, when a call for summer instructors hit my desk (thump), that I
bothered to glance at the description for this course and some of the past course websites. This
course is intended primarily for students in the Humanities and Social Sciences. Social
implications of the technology, an essay assignment, AI, computer security, how computers actually
work, what computer science is, etc. Previous years' programming languages has been either
VisualBasic, Turing or Java. "Python would be sooo perfect for this," I thought to myself. "They
don't have enough time to learn what public static void main(String[] args) { means, but
Python...it would be so perfect." Ideas were popping into my head faster than I was eating Mud's
freshly baked brownies. (And that's a big deal!)
Intro to computers for humanities and social scientists? I am so all over that. Let me teach
it. Can I volunteer and do it not for money? Can I lick anyone's shoes? Who's ass do I have to kiss to
let them forget that I'm a little insignificant undergrad and be allowed to teach this course? One or
two terms of teaching this, and I'd so be ready to tackle the big fish.
I'm simultaneously inspired and frustrated.
Went to buy groceries today. When I got home and unpacked it, I realized that there was no frozen
pizza, kraft dinner, french fries, ramen noodles, or any other sign that I still preferred
university-style food to real, "grown up" foods. My grocery cart consisted of:
- bulla cake
- green beans
- frozen corn
- wonton wrappers
- whole mushrooms
- bean sprouts
- green onions
- leeks
- crab pieces
- steak
- peppercorn sauce
- chicken breast
- long-grain rice
- wild rice
- bowtie pasta
- cat food
- tulip plant
Gah! I think it's probably just a phase, and I'll be back to choosing between frozen pizza or chicken
fingers and fries, in no time.
On a completely different note, I'm having dinner this evening with the Dean of Information Sciences
at UofT. He's a totally awesome guy -- stunningly brilliant -- and though I only met him this year,
he knew me when I was juuuust born and could do little more than lie down all day, eat, drool, and
sometimes scream loudly. (Some things never change.) Anyway, I'm all hyped about this, because I feel
like I could just stand in his vicinity and would absorb his wisdom and knowledge by osmosis. Last
term at the KMDI Staff Retreat (which I somehow got invited to -- thanks Dr J), he impressed everyone
who I talked to. And I getta have dinner with his family, w00t w00t w00t. Okay, I'm done now.
Looking for a new way to kill all your spare time? Though a very
different genre from Chromatron, but an addictive puzzle game nonetheless,
MOTAS reminds me a lot of the King's Quest or Island of Dr. Brain
games (remember those?)
You can click here to play MOTAS, but I warn you that I will not be held
accountable if you waste the next 48 hours playing: Mystery of Time and Space
Adventure
Okay, this is a pretty funny or sad story (I'm not sure which), so I have to share it: I'm sitting in
class, making a little tree of the 14 half-courses that I have to take between now and graduation in
order to get my soft eng degree. The reason why this is so complicated is that I'm doing my degree in
five years and at the same time they're trying to change the curriculum, so courses I need for the old
curriculum are disappearing before I can take them, and the new courses require courses that appeared
after me. Plus the fact that I severely screwed myself over by taking classes in a billion different
departments so now ever single class from here on in has to be computer science. Yes, it's fun being
me.
Anyway, I decided to glance at a course called Programming on the Web, despite the fact that it
would be a waste of a term for me to take it, since it would be more accurately named "GForge: Lite
Edition", and I'd learn absolutely nothing new from it. But it turns out I couldn't have taken
this class anyway.
Programming on the Web has a pre-requisite that I don't have yet: Introduction to
Databases. That's okay, I have to take that class at some point (even though I'm slightly bitter
about having to.) But wait! I can't take Introduction to Databases yet. Because I don't have
all the pre-requisites. Before I can take Introduction to Databases, I have to take Data
Structures and Algorithm Analysis. It gets better. I can't even take Data Structures and
Algorithm Analysis yet! Before I'm allowed to take that, I have to take the Statistics for
Computer Scientists course that I missed last year.
Let's go through that dependency tree again: I have to take stats before I can take data
structures which I have to take before I can take databases, which I have to take before I
can take programming on the web, which contains very very basic web programming content that I
could do in my sleep.
Doesn't anyone see anything wrong with this picture??
Anyway, for those of you who care, here's what I'll be doing over the next two years, keeping in mind
that very few of these were choices (doesn't mean I won't like 'em, just means I didn't choose 'em):
4th year:
Statistics for Computer Scientists (1st term)
The Design of Interactive Computational Media
Numerical Methods
Microprocessor Systems (Steve's course)
another Project Course
Computer Networks (2nd term)
Data Structures and Algorithm Analysis (2nd term)
5th year:
Introduction to Databases (1st term)
Information System Analysis and Design (1st term)
Software Architecture and Design
Introduction to AI (or Hinton's neural networks course that he wants me to take)
Formal Methods of Software Design
Compilers and Interpreters
Software Engineering (2nd term)
Happiness or sorrow will be entirely about distributing the stupid courses evenly among the cool ones,
and trying to leave enough wiggle room that I get the good profs. Any of you feel like helping me
convince certain undergrad associate chairs that I can skip some of these? :P
I came home this evening to find an open box of Lucky Charms cereal on Mud's desk. "Alright!!", I
exclaimed -- grabbing several handfuls -- and went running into my room to sort by marshmallow versus
non-marshmallow (eating the boring cereal first), and then by marshmallow type according to colour.
Growing up in a household where even Honey Nut Cheerios were considered to be unreasonably junky
cereal (cue the Ender/fLufFy/Mud childhood sob stories), there's something that still feels forbidden
about eating this stuff. That was my happy moment of the day. In contrast:
Ten things that pissed me off today...
- py2exe. One day I'm no longer going to have to use that piece of crap software that never works
with any python program longer than "hello world". And that day will be a good day and there will be
much rejoicing.
- Students who are trying to get elected on campus, for various student government bodies, with
horrendously stupid platforms, but no one seems to care or question them.
- When I got a working script that could demonstrate the concept of proxy cache poisoning...and
there was no one around who would appreciate this super cool concept. :(
- People who vote for a government that increases tuition fees, and then complain about raised
tuition fees. Even if some rates go down in the future, I hope yours stay up, moron.
- Streaming media formats that require unproportional amounts of work to save to disk.
- Having to be polite to sexist/racist/homophobic/ableist jerks, just because they're "important"
and one day it might come in handy for them to like you. It may have seemed like a good idea at the
time, but it's never worth it.
- Knowing I'm going to have to take a 2nd year course in the second term of my 4th year and there's
a very good chance I'll be in my brother's class.
- Getting asked out by someone who I think is awesome but don't want to get asked out by.
- Biking along College where they've closed off all but one lane so you have to bike in the 5
inches between pylons and the streetcar tracks and if you go too far right you hit pylons and fall
into new tar, and if you go too far left you hit streetcar track and die, but the cars behind you are
impatient about being behind a biker in a single lane, so you're biking at full racing-car speeds so
that you're caught up with the car in-front of you, but you're going this fast on just 5 inches and
will probably end up dead just because you're allowing yourself be peer-pressured by the damn cars.
- GForge GForge GForge. Need I say more?
I think I'm catching the flu again. It's my body giving me the finger and telling me to get some
fucking sleep. (You can tell I'm feeling fluish when I start getting crass for no good reason.) So I
won't go in to work today (I sat in my work chair for 12 hours straight yesterday), will skip a
seminar I wanted to attend, and that'll give me extra time to do school stuff, and I'll be happily
back on track and maybe get some sleep tonight.
Yesterday I went to go meet with UofT's accessibility technology group, to see if I could help them
out in any way. Got to learn about lots of the cool stuff they do, but it's been a while since my
help has felt so unwelcomed. We left it on the terms of "well, let me know if I can do anything to
help in the future then" and this morning I got an e-mail with some research the lead said I could do.
However it feels more like he's handing me busy-work to shut me up than actually wanting volunteered
help. So now I'm stuck. The last thing I feel like doing is adding another thing to my plate
if it's going to go unappreciated and unwanted (I'm not some little useless student with just too much
time on her hands, jerk), but at the same I feel like it's a worthy cause that I wish I could help out
with. *mutter*...
Also skipped all my classes yesterday, though I had every intention of going (I think), when a recently
graduated CS student from UofT connected to the Citizen Lab chat from China. That's too big of an
opportunity to give up. I found him a working proxy that China hasn't blocked yet, so he could use it
to access BBC news, and he said he'd be willing to run some censor-checking software. The past year
of my work is put to the test: how fast can I use the various tools I've made to whip up a
China-specific censor-checking software package where all he has to do is click 'begin'? Answer: 8
minutes. As Graeme'd say, if my tools were people I'd be makin' out with them right now. Very, very
pleased with how smoothly that went. 8 minutes instead of months of work.
And then at the end of the day I was supposed to attend the filming of Going Global (political TV
show) as an audience member. Instead, I decided to play the VIP card (Stein counter: I've now been
kissed on the head twice by Prof Stein) and went downstairs to watch the crew of a dozen people put
the footage together live. Now that was cool. Learned far more watching them than I would
have learned by watching half a dozen politicians argue about accountability.
Later today my group has to give a demo of what progress we've made with GForge. I feel like it's
going to be a demonstration of Murphy's-Law-on-crack. Apparently the laptop we're presenting on
sometimes simultaneously decides that it's going to act as its own DHCP server, then break, and then
not allow connections to localhost, which is where our demo is going to be hosted. Oh goodie.
Today I'm giving life a solid B+ with a comment in the margins: "You didn't show that all the events
you discussed really amount to a systematic, consistent and structured effect on anything beyond the
scope of your paper."
By the time 2pm hits, I've had three cups of coffee and a can of coke, and
nothing to eat; I've got the giggles, bad, and find it extraordinarily
funny that my hands are shaking. It's a fairly normal day at the Citizen
Lab.
Today's primary task involves designing a way to record the mounds of
complicated, interconnected data that our various programs are going to
start getting back. The debate is between storing them in a database and
storing them in XML files, and neither seems to be perfect: there are
simply too many complicated little relations. Eventually we map out a
database layout and design how a bunch of scripts are going to figure out
how to insert data into this twisted maze. I pity the person who is going
to have to extend or change this format in a few years (probably me
;)).
Then I decide it's about time to reformat the Windows box I use for
development: somehow it's also become the "public" computer when guests
visit, so it's cluttered with shit and probably rolling in trojans.
Backup everything and wipe the drive clean. Of course (of course!)
somehow the backups failed and the filesystem got corrupted. But all the
files are there, so next comes the fun of manually extracting them one by
one and storing them on G's box. A few installations later, WinXP was up
and happy with all of its original programs and files, but only after I
shouted "G! Help!" a few times. I felt like such a wuss. Of course then
I pulled together a python script to save his ass later in the day, so now
we're even.
Work next week is gonna be cool: lots of programs to write to talk to our
new database format and a brand new shiny OS to work with. But I promised
myself that I wouldn't skip any classes next week: this week I only
attended half my classes on Monday, none Tuesday, none Wednesday, half
Thursday, none Friday. Bad habit, bad Catsy. But apparently I'm still
doing well in my courses, so I'm not too flipped out about it.
8 pm rolls around and I'm still at work on a Friday night. I should go
home and start my essay that's due on Monday. Or maybe I should go home
and take the evening off: Mud's promised movies to watch and indian food
for dinner. But I'm already planning to take Saturday night off for
dinner with Megan Boler (whom Jason recently told I was the "most
dangerous person in this university" -- so I wouldn't want to disprove my
new reputation and not show up), Julia, Jason, Yuka and Hossein (of hoder fame). Maybe I'll take both
nights off though. And then curse myself the next week when I have to
pull three all-nighters.
Current music: the background music of Graeme playing Halo next to
me (it's actually really good music! And except for the loud gunshot
noises as he blows enemies to smithereens, it's quite appropriate to
program to.)
Current book: GGK's latest.
I blame Ender entirely.
Current drink: Another cup of coffee. Less shaking now though,
after I ate lunch.
Current windows open: CDF e-mail, #citizenlab chat, Cygwin setup
(still installing), ICQ to flaps, MSN to Lao, this window, IDLE Python
editor window and shell, phpMyAdmin, and Nmap.
Current health: Slept for 10 hours last night (see, Mud?! I'm
trying!!) but still woke up with a splitting headache. All the caffeine
today made it go away though.
There's something fundamentally different between waking up in the morning and knowing that you're
going to spend the day writing, and waking up in the morning and knowing that it's a programming day.
Though I love the programming days (don't get me wrong; I'll drool over the chance to write a sweet
piece of code as much as the next geek), the writing days are so few and far between recently, that I
can't help but appreciate them when they roll around.
This politics paper is worth about as much as my half-year courses' exams, so it gets two full days of
attention. (This is when jayne starts laughing at me, since she's been done her paper for over a week
now.) I've got books on my floor to flip through, a stack of paper to scribble on, a nice pen to write
with, an Open Office document open and ready to go, and a large mug of tea to sip on. Writing days
get tea; programming days get coke; work days get coffee (unless they're programming-heavy work days,
in which case they get both coffee and coke). To consume the inappropriate beverage would be
disastrous.
Flipping through the iTunes radio stations, trying to find something suitably inspirational, something
suddenly occurs to me: this may be the last essay that I ever write for a class. The rest of my
university courses have to be Computer Science ones (no choice about it). "I'll just have to make
them let me take some humanities in grad school", I chuckle to myself. Problem solved.
Back to the essay day.
I hate being a crew member on a sinking ship and not being allowed to point out that we're drowning.
The Open Source conference that I'm on the planning committee of (amused that my affiliation is listed
as the Citizen Lab with Deebs, rather than Comp Sci with the CS profs) is such a ship.
When I say that it's sinking, let me clarify what I mean: we have a pretty good list of speakers, from
a fairly wide assortment of disciplines. There's at least half a dozen people on the list who I would
describe as someone who I'd really like to meet. So neither speaker quality nor quantity is a
problem.
The problem is the fact that right now we have less than half as many people signed up to
attend, as we have speakers. That means more than two speakers for every attendee. At first, I found
this astoundingly amusing. Then my amusement turned into concern. Now it's back to grim
amusement.
The committee is convinced that if they just wait long enough, all of a sudden a few hundred people
will sign up. There are multiple reasons why so few people have signed up: they don't know what
audience they're targeting so instead they're targeting no-one; it's too costly to attend; it's a
bad time of year, conflicting with a dozen other events; they're not doing the right kind of
advertising; etc. There is no few-hundred people just waiting to sign up at the last minute: the
committee is deluding itself.
But I sit there silently. This is not the time to be "too loud, too early". The little insignificant
undergrad, who technically shouldn't even be on the committee, will offer lots of suggestions, but
only ones that everyone will agree with: "Instead of paying $10,000 for an online credit card
processing service, why not just use Paypal?" I won't voice all the other stuff going through my head:
You said you wanted the target audience to be policy makers, so why haven't you invited any?
It's too early to be that loud. Observe only; manipulating can come in future years.
I can be silent and patient and learning, storing all the mistakes I observe in a large index in the
back of my mind...but it annoys me nonetheless.
I absolutely froze when I saw him. He was sitting on a bench, waiting for the same streetcar that I
wanted to wait for, watching the traffic go by. He hadn't changed at all in two years, not even a
bit, but I looked very different; wasn't sure if he'd recognize me.
He did.
"Hey.....[Catspaw], right?"
"Uh, yeah. Hi."
What do you say to an ex-TA? What do you say when it's an ex-TA and the last time you saw him, you and
he were having a yelling match? And the last you'd heard of him, he was being disciplined for trying
to fail you and another guy in the class because he didn't like you both? When you can still remember
him saying "Who is going to believe a random first year student?", and you were laughing because he
had no idea that of all the CS students in the department, he'd picked exactly the wrong one to
challenge. What do you say, two years later? You say nothing and let him do the talking.
"You were in my 148 class, what? Three years ago?"
"Two."
"Oh, so you're in third year now?"
"Yep."
"Doing well?"
"Yep."
At this point I was still just stunned that it was actually him. There are some people who you assume
disappear into oblivion and you'll never hear from again. But we both remembered how the term ended.
His friendly questions didn't last long.
"So, I hear that they remarked your project."
(So, I hear they fired you.) "Yes."
"Mind if I ask how you did?"
"A+"
He was quiet for a few minutes, digesting that. We watched the traffic go by. I was wondering what
sort of noise it would make if I pushed him into the road in front of the speeding cars. Probably more
of a thump than a splat.
"What was it that I'd given you?"
"I don't remember. Something in the 40s. 42%?"
"Hrm. I guess the 90s is better than 40s."
"Yeah, just slightly."
I was curious what he was doing with his life. He was a third year student when he was my TA. Was he
a grad student somewhere now? I wasn't about to ask though: the first-year me would never forgive
third-year me for acting like I even remotely cared if he was dead or alive.
So we waited in silence. When the streetcar finally arrived, there were two of them, one right behind
the other. He got up and got on the first one, and I waited until the second one. We didn't say
anything else.
The entire ride home, all I could think about were all the cruel things that I should have said. I
should have made him squirm. I let him off far too easy.
I wonder if he's thinking the same thing.
t00 b3 p3rf3c7ly h0n357, 3y3 t1hnk th4t 3y3 4m 5imp1y t00 tir3d t00 ri73 0u7 a prop3r 3n7try 4 j00 411
t00 r34d. 3y3 h4v3 m4ny 7h0u9h75 r04min9 4r0und in th4t w3ird 1i7713 h34d 0f min3: 50m3 53lfi5h, 50m3
4c4d3mic, 50m3 73knik4l,...bu7 3y3 d0n7 t1hnk t4ht 3y3 h4v3 t3h 3n3r9y t00 pu7 t3hm 1n a f0rm4t t4ht
c0u1d pr0vid3 4ny in73r3s7 t00 j00 wh47503v3r.
3y3 c0n5id3r3d ju57 5kippin9 70d4y'5 3n7ry, bu7 t4ht'5 wh47 h4pp3n3d y35t3rd4y, 4nd 3y3 f34r i7 m4y
c4u52 a b4d 7r3nd if i7 h4pp3nd5 t00 fr3qu3n71y. 1337-5p34k i5 4 g00d 35k4p3 fr0m h4vn9 t00 b3
s3ri0us. wh3n 411 t3h "bi9 qu357i0n5" 4r3 90in9 7hr0u9h y3r h34d, bu7 y0ur b109 (t4ht, btw,
c3l3br4t3d i75 fiv3 hundr3d7h 3n7ry l457 7im3 3y3 wr073) i5 7ypic411y fu11 0f 0n1y j0vi41 s4rk45m,
50m37im35 t3h 0nly 7hin9 t00 d0 i5 ri73 in 1337.
h3nc3 t0d4y.
n0 m4773r h0w b0rin9 t3h und3r1yn9 m355493 i5, i7 wi11 4lw4y5 b3 m0r3 4b0u7 t3h 14n9u4g3 t4ht j00 54y
i7 in wh3n j00 54y i7 in 1337. "3y3 0wnz j00!"
(By the way, I get quite a laugh from my DVD player that displays "r00t" on the screen whenever it
shows the root menu of a DVD. I'm not sure why it should amuse me so much, but it does.)
Around 7 pm last night I opened up a Flash window and started playing around. Five hours later I was
still working on my latest movie. Goddamn it! I so did not have an evening to kill. Now I
have to set my alarm for 6 am tomorrow in order to finish work on an assignment that's due at 11 am.
*sigh*.
At least I was productive with respect to the movie. Over two minutes of footage and I'm happy with
where it's going. Unlike last month's project (which got moved to the "Abandoned-Flash" folder), this
one might make it past the impossibly harsh critic who is me.
Tomorrow's (today's? -- Thursday's) schedule:
6 am: Alarm goes off and I wake up horribly confused. Zombie-walk over to the coffee pot and
hit 'start'. Sit down on my chair and stare at the screen for about 20 mins before I remember that
I'm alive. Then I somehow fumble together a poor excuse for an operating system assignment.
10:30 am: Head off to campus to drop off this assignment.
11 am: Go into the lab. Fix up the scripts I was almost done on Tuesday, and get started on
the new batch.
2 pm: Skip class because work is going so well.
3 pm: Meeting with a grad student to discuss (suspense music!) being female in computer
science. I'm feeling sooooo typecast right about now. Everyone wants a female CSer to interview.
I'm no longer an individual, I'm just the representative for my gender in my department [1]. I think
this should become my full-time job. Plus, every time I object and say "you don't want to interview
me, I'm an atypical female so you'll get bad data" they just want it even more. I think I'm gonna
start telling people that I'm a dude in really bad drag.
5:30 pm: Meeting with my group to ensure that they'll be able to produce for me what they say
they can produce by Monday. I'm cautiously optimistic.
6 pm: Class for two hours.
8 pm: Walkin' home and then crawling into bed and getting some sleep for once.
[1]: It's been pointed out to me that I'm not doing this for me, I should be doing it for all the
potential-CS females out there. Alright, fair enough. I sincerely doubt that recounting the story of
my relationship with technology is going to help this at all, but if someone out there can somehow
transform my narrative into useful data that will actually work towards this cause, then I shall be
compliant and provide all the little stories that they could possibly want. It's not that I don't
think that this is a worthy cause, I simply don't think that studying me is going to get anyone
anywhere. I mean, c'mon, we all know how weird I am... ;)
What does your day entail? (See, this is the interactive part, where I ask a question at the bottom of
my entry, and you can all answer in the little comments section, and fool yourselves into believing
that we're a happy, loving community.)
One of the thing google still needs to provide me with, before I hand my soul over to it in a pretty
little envelope [1], is a mechanism for searching for sounds. Those of you who have been
insanecatsers for long enough remember my search for the legendary banjo song (yes, I know I keep
talking about it, but let's face it: that was a pretty damn amazing feat).
Whenever I'm in the middle of a good flash movie, I find that I spend a crazy amount of time searching
for just the right sound effects. I'm sure if I were a proper professional I'd be making my own, but
c'mon -- I make stick-people movies and can barely record my own voice without tons of crackle from
the microphone. Cut me some slack.
Here are the sounds I'm currently looking for, feel free to do my work for me:
- the sound of a very heavy object swinging past slowly (the 'whooooooooooomph' noise)
- the sound of the thump of a heavy stamp falling, possibly on a stack of papers
- the subtle noise of elevator doors opening (not the bing, the mechanical noise)
- various skateboard-in-motion noises (stopping, starting, falling, slow, fast, etc.)
- a llama trying to use a crowbar but having trouble gripping it
...well, no, I'm not really looking for the last one. But don't you wish I were?
[1]: Speaking of giving google my soul (though it has nothing to do with sound-searching), I saw yet
another google ad of them searching for a python programmer. "Yes! I'll leave everything behind! Take
me!" But although I would luuuhve to work for the company I fawn over, it just wouldn't suit my path
to world domination. Shame.
Question I was asked today: Use five words to describe yourself.
My answer: I need more words to
My sense of humour wasn't appreciated.
Oh, and for those who are confused by the title, I highly recommend leaving this running overnight. It'll do wonders for your sense of sanity.
I feel better already. (I can do anything!)
Gah, had my first exam dream of the year. You know the ones: for some inexplicable reason, an exam
you're writing goes extremely wrong. Rumours have it that these don't go away after you stop being a
student.
In this case, I was writing some Python program on paper with pen, and suddenly I look down and...uh
oh! I haven't been writing code to handle CPU scheduling like I'm supposed to (I guess this is my
Operating System exam, despite the Python), I've spent the last two hours writing code to use Google
to scan for CPanel websites and unload an SQL injection on them, then e-mail me every hour with a list
of sites that it was successful on.
I was trying to explain the situation to the TA, but he kept repeating "well maybe if you'd been to
one -- and I mean just a single one -- of our tutorial classes, this wouldn't have been a
problem."
Pah, and people say I don't have guilt about skipping those.
Anyway, by the end of the dream I'd decided that the only way I was going to be able to pass this exam
was to write code that deleted random lines from all the programs in the directory, and then rewrote
its own code to look like it wasn't malicious. That way if a TA typed up all our programs and
executed them, everyone else's program would break, mine wouldn't look like the guilty party, and
they'd have to grade curve the exam. (The fact that these were stored in hardcopy format apparently
hadn't occurred to me.)
Isn't it kind of early for exam dreams to be starting already?
I think Mondays get a bad rep. Personally, I don't see how Mondays are different from any other day
of the week: either I'm sitting at home programming and doing homework, or I'm sitting at work
programming, or I'm sitting in class getting assigned homework. They all have the same sort of theme
to it.
Tuesdays and Thursdays have traditionally been good days for me: they tended to have the least
"someone please kill me" curriculum when I was younger. Wednesdays and Fridays have the same schedule
this year: a small amount of class, hanging out at work the rest of the time, often skipping that
class.
But the weekends? Where did "time off" go? Do I have to wait until after my postdoc before I start
getting some of that? I suppose this summer I could not pack my schedule so tightly that I
never see a free weekend and could actually hang out with some of those friends I never get to
see....
......Nah.
Too much to do! Life is short! I'm already so far behind: wasn't I supposed to have taken over the
world over two years ago? sigh. I'm falling behind...
I need a themesong to follow me around. Maybe that'd help.
"Hey, where'd you get the FireFox MacOSX theme?", I asked Graeme, leaning over to get a better look at
his monitor. All of the tabs and forms looked exactly like he was opening a browser on our G5, not
his trusty XP computer.
"It's not FireFox," he responded, minimizing his browser and revealing a very OSX-looking Notepad
document underneath. "Everything's like that."

Sure enough, it was. From the fonts to the blue-bubble-buttons, it was only the standard Windows
documents that he had open that convinced me that he hadn't hooked his monitor up to the latest
version of OSX.
I took the screenshot on the left from my WinXP box.
The program's called StyleXP and a crack is available at your favourite warez site (which probably
also has free versions of the software that you're trying to make a living from selling). Or, if you
have some sort of issue with stealing, you can purchase it at tgtsoft for $20 US. Or, if you refuse to support non-free
software, you can code your own and if you could get it working on Linux, you'd probably win over both
KDE and Gnome's market.
Important: It should be noted that they have two versions of the software:
one for each gender. You think that I'm kidding, but I'm not. For females, they have a lovely
pink flavour of desktop theme. I seem to have "accidentally" downloaded the really cool OSX Panther
theme from the "Men" package, instead of the lameo pink crap from the "Ladies" software package.
Oops, how careless of me. This has nothing to do with my article, it just made me laugh.
Anyway, for those of you who like XP (like Graeme) or are forced to spend all your time on XP because
you develop Windows-friendly applications (like me), I highly recommend giving this theme a try. It
really feels like you're working on a Mac, but without a solid Unix backend, or that happy "nothing is
going to crash on me" feeling.
(09:14:21) fLufFy: i feel very catspaw this morning
(09:14:27) Catspaw: giggle
(09:14:31) fLufFy: i'm here. i gots my muffin, i gots my juice. i'm happy.
I've found that the secret to happiness when you're the sort of person who's always busy doing
stuff, is by being easy to self-satisfy.
Want to impress me? My expectations are very, very high. Want to challenge me? I don't mind working
as hard as it takes to drive you into the ground. Want to criticize me? Better watch your back, cuz
I'm liable to return fire.
But want to make me happy? Now that...that is simple.
This morning I've got a pair of HappyFeet slippers up on my desk, a
mug of tea in hand (writing day) -- I'm munching on some good cereal, planning through tasks for my
teammates for the next few weeks, a cat on the lap, and the sun's just starting to peek over the
neighbouring buildings.
For a few moments, until I think of something that pisses me off, happy.
Teaser: 75km to death or 50km to semi-death? And, workshop on inverse surveillance. And,
Pyzzle. And, OSConf update. All this and more, tonight on 60 minutes.
[ticktickticktickticktick...]
Commercial break: "I like to destroy property: drink beer!", "Your hair is frizzy: buy our
shampoo!", "My kids have scurvy: buy orange juice!", "You hate your life: use tylenol!"
First story: Charles, a guy who is in one of my classes every day of the week, is helping to
bring a bike event for the Heart and Stroke foundation to CSers. I've already given him the "I'm on
board!" two thumbs up -- it's for a good cause, and they're closing the big Toronto highways for us
to bike on; coooool! -- but some important questions remain. Namely, what quantity of killing myself
am I going for here? (Bet you didn't know that death could be quantified.) The total and complete
annihilation, or simply the fall over dead in pain? The options are a 50km or a 75km bike ride.
(There's also a 25km, but that's for wusses). I'm strongly tempted by the 75km, except for the fact
that my bike is old and rusty (to prevent further thieving) and it takes a great deal of effort just
to get it in motion, never mind 75km of motion. Anyway, we'll have to see. Everyone can go sponsor
those of us doing it by putting money in the jar in the CSSU. Those who don't live in Toronto can
sponsor us by sending me cookies.
Second story: Jason brought me up, Steve Mann contacted me: the upcoming "major audience" (Dr
J quote) event this spring is: the International Workshop on Inverse
Surveillance. So of course I'm going to put in a proposal. Still don't know whether I'm gonna
trick Dr J into submitting one with me, or see if anyone at the lab is interested in doing it as a
lab thing, or if I'll just go solo. Probably one of the first two, just cuz it's more fun to do it
with someone else. I, no doubt, will be letting you all know. :)
Commercial break: "Need friends?: Drink soft-drinks", "Stains can't come out?: Use stronger
cleaner!", "Husband hate to eat healthy foods?: trick him with our product that doesn't taste
healthy!"
Third story: When I first saw it, I thought to myself "okay, this sounds too neat to be true,
or I would have heard about it somewhere else first". So I decided to download it. Pyzzle is a Python interface to a Myst/Riven game engine.
After playing around with it for an hour or two, let me tell you: it's easy to make your own
Myst-like game now. It only took me about 90 minutes and stealing a few photos off of
images.google.com to put together a very, very tiny demo of a forest where you could walk back and
forth between three rooms, and focus closer on a log. Small steps, yes, but remember that I'm
programming all of this in Python, which means it's extremely easy to add in extra stuff. If I had a
lot of time to kill, Pyzzle would certainly be on the list of things to play around with. I think
someone should make a Pyzzle out of the Bahen building. Anyone got a digital camera I can
steal?
Fourth story: About the OSConf, more people are (slowly) starting to sign up. They still
haven't targeted the undergrad audience yet, so I think I may have to take this into my own hands in
a little while and bug Flo (nudgenudge) to get the now-old CSSU to put something up on
ut.cdf.general. If they got a bunch of interested students, I may even be able to get them a
discount. Daniel also joined the committee, which is cool cuz now I can meet him and say "stop
teaching CSC104 so much, so one of us can have a chance" ;) I have a feeling that the idea of only a
dozen audience members scared everyone enough to do a better job telling all their colleagues to
attend. Good.
Final statements: I'm Catspaw, I'm Catspaw, and I'm also Catspaw, and this was 60 minutes.
[tickticktickticktick...]
"RAAAAAAAAAAAAAR!" I shout upon waking. "Dinosaur woke up!"
"Watch out," Mud humours me back from the hallway. "Better feed him."
"He dreamt he was a fish," I explain.
I have no idea what I'm talking about.
Got an assignment back with a failing mark slapped on the front. Flipped through it. Rolled
my eyes. It was gonna be another one of these assignments: dealing with the prof or TA
because I decided to do something different (read: use a little bit of creativity) and it didn't fit
with their answer page, so zeroes were given instead of spending six seconds to try to figure out
what I was doing.
Within 24 hours I'd managed to get the grade boosted twice, now sitting comfortably at an A (so much
nicer than F), with promise of perhaps boosting it even further if I successfully plead my case on
one of the other questions. I don't mind, since this year was better than most in terms of this
problem, and I'm almost done the term. Frighteningly close to being done.
Countdown:
Two weeks of class.
Three assignments.
One test.
One large report.
Three exams.
Two presentations.
I already bought myself a package of chocolate-covered coffee beans to save for the cramming sessions
which will be shortly occupying my days and nights. A very eventful time of year, it is soon to
become.
Last week, if you lived in Saudi Arabia, you wouldn't have been able to visit a large number of LGBT
websites. I don't mean just porn: I mean human rights type stuff. metac0m put together this bulletin about it, using our enumeration
scripts. (Note: green means the webpage was good, yellow is network error -- usually timeout though
sometimes the timeouts aren't "accidental", red is a block page. For those of you always asking what
it is that I do all day, there you have it. Oh, and the "opennet initiative" is the official
title of the collaboration between ourselves at the Citizen Lab, Harvard, and Caimbridge.)
Anyway, one week later, we get an e-mail saying that this category of blocking has been lifted
(verification by us pending) as told to us by a dude at Reporters Without Borders: "Thanks for your
work about gay websites in Saudi arabia. It shows that pressures sometimes work!"
There weren't fireworks that soared into the sky, and there weren't parades in the streets. In fact,
I doubt more than a handful of people noticed. And I almost deleted the message without a second
glance, my itchy trigger-finger hovering above the 'd' key as it waded through the swamp of spam.
But the fact that it was 7 am and I was moving rather slowly forced me to stop and think about it for
a few seconds.
This is the purpose of what you do, I mused. "Enumerate internet censorship to inform and
educate those who are in a position to change policy." This is the whole point.
It's easy to forget that when you're writing the code, focusing on making it fast, sleek, beautiful,
flawless, easy to use, easy to understand -- a true work of art.
But its real purpose is revealed when you run it: no one saw how elegantly the data was transformed
by one function to the next, yet the chain of those scripts was able to create some tables for
metac0m to wrap with explanatory text, and to release out into the world. And they served their
purpose: the blocking is gone.
Small victory. No more than a pin-drop in the grand scheme of internet censorship taking place. But
proof, for me at least, that the system works.
Background: over the past year, I've spent a lot of time struggling to find a way to describe
internet security moderately: cautions, without promoting irrational fear, but without perpetuating
ignorance.
I've given the "internet security" talk to a dozen audiences: from describing insufficient input
validation in cgi scripts to a group of Linux hackers in Guatemala; to listing the political
implications of unregulated ISP surveillance to a group of technologically-inept students; to trying
to discuss certificate forging with reporters, fearing at every turn that I may say a phrase that is
misquoteable.
I think that every time I'm getting slightly better at it. With so many rumours circulating this
topic, I find that it's extremely difficult to balance people's perceptions with facts. Sometimes I
come across too strongly on the "you're too insignificant for crackers to care about you" end of the
spectrum, and the audience leaves without a grasp of why internet security education is important.
On other occasions, I come across too strongly on the "your communications are far less secure than
you suspect" end, and the audience leaves concerned and paranoid. I'm getting better at this
delicate balance, but I still find it difficult.
Today I got e-mail from a grad student who wanted to know if he could add a quote or two about me in
his eSecurity paper since I'm "a professional expert." (heehee -- I wonder if that's someone who's an
expert professionally, or someone who's an expert at being professional? Either way, I like this
title. Could I get it on a business card or something?)
The question to answer was In your opinion, are my bank transactions secure? Here's the answer
that I came up with -- I'm so happy with how it turned out, that I feel the need to share it:
Probably as secure as crossing the street is safe: there's a small chance
that something might happen, but that's no reason to never cross the
street. It would be silly to always stay on the west side of Yonge
because you're scared of getting hit by a car if you try to reach the east
side.
On the other hand, we teach children from a very young age about the
dangers of crossing the street: that they should only cross with an
adult, that they should look both ways, that cars are dangerous, etc.
We don't teach them this because we, as adults, are afraid of crossing the
street. We teach them this so that they are aware of what the dangers
are, and can take measures to avoid them.
It's the same sort of thing with your bank transactions: you should be
aware of what the dangers are, and that they exist, so that you're not
trying to cross the street in ignorance of the fact that cars exist.
I'm very satisfied with this response: it states my position much more clearly than I've been able to
convey up until now. Maybe with a bit more work I'll be able to get the whole "internet security"
talk up to this level. We "professional expert"s value polished presentations ;-)
Sometimes when I sit in class it feels like I'm just in my alter-ego role of being a meek and
mild-mannered student (except 49x, where I play neither meek nor
mild-mannered), but my "real life" is out there: whether gradually,
calculatedly, following through years of plotting and planning of how to
take over the world one day, or sitting at work doing "real world" problem
solving and research, or accumulating contacts and experience and
cred.
Othertimes I'm being interviewed for some crappy newspaper article, or sitting on some committee, or
breaking into some Iranian national router (cough), and it feels like all that stuff is just play.
My "real life" is going to school, getting a degree (then the next, then the next), and preparing a
good job for thereafter. I'm just a typical, insignificant third year undergrad, who happens to
enjoy pretending to be one of the grownups.
I know that it's a silly intuition. Naturally they're both my "real life"; it's just a matter of
perspective. But that doesn't make it feel any less weird.
|
|