As I mentioned a few weeks ago, I’m teaching the second course in our two-course sequence on software engineering next term (i.e., in three and a half weeks). The goal of the course is to teach students how to deal with large pre-existing code bases; my first thought was to have each team go spelunking in a different open source project, but (a) I haven’t been able to find enough that meet my criteria, and (b) marking would be very difficult. I’m therefore looking at:
- Building a connector so that Gnumeric or OpenOffice Calc can be used as a front-end to SQLite.
- Help out with SpatiaLite, a set of geospatial extensions to SQLite.
- Help out with PyLint, a static analysis tool for Python.
- Refactor the Selenium IDE to make it more pluginnable.
I was hoping to find something that would tie in to this term’s Open Government projects with the City of Toronto (it seems a shame to lose the momentum), but I haven’t found anything yet that doesn’t require more web programming background than it’s fair to assume—roughly 1/3 of the students in the course haven’t done CSC309 (our web programming course), and while many are taking it concurrently with CSC302, it wouldn’t make for a level playing field.
Uncategorized
A student was in my office looking for a little AI project today. After a bit of discussion, she’s going to try to write some agents for Cartagena, one of my favorite little games for 2-4 players. If you haven’t run into it, here are the rules we use:
Materials
- A deck of playing cards.
- Four tokens per player, such as coins or poker chips.
Setup
- Divide a deck of cards in two: Jacks, Queens, Kings, and Aces go in one pile, 2-10 in the other.
- Shuffle the first pile and lay the cards out in a straight line to create a racetrack with 16 spaces.
- Shuffle the second pile. Deal each player three cards, and put the rest face-down as the draw pile.
- Place every player’s tokens at one end of the racetrack.
Basic Play
- The first player to get all of their tokens off the end of the racetrack is the winner.
- Players move in turn. In each turn, a can either spend a card to move a token forward, or move a token backward to pick up one or two new cards.
- To move a token forward, play a card, and move a token to the next empty card on the racetrack that is of the same suit. For example, if the card played is a Heart, move one token to the next empty Heart card.
- To pick up more cards, move one token backward to the closest occupied card. If that card already has one token on it, pick up one card. If it has two tokens, pick up two cards. If three or more tokens are already on it, you cannot move back to it (i.e., you can never put more than three tokens on a card). You cannot back up over a card that already has three tokens on it.
- When the draw pile is exhausted, shuffle the discard pile to create a new one.
Example
At the start of Green’s turn, the board looks like this:

 
 |
♠ |
♣ |
♦ |
♣ |
♣ |
♠ |
♥ |
♥ |
♣ |
♠ |
♦ |
♦ |
♠ |
♥ |
♦ |
♥ |
|
|
|
  |
 |
 |
|
|
|
   |
|
 |
|
|
|
|
|
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
She holds ♦ and ♣. Her legal actions are:
- Play ♦ and move the off-board token to [12] (the first empty ♦ space).
- Play ♦ and move her token from [3] to [12].
- Play ♦ and move [9] to [12].
- Play ♦ and move [11] to [12].
- Play ♣ and move the off-board token to [2].
- Play ♣ and move that token from [3] off the board, since there are no unoccupied ♣ spaces between it and the end. Another way to think about this is that the end of the racetrack effectively has all suits, i.e., can always be moved to.
- Play ♣ and move [9] off the board.
- Play ♣ and move [11] off the board.
- Move [9] to [5] and pick up a card.
Note that she cannot move [11] to [9], since there are already three tokens on [9]. She also cannot move [11] back to [5] or another earlier space, since players cannot back up past spaces that have three tokens.
Advanced Play
The board game Cartagena, designed by Leo Colovini, is more complicated in two ways:
- Each play has six tokens, and the racetrack has 36 spaces (six spaces of six different types). The movement deck also obviously has six types of cards.
- Each player gets to perform up to three consecutive actions in each turn. For example, a player could discard a card to move one token forward, move that same token back to pick up a card, then play the card just picked up to move forward again. This means that a player’s available actions may change during a single turn.
Uncategorized
On the same day that the New York Times ran an article about open data and Government 2.0, the graduate and undergraduate students in this term’s consulting course did their final presentations. On deck were:
- Managing Twitter Conversations: Tyler Lu, Kevin Regan, Jasper Snoek, and Danny Tarlow
- Finding the Best Place to Live: Andrew Borzenko, Abayomi King, and James McCrae
- Who Has Seen My Data? Fan Dong, Lenny Han, Benton Hui, and Shobhit Jain
- Connecting With the Greenbelt: Michael Gorecki, Jory Graham, Mohit Jain, and Frank Li
- Visualizing Traffic Accident Data: David Nowak, Alyssa Rosenzweig, and Samar Sabie
- Crowdsourcing Translations: Betim Shahini and Peng Su
- Managing Waiting Lines with SMS: Dejana Bajic, Tyler de Witt, Alexander Lee, and Akhil Mathur
About 25 visitors joined us from the city, local companies, and elsewhere for an hour and a half of demonstrations and discussion. The students did well; they’re a credit to the university, and I hope they’re as proud of their work as I am.
Government 2.0
We’re about to release version 0.6 of Basie, a replacement for Trac built on Django and jQuery. Before we dive into work on 0.7 at the beginning of January, we’d welcome some code and design reviews from experienced Django and jQuery developers. We have some nice coffee mugs to send as thank-yous…
Basie
- Microsoft Pivot: their notion of “very large data” is smaller than mine, but this is still a fascinating tool.
- Via Jordi Cabot (again), a library of data models created by Barry Williams. Baseball umpire scheduling, genealogy, septic tanks, and many others, all in a uniform notation. I’ll be using this in my next software engineering course.
- Andrey Petrov, a former student and friend (sorry, that’s ambiguous, we’re still friends) is co-creator of Get Up and Move, which lets you barter exercise with friends. “I will do pushups for 1 minute if @shazow will dance for 2 songs.” Still in very early stages, but a cool idea.
- Mark Coleran designs computer interfaces for use in movies. Seriously, how cool a job is that?
- According to Mark Guzdial, the Open University’s new “Intro to Computing” course uses JavaScript as a first language. On the one hand, cool, but on the other, it’s one more reason to wish that JS had been better designed. (But note: see Mark’s correction to this post in the comments.)
- Google Summer of Code and UCOSP have both shown that it’s easier for students to get into open source projects if there’s a pile of tiny tickets for them to start with. The goal of the new OpenHatch project is to collect those together by searching the raffles [1] of various projects for tickets with appropriate tags.
- Via Peter Lorimer, a screencast for the Eclipse4Edu UCOSP project showing their Scheme plugin for Eclipse. The Star Wars music in the background is a distracting bonus
.
- Seems that a sys admin in Arizona installed SETI@Home on every computer in his school district. The result: 575 million hours of computer time over 9 years, costing $1.2-1.6 million in extra power consumption.
[1] Well, what else would you call something that collects a lot of tickets together?
Uncategorized
Twenty years on, most Canadians instantly recognize the name of their murderer. I’d rather remember theirs:
- Geneviève Bergeron
- Hélène Colgan
- Nathalie Croteau
- Barbara Daigneault
- Anne-Marie Edward
- Maud Haviernick
- Maryse Laganière
|
- Maryse Leclair
- Anne-Marie Lemay
- Sonia Pelletier
- Michèle Richard
- Annie St-Arneault
- Annie Turcotte
- Barbara Klucznik-Widajewicz
|
Qu’elles reposent en paix.
Uncategorized
I finally have more distinct online accounts than Unix shell login accounts.
Uncategorized
Posted on behalf of a friend from the University of Toronto who’s about to finish his Master’s. I’ve helped a lot of undergrads find jobs over the years; I’m curious to see what response there is to someone who has more experience than I do
With 20 years’ experience as VP, CTO and COO in startups and high-growth companies, I bridge the worlds of technology and business. At my first company, as the head of development I created Electronics Workbench, widely acclaimed as an innovative product that perfectly meets customer needs. I then created and ran a products division that made it the most used circuit simulator in the world, distributed in 10 languages and 29 countries. In my startup, SEVENtwentyfour Inc., my technology won Microsoft’s IMPACT Award as the Data Management Solution of the Year in High Performance Computing, beating over 2,300 other submissions worldwide. This technology success was matched on the business side. With over 2,000 Web services customers in 65 countries, the company was acquired by Brandimensions Ltd in 2005. Most recently, as a cloud computing researcher I’m completing my masters in computer science at the University of Toronto. I’m now ready for my next challenge.
Some startups with strong technology lack the business sophistication needed for success. Other companies are hamstrung when their technology group lacks the productivity and innovation necessary to drive growth. If my passion and focus seem like a good fit for your organization, let’s talk.
– Roy Bryant (roy@roybryant.net)
Uncategorized
So here I am, watching the astonishing spectacle of a beautiful, cultured nation turning itself into a corrupt petro-state. Canada is slipping down the development ladder, retreating from a complex, diverse economy towards dependence on a single primary resource, which happens to be the dirtiest commodity known to man.
George Monbiot talks about the tar sands. Canada “…is now to climate what Japan is to whaling.” I can’t disagree.
Uncategorized
Excellent post from Danah Boyd about a very bad experience with real-time tweeting during a talk:
I think that the backchannel is perfectly reasonable as a frontchannel when the speaker is trying to entertain, but when the goal is to convey something with depth, it encourages people to be impatient and frustrated, to feed on the speaker.
Uncategorized
Recent Comments