Category Archives: Uncategorized

Hello Graduate School

Well, it’s official.  Today, I handed in my acceptance form for Graduate Studies here at the University of Toronto in the Computer Science Department!

Now I just need to keep my cGPA above 3.2…

Assuming that I get my B.Sc. without incident (because who knows, maybe the University will fight me for it…citing missing courses, insufficient credits, etc.  I’ve checked all of this with New College and the Drama/CS departments, but I’ve been here too long not to be ready for bureaucratic tom-foolery…), I think I’ve got an interesting year or so ahead of me.

This summer is already looking quite busy, but here’s what I’m looking forward to next year:

Interesting Courses

I’ve been leafing through the Graduate course calendar, looking for courses that sound good and fulfill my breadth requirement.  Here are the courses I’ve underlined as “interesting”.  Note that I haven’t checked the timetable at all to see if these conflict with one another.  They just sound interesting:

  • 2125H – Software Development Tools and Practices:
    This course is an introduction to software consulting practices. Students will be paired with clients whose problems require advanced knowledge of computer science to solve, and will then work under the direction of the course instructor to develop and deliver useful results. Topics will include requirements elicitation, scope negotiations, deployment concerns, and disaster recovery.
  • 2412H – Computer Algebra
    Algebraic theory that underlies symbolic and algebraic manipulation by computer. Chinese Remainder and interpolation theory, fast algorithms for computations with integers, polynomials and power series. Newton and Hensel iteration, polynomial and integer gcd algorithms, factorization of polynomials, the fast Fourier transform, solving systems of polynomial equations, Gröbner bases. The Maple computer algebra system.
  • 2426H – Fundamentals of Cryptography
    Rigorous definitions of security for pseudo-random generators, digital signature schemes, secure hash families, and public-key encryption.. Methods (including number-theoretic conjectures) for constructing these secure cryptographic primitives. Methods for using secure primitives to achieve secure session-key exchange and secure sessions.
  • 2511H – Natural Language Computing
    Introduction to techniques involving natural language and speech in applications such as information retrieval, extraction, and filtering; intelligent Web searching; spelling and grammar checking; speech recognition and synthesis; and multi-lingual systems including machine translation. N-grams, POS-tagging, semantic distance metrics, indexing, on-line lexicons and thesauri, markup languages, collections of on-line documents, corpus analysis. Python software.
  • 2529H – Computer Animation
    The primary focus of this course is on kinematic and dynamic techniques for character animation. Topics include physical modeling and simulation, motion planning, control and learning algorithms, locomotion, motion trajectory optimization, scripting languages, motion capture, and motion editing. Students will implement algorithms and interactive animation tools and then use these to produce motion for animations.
  • KMDI1001 – Fundamental Concepts in Knowledge Media Design
    Knowledge media are systems incorporating computer and communications technology that enhance human thinking, creativity, communication, collaboration, and learning. Examples include the Web, email, instant messaging, knowledge management systems, digital libraries, collaborative virtual environments, video conferencing environments, and webcasting systems.
    This course reviews the emerging field of knowledge media design, and the use of digital media for communications, collaboration, and learning.

I’m also looking into the possibility of hopping (back) over to the Computer Engineering Department to see if I can take ECE568H1 – Computer Security.  My general dislike for engineering courses notwithstanding, this still sounds like an interesting possibility.

(Note to self:  the word “notwithstanding” just felt right to put there, but is that correct usage?  I have no idea…)


Well, it’s no surprise – a Master’s student is expected to produce a paper in order to graduate.  I have absolutely no idea what I’ll be doing my thesis on, but the number of possibilities is exciting.

It’d be nice to somehow merge Drama and Computer Science into a thesis – and I think it’d be an appropriate finale for my career here at UofT.  It’s something to mull over while I have time, anyhow.

Launching OLM

OLM is going up in the fall.  Whether or not I work on it this summer, as a TA, I’ll probably be using the software to mark and return student code.  “Eating one’s own dog-food” might be appropriate here – though I prefer, “eating the sandwich I just helped to make”.


A lot of my friends from the Drama department are either graduating in June, or staying on for one more year.  A bunch who are graduating are staying in the city, and the prospect of doing some work with them outside of school is exciting.

We’re all very spoiled here at the UCDP – modest budget, multiple rehearsal spaces, etc… working on our own stuff outside of school might be a very humbling experience.  Humbling as in, rehearsing in alley ways or rooftops, and using an audience holding flashlights instead of our own lighting grid.  Cool.

Operation: Party Mansion

This one is still in the works.  Some buddies of mine from highschool (who are also my roommates) are looking to buy some property in, or around downtown Toronto.

This may sound ambitious, foolhardy, and naive, but we’re serious, and a lot of legwork has already been done in order to get this moving.

Ideal scenario?  Next year, I’ll be living in a big house with my highschool buddies.  And isn’t that living the dream?

Anyhow, as I was saying, my Grad school papers are in, so my brain is going to put that on the backburner for a while.  Now I have to focus on my CSC301 midterm for this Wednesday, and an evidentiary analysis on CIA/JFK Assassination links for INI304.

Making my First Firefox Extension…in 90 Minutes

It’s a race.

I’m going to attempt to create a simple Firefox extension that will display the DOM ID of an element that my mouse cursor is hovering over in the status bar.

There are probably a ton of Firefox extensions that will do that already, but I want to give it a shot as a project.

It’s 3:30PM right now, and I want to try to get this done by 5:00PM.  I’m going to be using Ubuntu 8.04, gEdit, and Google to get me started.

And I’m going to record my progress here in this blog post.

Note: After I’m done, I’m going to edit my sporadic notes so that they make more sense.  So if you’re wondering just how I managed to stay so cool, calm, and collected in my prose under such time pressure, and why the publish date on this article is after 5PM, now you know.


Gonna start with Google:  “building a firefox extension”

Ok, found an article about how to create a Firefox extension.

Apparently, the first thing I want to do is try setting up a development profile in Firefox.


Finished setting up my dev profile by opening up FF with this command:

firefox -no-remote -P

Then created a profile called “Development”.  After that, I typed “about:config” in the URL bar, and changed some settings as instructed on this site.


According to that last article, I can create a skeleton Extension project using this site.  Done – calling the project DOM ID Displayer


Installed this Extension – apparently, it’ll be some help.  Will let me reload Firefox’s chrome  shtuff without restarting the browser each time.  Useful.


Found this article on making a status bar extension in XUL.  Easy as pie.


Ok, I’ve coded something in XUL that should display a new panel in the status bar.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://domiddisplayer/skin/overlay.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://domiddisplayer/locale/domiddisplayer.dtd">

<overlay id="domiddisplayer-overlay" xmlns="">
<script src="overlay.js"/>

<!-- Firefox -->
<statusbar id="status-bar">
  <statusbarpanel id="domiddisplayer" label="Hello, World!" tooltiptext="Dom ID Displayer" />

I put that in the “overlay.js” file in my ~/Experiments/Extensions/domidinspector/content folder that was created using that Wizard from 3:49.

Now, to get this thing to run in my Development profile, I create a symbolic link to it in the Development profile’s extensions directory

ln -s ~/Projects/Experiments/Extensions/domidinspector ~/.mozilla/firefox/nzuzbdpz.Development/extensions/domiddisplayer@mike.conley

Open Firefox with Development profile:

firefox -P Development &


Looks like I can access and relabel the XULElement that I’ve ID’d as “domiddisplayer” using this:

domiddisplayer.updateDisplay = function(event) {
var dom_element_id =;
document.getElementById('domiddisplayer').setAttribute('label', dom_element_id);

Cool – I can now change my text in the Firefox status window.  Now I just need to capture any time a mouse moves over a DOM element….yikes, that might be tricky.


Been tinkering with this as a way of putting a mouseover event listener on everything in the window:

window.addEventListener("mouseover", function(e) {
}, false);


Seems to only be capturing mouseover/mouseout events on Chrome elements – so I can get the ID’s of the statusbar, etc.  These are XUL Elements, not the DOM elements of a web page…

So I’m close.


This page is super helpful…

Apparently, I need to wait for the content of the page to load before I can attach observers to all of its sub-elements.  Makes total sense.

So, in my domiddisplayer.onLoad function, I write this:

var appcontent = document.getElementById("appcontent");
  appcontent.addEventListener("DOMContentLoaded", domiddisplayer.onPageLoad, true);

And now, I create a function called onPageLoad, which looks like this:

domiddisplayer.onPageLoad = function(aEvent) {
//Runs when the page is loaded
  function(e) {
  }, false);


Done.  I’m over time, but I’ve finished a (relatively) working extension.

Here, it’s a mess, but you can download the whole thing right here if you want to tinker with what I did.


DemoCamp – March 3rd, 2009

Note: This was published in a rush, and needs some tidying. Expect some cosmetic/spellign fixes over time

So, I’m sitting at DemoCamp ’09 in the Imperial Pub on Dundas. Right now. And I’m just going to shotgun my impressions, and what’s going on here.

Now on to the presentations:


There are two guys on stage right now who are presenting something called “BackType”. Essentially, it looks like a web application that allows you to search and sort comments on social media sites such as Digg, Reddit, WordPress, etc. Hmmm….apparently, they’re also planning on releasing a plug-in for WordPress that will allow your comments to be submitted automatically. Nice. Kind of lackluster presentation, but an interesting idea.

Woop – they just got quizzed on the business model, and the crowd laughs. “Making money isn’t a huge priority for us”, is the response. Alright.  Though apparently, they’re making money through their API somehow…not sure how.


A business application.  Big shift recently:  individuals and companies are now on the same playing field – potential employees are now shopping around for work, instead of just employers shopping around for employees.  So how do you market yourself?

Social media?  Some companies are going for it.

Tim O’Reilly called this “the next big thing on the internet”.

It’s a CRM (Customer Relationship Management) tool.  Tool scours the web looking for information on who you’re interested in, through social media, etc.  Rates them on their “strength” as a customer, “opportunity”, etc.  Tracks sales, opportunities, more…

Maybe I’m missing something, but as a consumer, this sounds kind of creepy.  I see a couple of business folk licking their chops.  *shudder*.

Actually, it sounds like this is for smaller businesses, with large numbers of regular customers.  That’s not so bad.

It’s a tool for the individual – your profile exists even if you leave your current company.  This means that if you’re looking for a job, you can show your “baseball” card, which lets you show off your Dex sales stats, etc.

A food related website.  Lists recipes, lets users rate them, comment, etc.  As a user, you can add this recipe to your “Favourites”.  Recipes can have back-stories, you can add photos and videos (great for folks like me who need to see cooking happen to pull it off).

Lets you add ingredients from recipes to your “shopping list”, which is cool.  In the shopping list, you can view more information on that particular ingredient (alternatives, comments, good prices, etc).

“Anybody can edit it, anybody can add to it”…

People can add their own food related articles, like on “Cupcake Camp”.  Cool.  Users can respond to these articles.

“My Kitchen” is your central page/hub on Foodea.  Tells you about YOU, and what you’ve done.  Shows you your Favourites, your Cookbook.

Besides food, there are also areas for drinks!

There is a “Market Area”, for food related businesses (caterers, food products, etc).  These businesses can purchase profiles, which can be viewed and interacted with by the sites users.


It’s an image searching and tagging web application.

“Found”, “Visualize”, “Dropular” are mentioned as similar applications.

Woop, and just as it started, it stopped:  no Internet access on the presentation Mac, all of a sudden.

Oh Mac.

“Try shaking the cable” yells someone.  Another yells “I blame the shitty DemoCamp set up” (he’s from Microsoft It turns out that he’s one of the guys who’s running the show).

Ok, back up and running.

Interesting in that it displays images in a mosaic.  The presenter mentions “inspiration” a lot…does he really mean “image theft”?  Just curious.

Anyhow, images can be uploaded, tagged, viewed by users.  You can see what images are currently popular.  Images get three “strikes” before they’re removed from public viewing (thus eliminating the element of “surprise porn”).

Users can view one anothers libraries.  It’s a nice web design.  Smooth, clean.  Very pretty.

I like this feature: the “mood board”, which lets you group/arrange images together into a mosaic.  Reminds me of some notebooks I’ve seen from our designers in the Drama department.

I think I could use this.

There are some desktop applications provided to help you capture and upload images to ImageSpark.  Pretty cool.

Woop – some problems uploading.  I feel bad for this guy.  It’s a cool app, but his stuff is breaking.  Gremlins, probably.  He just said that they built it in 3 months – wow… pretty good.

Sub-note – concerning Bacon

There seems to be a lot of talk about “bacon” here.  I’ve heard two bacon related questions here.  Inside joke?  Geek humour?  Bacon’s great, but I have no idea what’s going on.


“Pizza” isn’t a presentation.  They’re serving it.  So I’m going to eat some.

Woop – spoke too soon, the buzzards are descending, and I’ll probably have to wait to get a chance at a slice.

After Pizza

Wow, I guess pepperoni and cheese just doesn’t cut it with this crowd.  Some pretty exotic pizzas here:  layer of veggies, layer of feta cheese, mushrooms, and a massive slice of ham on top.  Not bad.

Anyhow, back to the demos…


“Contagion analytics” – viral analytics for Facebook applications.

A platform to let developers track and optimize their social applications.

Think of it like Google Analytics, but geared towards Facebook apps.  In particular, Facebook games.

Whoa, apparently, a recent Waterloo dropout created a game on Facebook, released about 6 months ago, and is making 7 figures.  Holy smokes.  Apparently, this is pretty common, too.

Two things that Google Analytics doesn’t show you that Kontagen does:  How to filter by age, location, gender, number of friends, etc.

Privacy-wise, my hair is standing up, just a little bit.  Probably just a reflex.

Shows you “virality” – a statistic on how Facebook applications spread…  for example, on the demo that’s being shown, women are shown to see more viral on this particular application.

How many Facebook invite notifications are sent, acceptances, rejections, ignored, etc…

They’re apparently working with Google on integrating with OpenSocial, they’re funded by Facebook…they were 1 in 5 companies who won Facebook Funds money.

That’s all for the Demos…now for Ignite Presentations

Ignite presentation concept:  Standard slideshow presentation, but adds constraint:  20 slides, and the slides have to auto-advance every 15 seconds.

Leigh Honeywell

Hacker spaces…places in Toronto to do geek stuff, like hallways at a conference.  How to create these spaces.

Lots of interesting hacker spaces all around the world.

There’s one in Toronto:  Hacklab.To

Nice presentation, pretty big applause.

Amos Latteier – N8R TxT

A location-specific nature haiku by SMS.  Cool – you send a text to 416-662-3408 telling it your location, and it sends you back a haiku about where you are.

Hilarious!  Already, I love this.  I’ve added it to my phone contacts.

It’s pretty interesting how this thing works – Python, and a pastiche of web-services (Google Maps, other geo-location stuff….).

There’s also an iPhone client that detects your location automatically.  Awesome.


Interfaces are changing over time.  They’re going towards “ubiquitous, wearable” computers (hey, my CSC301 group sort of wrote a paper on this!).

Remember the command line?  The behaviour that this enforces is one of recall – you need a wealth of commands in your head to make this thing work.  Plus, the response is disconnected from the input that you gave it.

Remember Douglas Englebart?  Mouse, keyboard, GUI, etc.  This was the next step after the command line (though command line can still rock, right Wolever?).  GUI gives back an indirect response; the mouse cursor moves, but now you’re proxied by your mouse.

Enter the NUI (Natural User Interface) – an interface with objects with a particular affordance.  Think Microsoft Surface.

This is a trend toward Gestural computing.

General tip:  little animations or “polish” on your interface qualifies as part of the interface affordance.  Don’t just write them off as showing off, they make the interface pop, and can help your users “get it”.

Varun Mathur – Web 2.0 Startup Lessons

  • Focus on a niche.
  • Verun helped create an RSS Reader called Alertle, which they were very proud of
  • They got feature-itus.  Over-engineered, piled on features, etc.
  • They didn’t have an office!  Met at the Bahan centre, and worked out of their basements
    • Cool, but slowed down decision making
  • Out-sourcing works.  It doesn’t matter where your developers are, it matters who they are.  They have to be the right people for you.
  • They didn’t have a business plan – just had a start, but had no planned exit
  • Startups are like babies – need undivided attention…
  • Startups are a great experience, and open up a lot of opportunities.
  • “Jump off the cliff and start building the plane on your way will be surprised with what you can do”
  • Lots of good audience response, and “kudos for the balls to get out there”


Connecting layed-off skilled technicians with non-profit agencies, community services, etc.

This helps non-profit agencies get work done, lets technicians add community service to their resume (awesome), and network.

Project based work:  limited time, fast deployment, ability to bow out.

This guy is a good presenter – told a good story.  Got my attention.  It also sounds like he’s working with Andrew Louis.

And that’s the ball game!

And now…awkward networking with strangers.

Hilarious / Embarrassing Student Protest at NYU

Thanks to Ian Malone for showing me this.

So, there was a time when I was a naive, idealistic university student.  I thought big, greedy, evil corporations were driving the state of the planet into a tailspin.  I also thought that the University of Toronto was an unfeeling people destroyer.

Maybe some of this is true, but I think I’ve mellowed out.

Anyhow, here’s some video footage of an embarrassing student protest at NYU.  I think these guys were looking for some kind of revolution, but it just makes me cringe and giggle at the hilarity of it.  I’m all for the protest of worthy causes, but this video is a great guide on how not to cause an uprising.

To quote the article that I found this video on,

“You may not come in here. This is student’s free space,” says the cameraman, as a security guard pulls apart the flimsy barricade that the administration had chosen to leave in place for the past two days. As soon as the guard sets foot in the food court: “Excuse me, brutality here. You are on camera…Do not use brutality. You may not detain us, you are on camera!” This, as two security guard were moving away from him. “We deserve to be explained what is going on,” he says to several bored-looking cops. Here’s what’s going on dude: you’re not actually allowed to take over buildings. Believe it or not.


Bonus:  Here’s a link to the protest group’s website, where they seem to have claimed victory.

UCDP Showcase: The Directors’ Shows

I’m super exhausted tonight, but I wanted to make sure I wrote about the UCDP Directors’ Shows – because they’re coming up!

Let me explain.

At the UCDP, there is a 400 level course for Directing (I think it’s called Seminar in Directing, but I’m not sure…check the course calendar).  The students in this course each select a play that they’d like to direct, and pitch a concept to the UCDP faculty for consideration.  Upon approval, they cast the show, start rehearsals, work with designers, work with production people, and slowly assemble their shows.

They’re also my friends and colleagues, and I think they’re all very talented!

So the shows from this year’s directors are coming up.  Here are the dates and descriptions, copied verbatim from the program website:

Week 1: Thursday – Saturday March 12th -14th 2009  8pm

White Biting Dog –written by Judith Thompson, directed by Yevgeniya Falkovich

In the beginning there is a rapidly shrinking universe that is one life.  A young and successful man seems to have lost the warm little centre of his world, that something which is the reason for waking up in the morning, the “stuff that makes a smile rise up”.  He hasn’t smiled in years, he’s become emotionally numb, and settled in a place where the search for any meaning in life has ended with inconclusive results, where there is a void so profound that he lacks even the drive to keep filling it with day to day living.  It is at the moment when he stands at the top of a bridge prepared to exit when the play begins.

The Universe –written by Richard Foreman, directed by Olga Ryabets

This play has no story, no climax or anything. I think the point is contained not in the play, but rather in the experience of watching the play. I think experiences like this can potentially help a person in dealing with the unexpected. This is a theory I am testing out.

Week 2: Friday – Sunday March 20th – 22nd 2009  8pm

Shape of a Girl –written by Joan MacLeod, directed by Sarah Miller-Garvin

Little Girls Killing Each Other: It’s 1997 and all of Canada is shocked by the murder of Reena Virk, a young girl killed by several female classmates who claimed she had stole their boyfriends and spread rumours about them.  15-year-old Braidie stands alone on a beach and finds herself haunted by the similarities between herself and Reena’s murderers, forcing her to rethink everything she’s based her world on.

The (abridged) Adventures of Ali & Ali and the aXes of Evil: A divertimento for warlords – written by Marcus Youssef, Guillermo Verdecchia, and Camyar Chai, directed by Jiv Parasram

They made it through Mogadishu! They brought Hilarity to Haiti! They made Kabul Kollapse with laughter (may be related to bombings)! Now we’re bringing them to the UCDP! They’re Ali Hakim, and Ali Ababwa! And they’re bringing a Korean!

GSS / Highschool Folk Auditioning for DRM200:  It would be a good idea to see these shows – it’ll certainly get the interviewer’s attention if you tell them that you saw some student work at the UCDP.  Big plus.  If you miss these shows, it’s not the end of the world, but still, any edge you can get…