A new school term dawns. Today was my first taste of two of my four classes: one was great (I could
watch Paul Gries teach about banana peels and I would still be fascinated) and one was quite dull (being
surrounded by first and second years didn't help, either). Together they averaged out to "cool, this
term won't totally suck".
I've been feeling imp-like recently. A few successful homemade sploits here and there. See see, no
touch. Repeat to self: be good, be good, be good... Some wise person I know once said to me that
boredom was dangerous. Maybe it's just a downtime right now and I gotta get my kicks somehow.
Or maybe it's just practice for when I decide that I hate academics and go into a life of crime. Or
maybe I didn't have enough coffee recently and this is just acting as my outlet.
Either way, the new term has started. BAM!
Feeling brilliant? Read on! So one of the courses I'm taking this term is about user interface design.
Not just necessarily about computers, but about devices, like an iPod. We (yeah, everything is a group
project these days --- still looking for a kickass group...) have to build something that is intended for
(and let me bold, for emphasis) Travelling families with small children (0-10 yrs).
We can basically build any prototype, keeping in mind that it has to solve an existing problem, and that
the grading order of priority is:
- Interactive - ie: it has to involve more than just hitting a button
- Useful
- Novel - so a videogame console to keep kids entertained just won't cut it
So get brainstorming! Go on! I need this, like, really really soon. I don't just keep you guys around
cuz of your looks; prove yourselves to be someone useful. Go on! Come up with some useful ideas,
goddammit!
I'm especially looking at those of you with kids. Or who know kids. Or once were a kid...
Some days I have nothing to write about and thus nothing is written for that day. Some days I have
nothing to write about but something in my head tells me to write something anyway and we end up
with totally weird entries. And then some days a
million things happen and I end up having to squish several thoughts into a single day. Today is one of
those days.
To aid in following today's entry, let me add a Table of Contents:
The Table of Contents.
<------------
Yeah, I do think I'm funny.
|
- Noisy stupid annoying guy and how I'm going to jab a sharp object into his eyeball.
- Holy water for sale
- For all there exists vs there exists for all
- "Are you an instructor?" (Psst: the answer is "yes")
|
1) Noisy stupid annoying guy and how etc.
"I'm gonna give him two questions," I whispered to the group sitting around me in Paul Gries' class
today. "And after that guy in the front asks more than two questions, I'm gonna start chucking objects
at him for every other question he asks."
So I never did chuck anything at his head. I also stopped counting after his tenth question/comment.
Dude, let me offer you some advice: shut the hell up! I've taken Calculus and Computational Complexity
with him (and probably some other courses that my brain has censored to try to keep me sane) and he
always does the same thing: ask completely stupid questions over and over and waste everyone's time. Not
only that, but he sits in the front row and spends the whole class reading online comics on his laptop
and distracting everyone else. Argh!
I'm bringing rubber bands to the next class. Seriously. And I'm gonna start flinging them at
him.
2) Holy water for sale
So in Buffy they're always throwing vials of holy water at vamps. "Where the heck do you get all that
holy water?", we've asked on more than one occasion.
Well guess what? Today I found a store where you can buy vials of holy water!
I wonder how often people come in to buy some. I dunno 'bout you guys, but I'm gonna go buy some and
maybe fling it at ol' Noisy stupid annoying guy and see if he starts fizzling.
3) For all there exists vs there exists for all
It feels like every single year I have to sit and listen to a prof explain the difference between these
two things. Once and for all, for you insanecatsers who still can't tell the difference, here you
go:
For all X there exists a Y ... - eg: "For all babies, there exists a person who finds that baby
annoying." Every baby is found annoying by at least one person. If you wanted to prove that the
statement was false, you'd have to find a baby who no one found annoying. (Good luck.)
There exists a Y such that for all X... - eg: "There exists a room in this house such that all
cookies are in that room." One room in this house has all the cookies. If you wanted to prove that the
statement was false, you'd have to find a cookie that was in a different room.
There. Do we understand now? We don't have to explain it yet *again*? Good. Sheesh.
4) "Are you an instructor?"
Some kid in Bahen asked me for directions today. After I pointed him in the right direction, he asked
me, "Are you an instructor here?". "Not all the time", I replied with a smile, which, technically,
wasn't a lie.
5) Bonus topic!
Best dinner ever: olive bread, french brie, red grapes and grilled chicken breast, all fresh from
Kensington Market. Well, maybe not the best dinner. A pizza pizza mega munch deal might still
top it. .....What?! I'm an undergrad!
I walked into class and on the blackboard was stuff from the previous prof. He listed six different ways
to do something and then wrote:
"Do NOT use numbers 1-3 in this class."
I sure hope it's not a math class.
This morning was the alpha release of
Chestnut. After getting it stable enough for my own liking (though I must admit that some of the hacks
in the backend make me twitchy), I rolled up some install docs, found the exact minimum requirements,
shouted 'BAM!', and took a nap on the couch next to a stack of our new media guides.
The media guides arrived today. More than an inch thick, they contain various information about the lab
and copies of some of our media whoring, and all that kind of thing. More importantly, a stack of them
turned out to be a great pillow. Stacks of paper always are. A bunch of my courses this term involve
writing, which makes me w00t. Not only because I miss writing (having used up all my non-CS options
already), but because I know that lots of my classmates'll suck at it which says great things 'bout
riding the grade curve to happiness.
I get about six seconds of sleep in when Graeme and Nart need my help to move two dozen servers up the
stairs and into a getaway car. I pile two on top of each other and carry it up the stairs. "Aww," Nart
sighs, "now I have to take two too. Asshole." Secretly we all wish that these computers were something
smaller and more purdy.
Back to the couch. Eyes closed. Listening to the hum of the dozens of computer fans in the room. I
need a nap. I need coffee. It's the second week of classes and I'm exhausted.
My sleeping schedule has been transformed into a quilted fabric of narcolepsy and insomnia. Between the
brief periods of wake and sleep, however, I've actually gotten a lot done. If I survive everything I've
booked for myself this term, I'll have developed deity-like scheduling powers.
Speaking of which, PyWebOff was accepted as a
talk (w00t!!) that I'll be giving at the 2005 PyCon. (Though adding
"re" to the end of PyCon just doesn't have the same ring to it that it did with VanPy). And I got an
e-mail from someone today asking me if I was interested in the Yet
Another Perl Conference 2005. "Let's go, and wear Python t-shirts", Nart suggested with a grin. And
next week I'm attending CUTC. Ahhhhh, I'm gonna be sucked into
the black hole of conferences!
At least I'm enjoying (almost) all my classes this term. If only I could figure out what's gonna happen
after undergrad. But since when is that a new concern?
On Thursday evenings I have CSC340. This begins with a one hour tutorial and is immediately followed by
two hours of lecture. And, unfortunately, on this Thursday eve, I didn't have nearly enough coffee in my
system and thus was feeling tired, cranky, and mischievous.
I sat in the first tutorial, waiting for NinjaTim and cman (my team) to arrive and for the tutorial to
start, napping on my laptop keyboard. It was painfully boring, so I decided to have a little fun. First
I started looking up photos of my TA
to try to learn something about her life. But even that turned out too dull, so I decided to make fun in
My Own Way. (To find out more, go to the CSC340 bulletin board, View Source,
and scroll to the bottom --- third-last line).
Finally the tutorial began. We were picking teams and needed all members' names and student numbers.
NinjaTim and cman are both damn lucky that I know how to steal student numbers, or they'd be all alone on
Team Loser right now. Instead, I signed them up for my team, later dubbed The Pyre-itz (pronounced:
pirates) by cman. Then the tutorial went from barely interesting to fantastically dull.
As we discussed the ethics of requirements engineering through a few case studies, I decided to try to
relieve my boredom by participating. "Well, if you were an architect," I said, "and someone asked you to
design a house but wanted to save money by having a roof that would be 'good enough' for now but would
fall down in a few months, you would refuse. It should be the same thing for software engineering when
it concerns security."
The girl with the red ribbon in her hair violently threw her hand into the air. She was driving me
crazy. I have a way of immediately knowing who the annoying ones are going to be in the term, and it was
so totally going to be her. I hated her already. "Excuse me", she said. "Excuse me, but if the roof
falls down people's lives are at stake. If someone breaks into a computer system, it can't hurt
anyone."
Fool. Foolish little girl with the red ribbon in her hair who had no idea that her objection was gonna
start a fight. I replied, "What are you talking about? The case study explicitly says that the computer
system holds medical records and stuff. What if the medical records are changed and it no longer knows
that someone is deathly allergic to sesame seeds? Information can certainly hurt people!" The TA
quickly intervened and changed the subject. The girl with the red ribbon glared at me. I opened my
laptop and changed the last sentence on the second last paragraph of the CSC340 user
agreement with a smug grin. "Boredom is dangerous", the wise one once said.
Class was more fun. Sleeping cman on one side and yawning NinjaTim on the other, somehow we all got the
giggles. It started with a guy entering the classroom with an open umbrella and sitting down while it
was still open. For some inexplicable reason, this made cman and I start to giggle. Of course, we were
in the first row so the prof (who knows us), glanced over. We immediately both held our breath, trying
to look like we weren't giggling. She looked away and we laughed silently. She looked back and we held
our breath again. This was repeated a few times. Every time we had to hold it in, it just became
funnier.
Then the question came in class about the egg. The prof said that an egg is an example of a system that
is completely internally contained. "But it has one way in which the outside world can affect it." She,
of course, was looking for the answer 'heat'. Outside temperature can affect an egg. Unfortunately, we
had the giggles. "Being stepped on?", I offered. "Being tasty?", cman suggested. We giggled.
NinjaTim, waking up, thought we were giggling about something else though. "You guys are nasty", he
said. "What?" "Giggling about the slide." It took me a moment to
figure out what he was talking about. Then the giggles started all over again.
In class today I learned:
- Playing around with systems is fun
- Knowing too much information is useful
- Revenge is sweet
- When you're tired, everything is funnier
- I think there was something about CSC340 course content, but I kinda forget what...
This term so totally blows last term out of the water.
The ONI (of which the CitLab is a part) just released another report. Actually, I had nothing to do with
this one, which is why I can pimp it on my site. It's a good read.
Hey you. Yes, you. You look like you need another song stuck in your head to replace the Doorknob Ankle
Colds of the past. Might I recommend the latest fad? (If dancing anicats aren't
your thing, you can always be disturbed by the same song in live action, or the original version.) Thanks to Joi for the pointer.
Sometimes I feel like I'm a writer on the Simpsons: there once existed a time where I had witty things to
say but now it's all just getting stale and I should probably just quit while I'm still ahead before I
completely drive the show into the ground. And then, other times, I'm handed a jem of an entry like this
one.
This happened while I was waiting for the streetcar.
So I'm standing, waiting, listening quietly to music and trying to stay awake. And all of a sudden -
BAM!!!!
I feel my head flying forward, my neck is strained, and the back of my head stings like hell.
So you've been hit in the back of the head by something, someone, somehow. What's your reaction? Here
are a few perfectly valid possibilities:
- Spin around to figure out who the hell did that.
- Swear.
- Touch the back of your head to see if it's bleeding.
- Run for cover.
These would all be perfectly normal reactions, so any perfectly normal person would choose one or several
of the above. But what happens when you're so far away from "normal" that you're on another bell curve
altogether?
I reached down, picked up a slab of pointy ice, and got ready to chuck it at whoever had decided to get
violent. And I was totally about to lob it at the heads of two kids who were watching me from a few
meters away when I turned further and noticed that there was a great big dude riiight next to me who held
his wine bottle at the height of my head.
He took a few steps back. "Sorry girl, I thought you were Arlene", said the very drunk dude who'd
obviously thought it would be a good idea to use his brown bagged bottle of wine to shove this Arlene in
the head.
"No", I replied, "I'm not Arlene, sorry to disappoint."
"I'm really really really sorry", he said. "Really really really really sorry. I really thought you
were Arlene. I didn't mean to hurt you. God I'm really really really sorry. What can I do to help you?
I'm sorry, I'm so sorry."
He kept backing off as he spoke. By the time a few minutes had passed, he'd backed off to the next
streetcar stop, and I could still see his mouth moving a block away as he professed his apologies for
attacking me.
I need to redye my hair purple. None of this ever happened when I had purple hair.
To picture the Joel on Software
lunch today, you must picture an overstuffed corner of Movenpick. Now add several tables of software
engineers. Now, in the middle table, picture a dozen undergrads who are feeling slightly smug about
having engineered Joel into sitting at their table while several of the software engineers who
attended were never able to speak to him beyond a "it was nice to meet you" handshake as they
left.
Of course, these were not a random set of undergrads. As I drank my very, very, very large coffee (if
every order of coffee came in a mug that large, I would have no reason to take over the world; it would
already be perfect), and during a brief interval when Joel went to go visit one of the other tables, I
sat back and watched our group for a few moments. We all had a few things in common and though it was
difficult to tell which similarities were the cause of others and which were the effects, everyone in
that group of undergrads seemed to be:
- far more clever than the average CS student.
- able to clearly express ideas.
- able to think for themselves, not just follow instructions.
- participated (or participating) in one of Greg's project
courses.
- in a position of leadership, or having the skills that you could tell that they would be good at it
if they were put in that position.
- destined to do great things with their future.
- someone I would be willing to have on my team. And I'm damn picky.
When we all graduate, I already know that we're all going to go our separate ways, out to conquer grad
schools or the industry or wherever the next step takes us, but to those of you who were in that group
and are also insanecaters: be sure to look me up five years from now when my world-conquering is in full
swing. I'll probably have a job for you.
Speaking of conferences, I got an e-mail today from FOSSTEC05 asking me if I wanted to participate or organize an
invited session. (The answer is "no".) Well, technically I didn't get the e-mail. It was
addressed to a "Dr. [Catspaw]". I feel like there should be some sort of rule that once X number of
people have accidentally mistaken you for a prof, that you should automatically gain profhood.
Anyway, it's Friday night, I've got a whole hell of a lot of work to do this evening, but I'm feeling
oddly inspired. Though maybe that's just the super-huge coffee talking...
Anyone who's made anything complicated in a wok knows that you're absolutely doomed unless you take some
time beforehand to prepare all of the ingredients. When your yellow thai curried vegetables are entering
that precious interval where they're cooked but still crispy, if you don't have your sauce prepared in a
bowl next to you, you're going to be in veggie limpville...and your dinner will be the mayor.
Investing some time beforehand in order to make your life easier later is common sense in most
disciplines --- it's not just limited to my dinner tonight.
Do some research before you start writing that paper. Make a list of what you'll be packing more than 10
minutes before you have to run to catch your flight. It just makes sense. (Unless you're me. In which
case you shove some things into your knapsack as you run out the door. But really, who needs to bring a
pair of pants when you'll be gone for only a month, anyway?)
Anyway, this term feels a little bit like I'm on a cooking show. You know how they always have little
bowls around their counter where they've pre-measured all of the ingredients that they'll be adding to
their recipe so that "cooking" really just becomes "dumping bowls into a bigger bowl in a given order".
Like, c'mon guys, that's not cooking! That's something I could train Mota to do! Where's the blood,
sweat and tears? .......Not in the food, I hope.
Where was I? Oh yes, this term feels like a cooking show.
I've got several mailing lists for my teams this term, some wikis where appropriate, version control for
my team projects and my own projects, bug trackers with RSS feeds that all talk to each other to form one
unified todo list for me, etc. All of these things are like little bowls of ingredients sitting next to
my stove. And it's making the actual work go sooooooooooooo much smoother. How the hell did teams
collaborate before this stuff? Yeesh!
In conclusion, if you want a tasty dinner, use bugtrac software for your CSC318 project. I forget how
that makes sense, but I'm sure that you get the idea.
AKA: Catsy vs The One Hour Long Walk To Campus In The Winter
AKA: You may have won last time, winter, but now I'm back with a vengeance.
AKA: How I learned to stop worrying and love the bitter cold

Contrary to popular belief, it gets cold in Canada. Where by cold I mean "really damn cold". (But I
don't mean that as a recursive definition or else it'd be really damn really damn really damn really damn
.... cold.)
The last time I walked to campus, on Wednesday last week, I was fairly convinced that halfway along my
journey I would simply die. Not only were my hands frigid but I also feared for my cheeks, legs, arms,
etc.
But not this time!
As fLufFy and I began our one hour trek into the wilderness of downtown Toronto at 8 am this morning, I
wasn't feeling as confident as I'd hoped. Sure, I was wearing half of what I own (see diagram to the
right), but I could already begin to feel the wind nip at my fingertips. Was I going to have to admit
defeat?
The semi-packed snow on the sidewalks made it difficult to walk such that each step looked like an odd
dance in which we moved a step forward and half a step back. But progress was made.
Halfway along the trip I finally realized that I'd conquered this battle against winter when I was able
to take off my jacket and one of the layers of gloves and stuff them into my backpack. "That's right",
I glared at the confused pedestrians around me, "I'm walking out here without a jacket on."
Victory was finally achieved. But at a price. I'm sleepy now, could really use a nap, and these chairs
are...so.........comfy................that...................
Mud mentioned to me recently that she's saddened by how techy insanecats has become. So I apologize to
everyone out there who really doesn't care about this rant, but I've gotta get it out.
The Python IDE I Want To See:
- It should load fast. I use SubEthaEdit as my notepad because of how quickly it loads. If I have to
wait more than, say, twelve seconds for my IDE to load, it had either be a damn good IDE or else I'll
just use pico.
- It should be extremely easy to open an interactive shell. Example: having it be always open in a
subframe. And the shell should be able to talk to the code I'm currently writing.
- A subset of PyChecker should be running continuously and I want Eclipse-like little helpful warnings
about invalid syntax as I type.
- I want a debugger that lets me step through code, see variable values, set breakpoints, and run shell
commands at any arbitrary point.
- Tab-completion.
- Helpful alt-tag information of PyDoc and I should be able to get the full PyDoc easily.
- Integrated version control. Start with CVS/SVN and keep nice hooks so people can develop plugins for
other version control protocols that they want.
- Cross platform: this should run on my mac, dammit! Open source / free software = yay, but not
required. I'd pay good money for this IDE.
- Let me open multiple files and keep them in multiple tabs, not windows. And have some sense of a
"project": multiple python files that work together for my project.
- For bonus points, integrate with py2exe and py2app so that I can make stand-alone builds.
- Text should colourize as I type. And I should be able to change the colours if I think that your
choice of defaults are ugly. Hint: if you think that comments should be in red, your choice of defaults
are ugly.
- Do the indentation for me. I like spaces, some people like tabs. Play nicely with both.
- Pretty UI with pretty buttons. I can admit it: I'm shallow. I like pretty apps. But c'mon, if I'm
gonna be coding on this thing all day, I should be happy with how it looks.
- A little Ant integration never hurt anyone. PyDoc creation, PyChecker running, script running,
building, the whole whammy.
Ted Leung wrote a bit today about why a strong
IDE could be useful even for a language like Python. I'd substitute "could be useful" with "would be
really damn useful". I say this after spending the whole day between XCode, SubEthaEdit and nano,
really wishing that I had something stronger to sit on. </rant>
Dear Wikis,
As you're probably aware, I have a had a tendency in public to sort of...well....call you names, like
"stupid" and "fuckin' lame piece of shit". And I suppose I should also mention that more than once I've
audibly scoffed when someone has suggested using you to solve a problem. It's also possible that I'm the
one who keeps ordering you 3 a.m. pizza that you didn't ask for.
Alright, I see that I'm making you upset, so let me get straight to the point.
I'm sorry.
I had no right to throw bundles of burning gym socks into your window late at night. And I certainly
shouldn't have begun that "I hate all wikis" parade outside of your house, complete with little bands
singing little "Go to hell, wikis" songs, and little floats decorated like stabbed, mauled, and mutilated
wikis with happy children dancing around the corpses.
I was directing my intolerance unfairly towards you because when I was a child, a wiki killed my parents.
He even used WikiWords to do it. Ever since then, I've had strong negative associations towards any
edit-in-place versioned collaborative online webpage system.
My point, though, is that I'm sorry.
I see now that I was wrong. Wikis do have their place in society. They can even be very useful. I'm
using wikis for several of my course projects, and we're now using them at CitLab to manage project
documentation.
So.........I'm sorry. I was wrong. You're not a fucking lame piece of shit.
Signed,
Catspaw
If you're going to read only one insanecats entry this month, read this one.
Crazy shit always happens to me. Period. I'm not sure why. Heck, I don't think anyone knows why. But
it always does. And some times I even have witnesses. This is one of those times. Do I have your
attention?
So Mud and I decide that we're feeling lazy tonight and what better way to celebrate our laziness than to
order pizza for dinner. On our fridge a "Pizza Hut" pamphlet has been tempting me all day, so we decide
to break our usual habit of ordering from Pizza Pizza when we want pizza and to order from Pizza Hut.
Still with me?
So I call up Pizza Hut and they tell me about their deals with their new stuffed crust pizza and shit and
finally I get to a real human being from whom I order two pizzas: a super and a canadian. The total
comes to $28something, which is more than I'm used to from Pizza Pizza, but hey, sometimes you gotta
switch it up and go with Pizza Hut. You're with me still, right?
Exactly 40 minutes goes by (40 minutes or it's free) and the doorbell rings. I run downstairs, pay the
guy, and he hands me a box. That's when I frown. He doesn't hand me a Pizza Hut box. He hands me a
Pizza Pizza box. I open it up and sure enough, there's a super and a canadian. And our total came to
$28something.
So I'm thinking "wtf???" and close the door, completely confused. Maybe I called the wrong number?
Maybe I just imagined that I called Pizza Hut? And maybe I just imagined that I heard all those Pizza
Hut-specific deals?
I go back upstairs and after chatting with Mud, decide to call Pizza Hut. This time I'm careful.
310-10-10, not 967-11-11. "Hi welcome to Pizza Hut", says the same voice that I heard only 40 minutes
ago. She begins to explain the deals to me, just like she did 40 minutes ago. By the time an operator
picks up, I'm positive that it was Pizza Hut with whom I spoke 40 minutes ago. But I want to make
sure.
"Hi", I say. "I ordered two pizzas from you guys forty minutes ago and they haven't arrived yet." She
transfers me to customer service. Technically it's not a lie. Technically my Pizza Hut pizzas haven't
arrived.
"Yes, we've got your profile", says the customer service agent. "And it says that you registered your
profile today. But we don't have any orders down for you today. Sometimes that happens if the agent
gets as far as taking your information but the customer hangs up before the order is completed. But, hm,
it seems we did charge you for an order."
I talk to her for a few minutes and she sends us our order [again???] --- two pizzas, one super and one
canadian --- free of charge. 40 minutes or it's free. $28something.
So now we have four large pizzas and paid for two. We have two supers and two canadians. Two from Pizza
Pizza and two from Pizza Hut. All from calling the same number.
WTF?!?
|