From GSS to UofT Drama (UCDP) – Part 1

So I took a trip past my old highschool yesterday, and it turns out that there are a bunch of people there interested in coming to the University of Toronto.

And a bunch of them want to take drama.

So I’m going to start recalling my experience going from Grimsby Secondary School to the University College Drama Program (UCDP) at UofT.  I’m going to break it into chunks – so I guess this is part 1.  I’m just going to freeball this, so I’m sorry if this is all over the place.

The drama program at Grimsby Secondary School is extremely physical.  The teachers, Soyka, Rosie, and Ebert, come from a physical tradition of theater originating from a man named Jacques Lecoq.  So, essentially, if you’re going to GSS, you’ve probably got a bit of Lecoq training in you.

And believe it or not, that GSS training is pretty special.  The Lecoq school is in Paris, and so it had to cross quite a distance to get into Grimsby, Ontario.  The theater tradition in Canada, generally speaking, does not involve theater as physical as Lecoq’s – it’s a bit of an anomaly.

So entering the UCDP was a bit of a shock.  The UCDP does not focus physically like GSS – it’s much more broad, and tries to give its students high academic exposure to a myriad of different theater styles.  I say academic exposure, because while you might talk about other styles in academic classes, on the practical level, the theater style at the UCDP is pretty consistent across the board for the first few years.

Let me back up a bit, and get a bit more precise:  I’m going to be talking about the performance practicals at the UCDP, so that means the acting classes.  There are three levels of acting classes:  DRM200, DRM300, and DRM400.  If you make it past auditions, you enter into DRM200 to begin with.

DRM200 is taught by Toronto writer/director Ken Gass – a legend in the Toronto alt theater movement, and the brains behind Factory Theater.

Assisting Ken is Nicky Guadagni, an extremely capable and talented actor, with a very impressive resume.

In, no particular order, this is the type of work we do in DRM200:

  • Classical monologues
  • Canadian monologues
  • Canadian play scenes
  • Shakespeare scenes
  • Improvisation in a realistic universe

When you take DRM200, you also take DRM201 – Voice and Movement.  You have to take this course, simultaneously – there’s no way around it, and I wouldn’t have it any other way.  DRM200 and DRM201 interlace quite nicely, with each class feeding into each other.  DRM201 is really two courses – Voice is one course, Movement is the other.  They each have their own instructor.  In DRM201, you have Cindy Block for Voice and Sallie Lyons for Movement.

Voice is a study of the Linklater approach to voice work, and is focused primarily on freeing the voice.  Freeing it from what, you ask?  Freeing it from the imposed tensions, the habitual stuff we put on it all day.  It’s about finding range, and expressiveness in your voice.  It’s about making people want to listen to you, and to convince them with what you say.

Movement is a whole bunch of stuff:  Laban, Viewpoints, Yoga…DRM201 Movement is mostly concerned with freeing physical tensions in the body.  In DRM201 for me, Sallie corrected by misaligned walk, pointed out some pretty crazy tension in my shoulders, and helped me discover some new muscles in my body.  It’s good stuff.

I’ll talk a bit more about the UCDP in Part 2.  I’ll probably talk about auditions too.

SQL Injection Prevention in PHP – Tip 1

It’s amazing – I’ve been going around, Googling for anything with “index.php?id=”…and that’s really all it takes.  Now, granted, SQL Injection isn’t new, and a lot of the top hits have taken some steps to protect themselves, but if you go deep – like, Google search page 23 deep – you’ll find ones that break if you put a semi-colon after the id # – and if it breaks, it’s vulnerable.

So, here’s my first tip on preventing SQL Injection – when you’re asking for an ID number, make sure it’s a number, and nothing else. Also consider using prepared statements – database wrappers like MDB2 for PHP make this easy.

Check this out – this might be how I would have done it 3 years ago:

<?php
  //Assume we're already connected to a MySQL database...
  $id = $_GET['id'];

  $result = mysql_query('SELECT * from pages where id='.$id);
  if (!$result) {
     die('Invalid query: ' . mysql_error());
  }
  ... //Code to print out my result to the page
?>

I’d do it this way now:

Note: My use of MDB2 might be a little rusty – I haven’t tested this code, and I usually compose RowDataGateway objects with MDB2 to represent my data.  So pay more attention to the structure than the actual syntax.

<?php
  require 'View.php';
  require 'MDB2.php';  //An excellent DB layer from the PEAR libs

  //Code to set $mdb2 as our DB connection variable
  //See http://pear.php.net/package/MDB2 for details
  $id = $_GET['id'];

  try {
    if(!is_int($id)) {
      //ID wasn't an int, it's no good, let's bail
      throw new Exception('Could not recognize the id that you passed');
    }
    //ID was an int, let's see if we can find the record
    $sql = 'SELECT * from pages where id=:id";
    $statement = $mdb2->prepare($sql);
    $statement->bindParam('id', $id);
    $result = $statement->execute();
    if(PEAR::isError($result)) {
      //Uh oh - our result was an error on the PEAR library level
      throw new Exception('There was an error communicating with the database');
    }
    //Insert the database result into the view, render, and die.
    $content = new View('templates/page.tpl', array('page' => $result->fetchOne()));
    $content->render();
    die;
  }
  catch(Exception $e) {
    //We must have caught an exception - put this into our
    //error page template with the error message, render, die.
    $content = new View('templates/error.tpl', array('message' => $e->getMessage()));
    $content->render();
    die;
  }
?>

Yes, it’s quite a bit more code. But I feel safer just looking at it.
Did I miss anything on this? Please post a comment if you  notice that I’ve left a gaping hole.  Learning is good.

Yearly Reading List

Someone recommended a book to me recently, and I told them I’d add it to my “to read” list.

But there’s a little problem:  that list is massive.  Impossibly massive.

Not to mention that some of my year is dedicated to re-reading old favourites.  Call it a tradition, a habit, whatever – each year, I re-read (or try to re-read) the same set of books.  And, every now and then, I’ll read a new book that gets added into that set.

So, here’s the set as it stands:

  • Brave New World by Aldous Huxley
  • One Day in the Life of Ivan Denisovich by Aleksandr Solzhenitsyn
  • Rendezvous with Rama by Arthur C. Clarke
  • The Black Hole by Alan Dean Foster
  • The Man Outside by Wolfgang Borchert
  • The Burglar in the Library by Lawrence Block
  • One Flew Over the Cuckoo’s Nest by Ken Kesey

I’m sure I’m not the only one with yearly reads.  Anyone else?

The Best Teachers…

I like the TED talks.  A lot.  When I was working at the school board, I wasted many a lunch hour going through the TED video library.

This guy, Barry Schwartz, makes a plea for common sense over bureaucratic rigidity in modern society.  He also sums up the qualities of every single teacher that I’ve ever had, who I considered “amazing”.

Pretty inspiring stuff.

See Barry Schwartz’s talk here.

What’s Google’s slogan?  “Don’t be evil”? Whoever I end up working for, I hope I go home every day feeling like I’ve really done a good thing, as opposed to feeling like I just made a few bucks from somebody.