Monthly Archives: March 2009

Navigating School Life, One Day at a Time

Once, somewhere, someone said “live life one day at a time”.

That’s basically how I’m approaching my school life, seeing as how an onslaught of due dates and final presentations is rapidly approaching.

So, in stark contrast to my proposal to “live life one day at a time”, I’m now going to list what’s going on and coming up.  You may have seen this list before, but there are updates now.

Am I freaking out?  Not really – I think things are going to work out.  Just have to take it one day at a time.

My Web App in the News

ANOTHER UPDATE: Whoops.  Fixed the links to the auction and the St. Catharines Standard article.

UPDATE: Apparently, the Feds are getting in on the online auction circuit too.

Over the past three summers, I’ve been employed by the District School Board of Niagara as an internal web application developer.

One of my first jobs in the summer of 2006 was to rebuild the online auction application that the DSBN Purchasing department ran.  The original auction let the Board dispose of old equipment quickly and easily, and was quite popular.  Unfortunately, it was also written in (almost) unintelligible/unmaintainable Perl.

So I rewrote it by myself, and learned PHP/MSSQL along the way.  We called this new auction site The Government Surplus Online Auction, and we opened it up so that other government agencies could also post items for auction.

Things went along fine until last summer, when the site got attacked by an SQL Injection bot.  Back in 2006, I had no idea what SQL injection was, or how to guard myself.

So there I am – I’ve just come back from a camping trip, my inbox is packed with complaints, and I’ve got three weeks until school begins.  Crap.

Luckily, I had plenty of tools at my disposal.  My web app development skills and practices had evolved dramatically since 2006, and I had been itching to reimplement the auction anyhow.  The SQL Injection attack was a perfect excuse for me to gut the entire application, and rebuild from scratch.

And I did.  I rebuilt the whole thing from the ground up in three weeks.  It’s been almost a year since it was deployed, and I’m still very happy with its performance, and the code that runs it.

I’m not happy with its overall UI design.  I think there are plenty of improvements to be made in that regard.  Luckily, it’s coded using a light MVC framework that I designed/built myself, so reskinning shouldn’t be too hard for whoever decides to work on it…

Apparently, I’m not the only one happy with the auction site.  Check out this article (now without annoying print dialog).

I just checked the logs today – we hit a new record: an aerial truck went for $22,000 dollars.  With the Board receiving 5% ($1100) of that simply for hosting, I think everybody is walking away happy.

Here’s the auction.

Proof that I wrote it?  This’ll have to do.

In Defense of Grad School

I’ve received lots of praise and pats-on-the-back for my acceptance into Grad School here at UofT for Computer Science.

However, there’s another side of the coin.  While I was still mulling the decision, I mentioned it to a few people here and there, and sometimes I got a strange look…like I’d agreed to have a lobotomy, or take experimental medication or something.

Believe it or not, I’m still getting it from time to time.  It’s strange.

At one point, I posted my Grad School status on Twitter, and got back the response “Don’t!  It’s a trap!”  Trap?  Really?  Have aliens taken over the school?  Am I unwittingly joining some bizarre cult?  Am I going to get pushed down an empty elevator shaft on my first day?  Awful hazing rituals?  What’s going on?

What’s wrong with Grad School? I’ve asked a few people this question, and gotten the following (paraphrased) responses:

  1. You’ve been in school too long.  Get out now and enter the work force!  Don’t you want to have fun?
  2. Grad School is expensive.  You’re going to go deeper into debt.
  3. If you choose a thesis/subject that you end up disliking, it will be an awful experience
  4. Work first.  Then go to Grad School.  Just trust me.
  5. You’re educated enough – you don’t need a Masters degree.  You’ll learn everything you need in the field.
  6. The courses are super hard and boring.

Here are my responses, in defense of Grad School – they’re numbered to correspond.

  1. Who says Grad School isn’t fun?  I really enjoy the field of Computer Science, and this is my opportunity to do some cutting edge research.  The whole point of a thesis (I believe) is to focus on something in the field and make it my own – to master it.  This means background research, thesis, experiments, conclusion, the whole bit.  That’s the science part.
    Also, there’s a self-serving economic payoff:  Bachelors degrees are going down in value.  Lots of people have a B.Sc.  A Master’s degree stands out, and will bring higher pay and more interesting jobs.
    My uncle once said that his days in Grad School were the most educational because of the people that surrounded him, and the conversations that he had.  I think I’ll find that here, and it’s exciting.
  2. Believe it or not, I’m actually getting paid to do this.  Sure, I owe the University a chunk of money.  Thankfully, the Department of Computer Science is paying for it, and I should have enough left over to live a modest lifestyle.  Living like a student for one more year isn’t so bad – it could certainly be worse.
  3. Why would I choose a thesis or subject that I don’t like?  From what I’m told, the first few weeks of Grad School are spent scouring around with a supervisor, trying to nail down a thesis subject.  I plan to do one better, and try to nail a thesis subject down this summer.  Once I’ve got it nailed down, I’ll do the background reading, and try to figure out some interesting experiments.  It’s easier said than done, but I’m not going to be stupid enough to pick a thesis on something I really can’t stand.  Am I going to do my thesis on complexity theory?  No, of course not.  Am I going to do it on how to teach software engineering students design patterns in a more visual, animated way?  Who knows, maybe.
  4. This answer assumes that I haven’t worked before.  I’ve worked.  I’ve been out there.  “You haven’t seen the real working world”…well, maybe I haven’t, but I’ve seen something that’s probably pretty close.  Working three summers at the school board hasn’t been a cakewalk.
    Some might argue that working for a while before going to Grad School will help me to gain the discipline necessary to work in an unsupervised environment.  Well, I have to tell you, I was barely supervised at the school board.  They gave me a task, and I did it to the best of my ability, with little-to-no oversight.  I set my own schedules, I dealt with clients directly.  I can work on my own.  I can manage my time.  I know how to work hard.  Don’t give me that “real world” crap.
  5. Like I said in #1, a B.Sc. isn’t what it used to be.  Lots of people have them, and it’s probably becoming less useful as a marker for separating the wheat from the chaff.  It’s only 17 months more work, but I think the payoff is going to be considerable.
  6. Maybe.  Thankfully, I’m only taking two a maximum of three per semester.  Workload does not frighten me anymore – I’ve been overloading myself for years, and I’m fine.  I’m not at all saying that Graduate School courses are going to be a breeze – but, and I hope I don’t sound arrogant,  I’m more-or-less used to doing the practically impossible.

Have I missed any reasons for not going to Grad School?  Do my rebuttals miss something entirely?  It’s a bit of a moot point now – I’ve already accepted the offer.  But if there are any interesting reasons that I missed, I’d love to hear them.

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…)

Thesis

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”.

Drama

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.

Starcraft…implemented in Javascript.

Last night, I had a dream.

In it, I was breaking into a house.  In the house was a TV and a computer.  On the TV was Mario64, and on the computer, Starcraft.

Somehow, in my dream, I knew that both had been re-implemented in Javascript.  I was blown away.

When I woke up, I posted a little blurb about this dream on Twitter.  Paul Gries responded with this link:  Javascript Starcraft.

Dreams.  They can come true.  Except sometimes, you need Internet Explorer to run them.