Author Archives: Mike Conley

Code Reviews

My graduate supervisor has asked me to look into the following problem:

Code reviews. They can help make our software better. But how come I didn’t learn about them, or perform them in my undergrad courses?  Why aren’t they taught as part of the software engineering lifecycle right from the get-go?  I learn about version control, but why not peer code review?  Has it been tried in the academic setting?  If so, why hasn’t it succeeded and become part of the general CS curriculum?  If it hasn’t been tried, why not?  What’s the hold up?  What’s the problem?

I’m to dive into academic papers regarding the above, and blog about what I find out.

Stay tuned.

Adventure Games

I wouldn’t consider myself a “gamer” by any stretch of the imagination.

Just watch me try to play Halo – I’ll run around in circles, button-jamming before somebody mercifully puts me out of my misery.

And that’s common across games that involve me running around with a gun.  With the exception of Portal (which was incredible), the whole first person shooter genre kind of bores me.  I’m not really impressed by amazing 3d graphics, or physics/particle engines.  I just…don’t care.  I just don’t get the same pleasure out of blowing up and shooting enemies that other people seem to.

I like something a bit more cerebral.  I like story (which is why Portal is an exception).  I like puzzle solving.  I like thinking for a character, not just running around, pulling the trigger for a character.

And this is the way it’s always been for me.

But ever since I was a kid, I’ve had a real passion for adventure games. I used to play all of the old Sierra stuff…Kings Quest I-VI (before it turned lame – VII onward), the Space Quest series (5 being my favourite, but I have a soft spot for the original), the Gabriel Knight series…

And that’s just Sierra.  LucasArts brought about Sam and Max, Day of the Tentacle (a masterpiece), The Monkey Island Series (also brilliant), The Dig (my personal favourite), Full Throttle, Grim Fandango

There was Myst, and Riven. So good.  And can’t forget Zork.

Simon The Sorcerer 1, 2, and 3…

I loved these games.  I still love these games.  I love being integrated so deeply into an interesting story, and having to rely on my wits and intelligence to solve problems.  I get a cerebral kick out of solving the various puzzles that the game designers throw at me.

And what these games all compel me to do, without fail….is:  to make one.  Make an adventure game.  Tell a good story.  Suck the player in, and throw puzzles, deep character, and thick story/plot at them.  After I finish one of these games, I usually end up Googling “how to make an adventure game”, and spending the rest of my night reading up on it.  And anytime I’m on a holiday break, and have nothing to do…I always gravitate to the subject.

I’ve read all about LucasArts SCUMM and GrimE engines…Sierra’s AGI and SCI engines… Adventure Soft’s AGOS engine…  and I’m grateful for the ScummVM and FreeSCI folk who share my passion, and have allowed me to play all of these old games on my Linux box.  Reading about these engines just makes me want to use them to build my own game.

I could try to use a number of closed-source adventure game engines out there – I hear the Wintermute engine is pretty good.  So is Adventure Game Studio.

But somehow…they never satisfy me.

The MAD adventure game engine is open source, and has some good ideas…but the code is also a bit of a mess, and hasn’t been maintained since 2003.

So I’ve always wanted to build my own adventure game engine, and solve all of the problems that one would have to in order to make it work:  path finding, graphics, animation, scripting, layering/masking, fonts…  Lots of neat sub-problems.   It’d be hard, but I also think it’d be a lot of fun.

So just watch me…it’ll happen someday.

The Shoulders of Tall, Smart People

Recently, I came to the realization that I’ve been writing computer programs in one form or another since I was about 6 or 7 years old.

Along the way, I’ve had plenty of people to influence the way I think about code, and how I write it.  Sure, there have been plenty of textbooks along the way too, but I want to give some thanks to the people who have directly affected my abilities to do what I do.

And what better way of doing that then by listing them?

A Chronological List of People Who Have Influenced My Coding

  1. My parents, for bringing home our first family computer.  It was an 8088XT IBM Clone – no hard drive, 640K of RAM, dual 5 1/4 floppies…it was awesome.  This is the computer I started coding on – but I couldn’t have started without…
  2. My Uncle Mark and my Aunt Soo.  Both have degrees in Computer Science from the University of Waterloo (that’s where they met).  My recollection is pretty vague, but I’m pretty sure that a lot of the programming texts in my house (a big blue QuickBasic manual comes to mind) surely didn’t come from my parents – must have been those two.  With the book in one hand, and the 8088 in the other, I cranked out stupid little programs, little text adventure games, quizzes, etc.
  3. The online QB community from the late 1990’s to the early 2000’s.  When my family got online, I soon found myself hanging out at NeoZones, in the #quickbasic IRC channel on EFNet… actually, a lot of crazy stuff was being done with QuickBasic back then – I remember when DirectQB came out, and somebody was able to code a raytracer…in BASIC.  It was awesome.  I’d say these were my foundation years, when I learned all of my programming fundamentals.
  4. My friends Nick Braun, Joel Beck, and Doug McQuiggan – these three guys and I used to come up with crazy ideas for games, and I’d try to program them.  I’d come home from school, and pound out code for a computer game for a few hours in the basement.  More often then not, these projects would simply be abandoned, but still, a lot was learned here.
    Joel, Doug, our friend Julian and myself were also members of a band in highschool.  It was my job to build and maintain the band website, and this is when I learned to write HTML, basic Perl, and simple JavaScript.
  5. After highschool, I went into Electrical and Computer Engineering at the University of Toronto.  I didn’t do too well at the Electrical bits, but I could handle myself at the Computer bits.  I learned OOP, Java, and basic design patterns from Prof. James McLean.
  6. I also learned a great deal from Prof. McLean’s course text – Introduction to Computer Science Using Java by Prof. John Carter.  I know I said I wasn’t going to mention textbooks, but I also got taught Discrete Mathematics from Prof. Carter, so I thought I’d toss him in too.
  7. My second (and last) semester in ECE had me taking Programming Fundamentals with Prof. Tarak Abdelrahman.  I learned basic C++ from Prof. Abdelrahman, and how to deal with large systems of code.
  8. After my move to the Arts & Science Faculty, I took my first Computer Science course with Dr. Jim Clarke. I learned about Unit Testing, and more design patterns.  I also eventually learned some basic Python from him, but I think it was in another course.
  9. I took CSC258 with Prof. Eric Hehner, and learned about the structure of computer processors.  Physically, this was a low-level as I’d ever gotten to computers.  I was familiar with writing Assembly from my QB days, but Prof. Hehner’s Opcode exercises were really quite challenging – in a pleasant way.  Also, check out his concept of Quote Notation
  10. After that year, I spent the first of three summers working for the District School Board of Niagara.  Ken Pidgen was my manager, Mila Shostak was my supervisor.  Ken gave me incredible freedom to work, and soon I was developing web applications, as opposed to just fixing up department websites (as I originally thought I would be doing).  Mila gave me guidance, and showed me how to use CSS to style a website.  She also got me started using PHP and MySQL to create basic web applications.
  11. While working at the Board, I had the pleasure of sitting across from Jong Lee.  Jong and I would bounce ideas off of one another when we’d get stuck on a programming problem.  He was very experienced, and I learned lots of practical programming techniques from him.
  12. Michael Langlois and Ken Redekop acted as my clients at the Board, and always gave me interesting jobs and challenges to perform.Everyone at the Board was always very positive with me, and I’ll always be grateful that they took a newbie undergrad under their wing!  I was given a ridiculous amount of freedom at the Board, and was allowed to experiment with various technologies to get the job done.  Through my three summers there, I learned bits about Rails, CakePHP, MVC, network security, how to deploy an application remotely, how to run a local server, how to develop locally and post to remote, ORM, Flash, web security…so many things.  The list is huge.
  13. Karen Reid and Greg Wilson have been the latest influences on me.  The MarkUs Project was the first project I’ve ever worked on with a team.  It was my first time seriously using version control, my first time using a project management portal (Dr. Project), my first time learning Ruby, and my first time working on an open source project.  I’ve also learned plenty about time management, people, the business of software, and how to get things done.  Again, I’ve been given lots of freedom to learn, experiment, and hone my craft.

Anyhow, these are the people who come to mind.  I might add to this list if I remember anyone else.

But in the mean time, for the people listed above:  thank you.

Poland – Part 9: The Halfway Point

June 22, Morning

During breakfast, I found out that it was another free day – once more, Wroclaw was our playground to romp around in independently, followed by another version of Hamlet (HAMLET. SILENCE FROM THE BODY by Roberto Bacci) that night.  It was also our last night in Wroclaw – we were going to leave for Krakow early the next morning.

The deal was even sweeter when Tamara handed us a 250z cash-infusion.

So what did I do?  Did I hit the town, and eat at restaurants?  Did I go sightseeing?  Did I go shopping?

Actually, I did laundry.  Yep, I had accumulated quite a collection of dirty laundry at this point, so I stayed back at the hostel, and slammed some dirty clothes into the washing machine.  While waiting for my clothes to get washed, I hung out in the hostel kitchen with Chantelle.

While talking with Chantelle, I learned that a few of the ladies in our group had noticed that men in Poland were a lot more obvious when “checking out” the women around them.  Chantelle told me that a few of them had even felt uncomfortable at times, and that it was almost as if some men wanted them to notice.  I told her that I wondered if it was just a European thing, and she said that she didn’t know.

I also took a time out to play with the Hostel Dog:

[simage=379,288]
[simage=380,288]

2:15PM

With my laundry air-drying on a clothing rack in the hostel, I eventually left to go exploring on my own.

[simage=376,288]

It was chilly, rainy and grey out.  I also wasn’t sure where everybody was – we seemed to be all scattered about.

I eventually bought some postcards and a calling card – I was going to call Em later on that day.

2:55PM

I ran into Tara, Tom, Alex (or was it Alexi? My writing is a bit sloppy), Sonia, Ryan and Jiv at the milk bar we had originally seen during our tour of Wroclaw.  I had something to eat, and then we all left together.

Eventually, Ryan, Jiv, Alex (Alexi?) and I split off and walked through some of the small artisan shops.  We talked with a shopkeep, who told us about a major flood in Wroclaw that had happened about a decade before.  Apparently, flooding in the area was quite common.

We thanked the shopkeep, and left.

4:15PM

Somehow or another, I had gotten back to the hostel, and started writing postcards.  I also took the opportunity to call my girlfriend Em, and tell her how I was doing.

After the phone call, I felt a little Wroclaw-ed out, and felt I needed some downtime to recouperate.  I went into the common room and watched some BBC News.

Finally, I got up, and went out again for something to eat with Tom, Tara, Ryan, Alex, Una, and Linn.

6:33PM

If it hasn’t become clear already, the bunch of us became expert restaurant-hoppers.  Choosing restaurants, however, could be a bit of a chore.  Often, there were times where we’d travel the entire square several times before deciding on something we could all agree upon.

And for that night, the restaurant was a Greek place called “Ready’s”.  This is what my guidebook says about that restaurant:

Paper napkins and plenty of plasticky bits and bobs greet you in what rates as a very poor man’s Sphinx.  Eating is just a means to an end here, with plates of kebab meat, fries and chicken being the core dishes.  You may enjoy Ready’s, but only after a dozen beers.

Maybe it’s my attraction to no-frills stuff, but I enjoyed this place.  I’d eat there again.

In fact, we were enjoying our meal so much that we lost track of time!  We paid our bill, rushed out, and tried to figure out how to get to the theatre to see Bacci’s HAMLET.

7:45PM

After a failed attempt at walking to the theatre, we decided as a group to try to take a cab.  Eventually, we were able to hail one down, but only four of us were able to take it.  After a quick discussion, Ryan, Alex, Una and Linn hopped in, and the rest of us tried to hail another cab.  Tom, Tara and I were doubtful that we’d make it.

8:00PM

Luckily, we were able to hail a cab.  After flailing some arms, and gesturing wildly at our maps, we were able to communicate to the driver where exactly we wanted to go.  I think he knew we were in a hurry, because he floored it.

He pulled up right to the theatre entrance.  We paid, hopped out, and rushed into the theatre.

HAMLET. SILENCE FROM THE BODY Directed by Roberto Bacci

When we got inside the theatre, the show was just about to begin.  There was no seating left, so I sat in the aisle.

The lights came down, and the show started.

This version of Hamlet was spoken in rapid-fire Italian.  There were English and Polish subtitles projected on a surface above the stage.  Half-way through the production though, the English subtitles stopped.  They just stopped coming.

I think this was a good thing though, since it allowed me to focus on what I was seeing and hearing on stage, as opposed to flicking my eyes up to the screen every few seconds to get my place in the story.

So what did I see?  This version of Hamlet had the cast (with the exception of Hamlet himself) dressed in fencing armor – masks and all.  I thought the masks helped them pull off some nice sleight of hand, since it allowed them to “dissappear” characters into the anonymous chorus, and have them re-emerge elsewhere.  Actual fencing was performed on stage as well, which was exciting to see.

The stage was panelled in wood, giving it a very red, and earthy tone.  The major set piece was what appeared to be a large, rusty frame or scaffolding, somewhat like a jungle-gym.  This apparatus was climbed upon, walked through, and even had “drawbridge” doors on either side of it.  It was a neat contraption, though I was worried for the actors safety when they were climbing it at some points, since it seemed to have a very high centre of gravity.  I also wish they had used it more – it seemed to have a lot of potential.

The acting was decent.  I had a conversation with Tom about the show afterwards, and we seemed to agree that this was a pretty “meat and potatoes” Hamlet.  It did the job of telling the story, and it told it pretty well, but nothing blew our socks off.  Tom said that Bacci’s Hamlet was “like a Soul Pepper production, if they had hired a kind-of experimental director.  Pretty strong, but nothing special.”

We talked about Hamlet for a bit, and then walked back to the Hostel.  I hung around in the common area for a bit, and then I went to sleep early – we had to wake up around 5:30AM to get ready for our bus trip to Krakow the next day.

Click here to go to Part 10:  Journey to Krakow, Wawel Hill, and The Dragon

Click here to go back to Part 8:  A Boat Ride, Eating, Videos, AJAX, and More Eating