Monthly Archives: June 2010

Review Board Statistics Extension – Demo Time

If I’ve learned anything from my supervisor, it’s to demo. Demo often. Step out of the lab and introduce what you’ve been working on to the world. Hit the pavement and show, rather than tell.

So here’s a video of me demoing my statistics extension for Review Board.  It’s still in the early phases, but a lot of the groundwork has been taken care of.

And sorry for the video quality.  Desktop capture on Ubuntu turned out to be surprisingly difficult for my laptop, and that’s the best I could do.

So, without further ado, here’s my demo (click here if you can’t see it):

Not bad!  And I haven’t even reached the midterm of GSoC yet.  Still plenty of time to enhance, document, test, and polish.

If you have any questions or comments, I’d love to hear them.

GSoC Update: My Review Board Statistics Extension

The Primary Goal

From the very beginning, my GSoC project has been mainly focused towards one primary goal:  I want to build an extension for Review Board that will allow me to collect information about how long reviewers actually spend reviewing code.

That’s easier said than done.  When I started, the Review Board extension framework wasn’t really in a state to allow such an extension to exist.

So I’ve been tooling around in the Review Board code for the past 2 months, preparing the framework, and getting it ready to handle my extension.

And last night, it started to work.  I can now give rough estimates on how long a reviewer has spent reviewing code.

How It Works

My extension adds a new table to the database which stores “reviewing sessions”.  Each reviewing session is associated to a particular review request and user, and also has a field to store the number of seconds that a user has spent in review.

I’ve created a TemplateHook that allows me to inject Javascript into key areas of Review Board (in particular, the diff viewer, and the screenshot viewer).  The Javascript does the following:  every 10 seconds, we check to see if the mouse has moved on the body of the HTML document.  If it has, we send an “activity” notification to the server.

The server receives this activity notification through the Web API, and checks to see if the time lapsed since the last session update was greater than 10 seconds.  If it is, we increment the working session by 10 seconds and return a 200 HTTP code.  If it isn’t, we don’t change anything and return a 304 HTTP code.

Next, my extension waits for a user to publish a review.  When it notices that a review is being published, it finds the working session for that user and review request, and then attaches it to the published review.  If the user then starts looking at the diff or screenshots again, a new working session is created.

The result?  A pretty decent estimate of how long a user has spent reviewing the code.  No time gets recorded if the user gets up and has a sandwich.  No time gets recorded if the user is on another tab reading Reddit.

An image showing how reviewing time is displayed to the user

Not bad.  For a first draft, anyhow.

I think I’m going to try to chart the data somehow, so that users can track their inspection rates.  I’ll let you know how that goes.

My Poland Journal: Index

Today is June 15th.

Exactly 1 year ago today, I left on an airplane with the rest of my drama class on a 15 day trip to Poland.  We saw the country, and we saw the theatre.

I took photos and wrote notes the entire time.

Over the course of the year, I’ve sporadically been putting those notes and photos online.  I find it appropriate, if not entirely coincidental, that my last entry should be published exactly one year from the day of our departure.

You’ll notice in my entries that I switch sporadically between past-tense and present-tense.  This is because half of the time, I’m quoting directly from my journal, and the other half, I’m quoting from memory.  I know that’s a writing faux pas, but I’m not planning on fixing it. Sorry.

So, without further ado, here is the index to My Poland Journal:

So there you have it.  It’s done.

And that’s all I really have to say about that.

Poland: Part 17 – Homeward Bound, Final Entry

June 30 – 8:53AM (Poland Time)

We’re on the road, on our way from Wroclaw to Warsaw.

We had gotten up at 5:30AM, said goodbye to Una, Linn, Tara, Tom and Sonia (they were staying behind in Europe), packed, and boarded the bus.

We’re making good time – there’s light traffic and good weather.  We’re at a rest stop for breakfast:

[simage=607,288]
[simage=608,288]
[simage=609,288]
[simage=610,288]

3:07PM (Poland Time)

We arrived at the airport in Warsaw around 1PM.

[simage=611,288]
[simage=612,288]
[simage=613,288]
[simage=614,288]

We hung around, got our bags checked, and eventually said goodbye to Tamara.  She’d be traveling home sometime later.  Thanks so much for the great trip, Tamara!

[simage=615,288]

Security was no fuss.  We killed time in the duty free waiting for our flight.  I bought a chocolate bar with my last 10z.  We board at 4PM.

[simage=616,288]

We’re all really anxious to get home.  I think we’re all pretty sick of traveling now – and we have an 8+ hour flight ahead of us.  Just look at these faces.

[simage=617,288]
[simage=618,288]
[simage=619,288]

We just want to get home.

Eventually we boarded the plane:

[simage=620,288]

7:05PM (Poland Time)

We’re already an hour into the flight.  Somehow, this plane isn’t giving me too much confidence.

The safety video (on a single screen at the front of the plane) kept flickering in and out, and I think I missed a lot of important information.

There were several instances where music would start to play for a few seconds in the cabin, and then abruptly stop.

Ryan and Jiv just noticed that there’s water dripping on them from above the overhead compartment.

My headphones don’t seem to work unless I hold them in.

And there’s masking tape holding part of the wall together.

A Lapse in Writing Cohesion

At this point in my journal, my writing really started to deteriorate.  The timestamps have less and less meaning as I travel across time zones.  I think my pen was starting to run out of ink, I was exhausted, and the boredom of the flight was starting to drive me nuts.  I’ll do my best to translate the scrawl that ended my journal.

8:50PM (Poland Time)

No idea where we are, so no real clue on what the actual time is.  Still, it’s pretty bright out.  Looks like mid-afternoon outside.  This is going to be the longest day of my life.

I’m trying to read Guns, Germs and Steel, but I just can’t concentrate.  I can’t wait to be home.

10:20PM (Poland Time)

Hannah Montana is the inflight film.  SHOOT ME.

[simage=621,288]
[simage=622,288]
[simage=623,288]
[simage=624,288]

The minutes are crawling by.  3 or 4 more hours.  Pen is starting to fail me.

11:45PM (Poland Time)

Still bright out.  Spooky.  About to get our second meal!  Surprise:  it’s a sandwich.  And the Nutcracker Suite just came on in my headphones again.  That’s 6 times in total now.

12:55AM (Poland Time)

Just filled out declaration card for Canada Customs.  There are lots of confused people who don’t speak English on the plane.  Lots of passengers standing up, and gesturing to one another frantically.  Wish I could help, but I don’t speak Polish.

1 hour remaining.  Can’t wait.  Flying over Québec.

Final Entry

Got off the plane.  Buzzed through customs.  Luggage was late getting onto the carousel, but it eventually showed up.  Said lots of goodbyes to people.  Jiv’s family offered to drive me home, and I gratefully accepted.

Noticed plenty of garbage on the streets on the drive in – though I had imagined more.

Eventually showed up at my apartment in Toronto.  Said goodbye to Jiv and his family.

Went inside.  Fingers barely worked.  Made contact with Em, the guys, and my family to let them know I was alive.

And then collapsed into bed.  It was good to be home.

Click here to go back to My Poland Journal: Index

Click here to go pack to Part 16: Last Full Day in Poland, and THE TEMPTATION OF QUIET VERONICA

Poland: Part 16 – Last Full Day in Poland, and THE TEMPTATION OF QUIET VERONICA

June 29 – 12:10PM

Today is our last full day in Poland.  We’re leaving for Toronto tomorrow.

To be honest, I’m kind of glad.  I like Poland just fine, but I really just want to go home now.

I slept in this morning, and then had a big breakfast of crépes with Jiv, Ryan, Reid, Yev and Alexi.

With my stomach full, I set off for one last solo-tour of the Wroclaw square.  I went into some shops I hadn’t seen yet.  I revisited some ones I was already familiar with.  My pen was starting to run out (my journal is almost full!), so I bought a new one and am using it right now.

I sat in the square and listened to people speaking different languages.  I enjoyed the weather.  It’s a nice day today.

12:55PM

I’m back at the hostel.  This place is in really good condition, and nicely decorated.  The beds and bathrooms are pretty nice, and a dream compared to what we dealt with in Poznan.  The staff (a family, I believe) seem a bit rude and resentful – like they really don’t enjoy running a hostel.  I’m almost afraid to ask for the key at the front desk, as it’s usually accompanied by a rolling of eyes and some attitude.

Pro tip:  hostels are a good place to donate old computers to.  As somebody who has now been in a few hostels, I can’t stress how important basic Internet connectivity is.  Just a thought.

I think I’m starting to get over my cold a little.  I seem to be over the worst of it, anyhow.  Others in the group are starting to get sick though – it’ll be good to get everyone home and rested.

We were going to see a Pina Bausch talk-back session today, but it was canceled due to sudden health problems (Pina Bausch unfortunately passed away on June 30th, a day after this entry was written).

Tomorrow is going to be a long day.  We’re waking up at 6AM.  Then, a 7 hour bus ride to Warsaw.  After that, an 8-9 hour flight to Toronto.  Both Yev and Jiv have offered me a ride from Pearson Airport back to my apartment – I’m grateful, and at this point I’ll climb into the first car I see.

I’m not sure what the best course of action is jet-lag-wise, so I’ll probably just try to stay awake for the entire trip home and see if that works.

When I get back, I’ll take a few days to rest.  I’ll hang out with Em and the guys.  I’ll write a few blog posts.  I’ll upload photos.  Then, I’ll be back to work on MarkUs (I wonder how Nelle and Severin are coming along?).

10:30PM

After hanging around the hostel for a bit, Alex and I left and walked around downtown. We chatting about the trip, and what we were going to do when we get home.

Eventually, we headed to the theatre to see a film recording of a Krystian Lupa play.  I tried my best to enjoy it, but I really couldn’t get into it.  Like I mentioned earlier, video recordings of plays often don’t work well at all for me.

I think I napped through a good chunk of the film.  Eventually, it ended, and I caught up with Alexi and Yev as they were leaving the theatre.

And it was absolutely pouring out.  Buckets.  Torrents.  Huge rainfall.  I was scared to take out my camera for a photo in case I damaged it, so I can only describe it:  lots of rain.

We went back to the hostel to rejoin the rest of the group, and then purchased tram tickets for the next (and final) theatre piece of the trip:  The Temptation of Quiet Veronica.

THE TEMPTATION OF QUIET VERONICA (or KUSZENIE CICHEJ WERONIKI) directed by Krystian Lupa

Maybe it was the exhaustion.  Maybe it was the fact that my body was starting to rebel against this trip.  Maybe I’d just seen to much theatre these past two weeks.

Whatever the reason, I just could not keep my mind on the show.  The only remarkable thing I can think of happened just as the play was beginning.

I’m sitting in between Ryan and Alex.  The stage is still dark, and the audience is buzzing.  Ryan looks at us and says, very seriously, “I swear to god, if I see one more naked person, I think I’m going to flip out.”

The house lights started to dim.  The stage lights lit up.  And guess what was standing there, spread-eagle in the middle of the stage?

You guessed it.

For the rest of the show, all I could really focus on was Ryan’s hand, gripping, white-knuckled, on to my knee.

The Last Supper

It was our last supper together in Poland.  We decided to head back to that same place we’d eaten at after seeing CLEANSED, and what our tour guide called “the oldest restaurant in Europe”.

[simage=572,288]
[simage=575,288]
[simage=576,288]

It was an important dinner.

This trip marks the end of an era for me. I’ve known the people I’m traveling with pretty intimately for about 4 years.  We’ve acted together, studied together, sweated, presented, and complained together.  It’s a tight group, and when this trip is over, it will signal the end of my time studying at the UCDP.

[simage=577,288]
[simage=578,288]
[simage=579,288]
[simage=582,288]
[simage=584,288]
[simage=593,288]
[simage=594,288]
[simage=600,288]

Glad to go out with a bang, though!  We bought Tamara a cake with an explosive on top:

[simage=589,288]
[simage=590,288]
[simage=591,288]
[simage=596,288]
[simage=595,288]

It was a good dinner.  Afterwards, we all headed back to the hostel and went to bed.  With layovers, tomorrow was going to be a 20 hour trip home.

Click here to go to Part 17: Homeward Bound, Final Entry

Click here to go back to Part 15: Back to Wroclaw, Suzuki, FRAGMENTS, and NEFÉS