Archive for September, 2009

State of the art history

Tuesday, September 29th, 2009

I’ve seen a lot of mail fly by lately on the Python edu-sig mailing list about clean code snippets that are easy for students to digest. That made me wonder whether it’s appropriate to shelter students from the complexity of code in the wild throughout most of their university career.

Teaching people how to dissect a huge, largely undocumented code base into more manageable bits was (and still is) the most time-consuming task for me as a professional programmer. That certainly wasn’t taught at any school I’ve attended; I’d be curious if any universities do.

Here’s my take on how such a course could be structured; abstract and link to outline below. I’d be grateful for feedback.

Budding scientists study the well-established experimental techniques of their predecessors. English majors study the works of great writers like Shakespeare. Following this tradition of analyzing the approaches and designs of significant historical figures in the field, this course focuses on the art history of software.

The open source movement has made it possible for anyone to study large, industrial-strength software. Mature code bases have a rich history full of design decisions and trade offs. This course covers why modern software is built the way it is, as well as the design patterns that emerged, while drawing upon the code bases of many open source projects.

Here’s a preliminary outline of the topics I’d want covered. I’m still 5 lectures short by UofT standards—then again, I’m not sure if I’m alloting enough time for the material I’ve already listed.

Checking in

Monday, September 21st, 2009

Last week was extremely productive on many fronts. The hobbyist in me is all smiles:

  • Finished acceptance test suite for my study.
  • Fixed a major concurrency bug involving modal dialogs in one of my Java projects.
  • Wrote a little PHP script that feeds a Flash/AS2 gallery with pictures from my Flickr account.
  • Put in an order for The Pragmatic Programmer and Software Craftsmanship.
  • Climbed a bunch of 5.9 walls at the gym. 5.8s are now my cooldown climbs.
  • Climbed about 80% through a V1 bouldering route—it’s hard to get over the lip after ten or so 30-50′ climbs.
  • Learned how to jack up and chock a car, remove the front bumper, air box and resonator, swap in a cold air intake and put it all back together again. Once the parts come in, I’ll get to apply this theoretical stuff. In the meantime, I’ve learned how to take public transit to get all the way to school—you know, just in case.
  • Found a 25% off deal on a 200W bass amp head and 4×10″ cabinet. My 30W combo unit just isn’t doing it for me anymore—actually, it never did.
  • Started packing my stuff for the move in February.
  • Booked cottage for autumn getaway.
  • Caught up on sleep.