CodeSprint ’09: What Happened?

For those of you who don’t know, this past Thursday, Friday, and Saturday, I’ve had my face planted into a laptop, working 8 hour days on the OLM project.  

And I wasn’t alone.

I was in a room with plenty of other Computer Science students – some even coming from as far as the West coast to join us. Good people, good times, interesting problems, and free food – all care of Greg Wilson, Karen Reid, and the other support within the department.  It was really fun, and I learned a lot.

And we coded our asses off.  Literally.  It was awesome.

So what did I end up actually doing?  Well, when TA’s are marking code, there are little menus that let them attach pre-built annotations to highlighted sections of code.  I’ve also replaced the ugly Javascript Prompt dialog that asks for new annotations with a nice, modal dialog, using LivePipe UI.  The team also got the rubric listed next to the code, and we now have the ability to apply grades on the rubric!  Awesome!  We’re almost there!  There are plenty of tickets, plenty of ways this code and interface can get cleaned up, but we almost have the behaviour we want.  And that’s something.

If I get a chance, there are two things I’d like to do:

  1. Replace the SyntaxHighlighter Javascript code with something a little less client-heavy.  Maybe we can syntax highlight the code on the server side before we send it to the client for viewing?  That doesn’t sound too bad… does anybody know of a Ruby gem that’ll do that?
  2. Refactor the annotations code.  Right now, it’s a lot of Javascript.  A lot.  I’d like to shave it down, simplify it, streamline it.  But that’s what refactoring is all about, right?

Oh, and, in other news, I’m considering graduate school, and doing Google Summer of Code.  Just something I’m mulling over in my head…

Update:  Coding for three days straight brought sooooo much tension back into my shoulders…this is where Movement class exercises become very handy…

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…

From GSS to UofT Drama (UCDP) – Part 2

This is a long post.  Maybe make yourself a sandwich first.

Here’s the story of how I accidentally auditioned for the UCDP DRM200 performance class, and failed my audition.

I had just completed my first year of university at UofT as an Electrical / Computer Engineer.  And I had hated it.  Like, really, vehemently, hated it.  The computer programming classes were fine, but the other ones….bleh.  ECE was not for me.  So I switched out of Enginnering, and transferred to the Arts & Science faculty.  I hadn’t declared any majors yet, so I was more or less free to pick and choose among the courses in the calendar that I liked.  I had no direction, no goal, graduation date, no program of study, nothing.  I was starting from scratch at UofT, with only a few transfer credits to my name.

So I dug through the UofT calendar, and here’s what I chose:

  • AST251 – Life on Other Worlds
  • JEF100 – The Western Tradition
  • MAT137 – Calculus!
  • MUS325 – The Age of Haydn and Mozart
  • SCM219 – Studies in Mass Media
  • CSC148 – Introduction to Computer Science
  • PHL273 – Environmental Ethics
  • DRM100 – Introduction to Drama – Form and Style

Yep, I spread it out, just choosing the ones that sounded interesting.

Now, the UCDP website just recently got a face-lift (I think they switched to Joomla!, if it matters).  Anyhow, organizational-wise, it wasn’t in the greatest shape when I was in second year.

So, scouring around, I found on the site that if I wanted to take any of the Drama courses, I needed to audition and be accepted, and that there were only a few audition dates, and they needed a headshot, and cover letter, and a ballot form.

So, naturally, I printed out the ballot form, wrote out a cover letter, sent in a photo.  A week or two later I got an email with my audition date.  Cool.

Here’s where it starts to get hairy.  Grimsby is about an hours drive from Toronto, and on the morning of my audition, traffic was really bad.  By the time I got to the audition location, I was about half-an-hour late.

Yikes.

Plus, it didn’t help that the man who was running the audition (who I would later discover to be Ken Gass himself) seemed quite annoyed at my lateness, and the fact that I’d missed half of the audition.

So, what did we do in the audition?  Well, from what I remember, he gave us an extremely short monologue, and we had to deliver it each, one by one.  Here’s the monologue:

I thought we were going to

Oh

Forget it

Just forget it

We had to find a way to deliver that.  So naturally, everyone was trying to do something different and interesting, and I did mine, and I have no idea how I did.

What I did notice, was this strange…familiarity between people.  All of the people auditioning seemed to know one another.  This was kind of spooky.  I felt very out of place, and way out of my depth…and I totally knew I was bombing the audition, on top of my late arrival.  I could feel Ken Gass, scowling into my brain.

And then it was over.  The audition part, anyways.  Everyone got off the stage and started talking to one another – again, like they all knew one another – and I just grabbed my stuff and left.

But it wasn’t over…the audition has a second half.  It’s an audition AND an interview.  So, I killed time at Tim Horton’s with my Dad (probably telling him how much I bombed the audition, while he listened, patiently) and waited until my interview time came.

And then my interview time came.

I walked into this room…and there were three people sitting across from a table, and a chair on my side, facing them.  I sat down.  I recognized Ken as one of the interviewers…the other two I didn’t recognize, but I’d later find out that one of them was Pia Kleber, who at the time was the Drama Program Director.

So, right to business (since they were auditioning/interviewing hundreds), she asks me what kind of theater I’ve seen lately.  I stumble a response, not prepared…I say something about the Lion King production, and The Blue Man Group… they didn’t seem impressed at all.  She asked me what kind of plays I liked, and I said I enjoyed Shakespeare (the only playwright that came to mind instantly).  She quizzed me on Shakespeare, asking me my favourite play, and why I liked it, and basically proved to herself (and myself) that I didn’t know what I was talking about.

And then she asked the big one:

So, tell me, what will you do if you don’t get into Drama 200?

And I sit there.  Confused.

I don’t want to be in Drama 200.  I signed up for Drama 100

There’s an uncomfortable pause.  Ken Gass facepalms.  Pia Kleber stares at me in dumbfounded silence, and then says:

You don’t need to audition for Drama 100.  Take some workshops, see more theater, and audition next year.

And I walked out.  I completely blew my audition for DRM200, a class I wasn’t even going to take.

The next summer I auditioned again.  I had seen more theater, read more plays, prepped…I don’t think Ken recognized me, but if he did, he hid it well.  Anyhow, that summer I got in.  And that’s how it happened.

The end.

So, take home message:

Coming out of high-school, you do NOT need to audition for DRM100.  You only need to audition if you want to get into DRM200.

If you are auditioning from DRM200, here are some tips:

  • See lots of theater in Toronto.  Not Broadway stuff, the indie stuff.  Go to Factory, Tarragon, Passe-Muraille, Buddies, etc.  Some really great shows.
    • Added bonus:  I know that Factory gets volunteers to usher shows, and that volunteer ushers get to watch the show for free!  Contact Factory at their website for more info.
  • Get familiar with some Canadian plays.  Read some John Mighton, George F. Walker, Judith Thompson.  Read a Shakespeare play or two, that can’t hurt either.
  • Show up on time
  • Just relax.  Everyone else there is probably as nervous as you are.  Be cool.
  • Ken will probably get you into a big circle at the start of the audition, and then one by one, you enter the circle, say your name, and then leave the circle.
    • Don’t make it a scene.  Just follow the instructions.  In my audition, a guy fake-tripped into the circle, and started making it a little gag scene.  Don’t.
    • Wait until you get into the center, plant, and then say your name clearly.  Make eye-contact with the people in your field of vision.  Turn your head back and forth to bring more people into your field of vision.
    • Make sure it’s the approximate center of the circle.
    • Don’t scream, yell, or otherwise force your name.  Just say it clearly so everyone can hear it.
    • Pay attention while other people are doing the exercise.

That last one is a biggie – show respect to your fellow audition-ees.  Ken (et al) are looking for lots of things; but one of the big ones is this:  Is this person someone I will want in my class?  Is this person someone I can work with?  If you’re chatting while someone else is doing their work, it’s no good.  Even when you’re not on stage, if you’re watching someone else work, you’re learning.

Anyhow, this is a super-long post, I think I’m going to wrap it up.

Mouseover / Mouseout on Nested Elements

Did I mention I’m code-sprinting over the next three days?  Actually, next two days – I just finished my first day today.

What’s code-sprinting?  It’s a trendy term for sitting down with your team, and plowing through code en masse, trying to get as much done as possible.  8 hour days, cookies, coffee, whiteboards, pizza, crashes, bugs, tickets, fixes, etc.  We’re trying to cram 3 weeks of work into 3 days.  Cool.

In case you don’t remember, I’m working on a project called Checkmark (or OLM…still undecided on the name) – a tool for Professors/TAs to receive student code submissions, and to facilitate easy marking and annotating of the submitted code.

So here’s something I learned today while coding:

Say you have some nested DIV’s, and the parent DIV has a mouseout trigger.  Something like this:

<div id="parent" onMouseOut="alert('Mouseout triggered on parent');">
  <div id="child_1">This is some child</div>
  <div id="child_2">This is another child</div>
</div>

As you would expect, the mouseout event will get triggered if you move your mouse over the parent DIV, and then move the mouse back out again.

But it also gets triggered when you move your mouse OVER any of the child DIV’s.

Say what?  That’s right – even though you’re still inside the parent DIV, the mouseout event got triggered.  I found this out today when I was trying to code dropdown menus in Javascript/CSS using Prototype – I could get the dropdown menus to appear find when I clicked on the appropriate button, but they’d disappear again as soon as I put my mouse over any of the sub-elements of the DIV.

So how did I fix this?  I found this example code, and adapted it for my purposes.  This code assumes that you’re using the Prototype Javascript library.

$('some_dropdown').observe('mouseout',
  function(event) {
     //We could probably replace the following with Event.element(event), but oh well.
     var target = $('some_dropdown');
     var mouse_over_element;  //What the mouse is currently over...
     //So let's check to see what the mouse is now over, and assign it to mouse_over_element...
     if( event.toElement ) {
        mouse_over_element = event.toElement;
     }
     else if(event.relatedTarget) {
       mouse_over_element = event.relatedTarget;
     }
     //In the event that the mouse is over something outside the DOM (like an alert window)...
     if(mouse_over_element == null) {
        return;
     }
     //Now we just make sure that what the mouse is currently over is NOT a descendant of
     //the dropdown, and that the target is not the current mouse_over_element (I can't
     //remember which case this covers, but it's important)
     if(!mouse_over_element.descendantOf(target) && target != mouse_over_element) {
        target.hide();
     }
   }
 );

And it works.  Whew!  Just thought I’d share that little snippit.