Now that the Software Carpentry course is over, it’s time to get back to planning projects for the fall, and there’s good news on two fronts. The first is that we had a very productive meeting on Tuesday about projects using the City of Toronto’s data. The CUPE strike may mean that we start off using canned data instead of live feeds, but lots of people are willing to put in time to help our students figure out what’s worth building and how to build it. Ten undergraduate and two graduate students are already signed up; on past experience, we’ll probably have 15 and 20 respectively by the time we start work.
The second piece of news is about the cross-Canada undergraduate projects. We now have interested faculty at:
and several have already started recruiting students. Our project list has also grown to include:
I’m stoked For more information about both sets of projects, please see the combined course page. And if you’d like to get involved, please give me a shout.
Via Joey deVilla, the schedule for Microsoft TechDays 2009. Lots of cool stuff; I probably won’t be able to go, but I hope some students will.
July 29, 2009, was the second really good day I’ve had since I started this job. In the morning, our summer students did demos that were as good as anything shown at DemoCamp 21. In the afternoon, six very smart and very eloquent people talked to an audience of about 100 about how the web is changing the practice of science. I’m very proud of our students, and very grateful to Titus, Cameron, Victoria, Michael, David, and Jon for their time.
Update: Cameron Neylon has some nice things to say about the undergrad demos:
On Wednesday morning I had the distinct pleasure of seeing a group of students in the Computer Science department at the University of Toronto giving demos of tools and software that they have been developing over the past few months. The demos themselves were of a consistently high standard throughout, in many ways more interesting and more real than some of the demos that I saw the previous night at the “professional” DemoCamp 21. Some, and I emphasise only some, of the demos were less slick and polished but in every case the students had a firm grasp of what they had done and why, and were ready to answer criticisms or explain design choices succinctly and credibly. The interfaces and presentation of the software was consistently not just good, but beautiful to look at, and the projects generated real running code that solved real and immediate problems.
Toronto’s 21st DemoCamp was held last night in the Rogers Theatre. I enjoyed it: it was good to see friends, and great to see what’s going on in Toronto’s tech community. Here’s my rundown:
- Venue: better than the pub we were in the last couple of times, but banked seating (and no beer) just doesn’t feel right either.
- Jon Udell: I think his ideas about syndicating calendar information are a big deal; I was surprised there were so few questions (maybe because he was first up?).
- Saul Colt/Zoocasa: I was expecting a demo; we got slideware.
- Christine Renaud/ArtAnywhere: very polished Ignite presentation on a new web-based art rental business.
- Brian Sharwood/HomeStars: another Ignite about bringing social media to contractors. Enjoyed it—he clearly likes what he’s doing.
- Alan Lysne/Cascadia: live coding to show off a cross-platform app library for mobile devices. Very cool.
- Shaun MacDonald/MashupArts: in-the-web editor for birthday cards, greeting cards, etc.
- Dan Wood/WeGoWeGo: another “what’s on where” search engine; good demo.
- Ben Vinegar/Guestlist: best demo of the night—guest lists have been done before, but Ben (a former project student) has done a really nice re-think with some cool GUI features.
- Jason Roks/GuiGoog: the other best demo of the night—Jason coped with technical problems (including having to run on IE6) with good, if acerbic, humor.
Overall impressions: several A-grade presentations and good conversations. Our undergrads are doing their demos this morning (Wednesday, July 29) from 10-12 am in Room 1200 of the Bahen Centre at 40 St. George Street; everyone’s welcome to come and see them try to repeat last night’s success.
I’ve created an Amazon.com Listmania list of the books I think are most directly related to the material in the Software Carpentry course. Several important topics aren’t represented, including:
- Version control
- Automated builds
- Processing XML
- Processing binary data
- Web client programming
- Web server programming
There are good books on all of these, but the ones I know all go into too much detail, assume too much background knowledge, or are out of date. Whta would you recommend? What have I missed completely that ought to be there?
Like many software developers of a certain age, I had a brief love affair with UML in the 1990s. Pictures of programs—what a great way to communicate! In my case, it lasted about four months. I simply didn’t find class diagrams helped me understand what was going on in my programs, or anyone else’s.
I think I can finally explain why. Over the weekend I started reading Olsen’s Design Patterns in Ruby, which is possibly the best introduction to design patterns I’ve ever read . What I suddenly noticed, though, was how hard it would be to know which patterns the author was talking about if you blanked out the class names in the UML diagrams given with each chapter.
This is definitely not the case in other fields that rely on graphical notations. The logic gates making up a one-bit adder, for example, are unmistakable; the text around them speeds up understanding, but the meaning is in the diagram.
So here’s an empirical test: draw UML diagrams representing various design patterns, but don’t label them, and see how many people can tell which are which. Or analyze the natural language description of the design pattern and see how much of the information needed to understand how the pattern works is not present in the diagram. Yes, you can get some of that by adding a sequence diagram as well, but I’ll bet that even the combination still needs to be explained in order to be comprehended.
And while we’re on the subject: has anyone ever designed a programming language by starting with a catalog of design patterns and asking, “What do I need in order to make expressing these simple and obvious?” If so, I’d be grateful for a pointer…
 There are several reasons Olsen’s book is so good:
- He clearly likes the languages he’s using (English and Ruby), and knows how to use both well.
- The classic Gang of Four patterns are much simpler to express in dynamic languages like Ruby than in modern Java or C++.
- We’ve learned a lot since the original Gang of Four book about how to teach patterns and in what order.
#1 is the most important, though; I hope he writes a Python version soon.
I’m going to teach a bit of web programming to the Software Carpentry students this week, so I went to the Programmable Web site to find a simple API to use in examples. Guess what? “Science” isn’t listed as a category—the closest thing is “medical”. *sigh*
Via Jon Pipitone, two excellent examples of someone critiquing their own code online (in this case, stuff written for the NetFlix competition). Wish there was more of this to point students at…
Thought-provoking post by Adam Goucher on the psychological benefits of breaking big decisions up into smaller ones (which cites this paper). As he says, this may be why 36 two-week iterations is better than one 18-month release cycle…
DemoCamp Toronto 21 is being held on Tuesday, July 28, 2009 from 6:00 PM – 8:30 PM in the Velma Roger Theatre at 333 Bloor St E. (Thanks to Mike Lee, Bonnie Schnurr, and everyone else at Rogers for the space.)
Jon Udell will be speaking about open government, calendar data, and other current interests, and we have a great lineup of other speakers as well:
- You can’t pick your neighbours, but you can pick your neighbourhood!. Saul Colt, Zoocasa. Zoocasa is a new way to search for homes in Canada. For the first time a site allows people to get search results based on what actually goes into their decision process when home shopping. Things like neighbourhoods, schools, shops and services.
- ArtAnywhere: Where Lost artwork meets Empty walls. Christine Renaud, ArtAnywhere. ArtAnywhere allows artists to showcase their artwork online and to rent or sell it to businesses and individuals. We are launching the application in Montreal on September 26, in Toronto and New York in October 2009.
- Bringing Social Media to Contractors. Brian Sharwood, HomeStars. HomeStars is a social media website for contractors. It’s how they communicate with their clients, generate reviews, generate leads, and create ‘whuffie’. Home improvement guys (and gals) are not particularly tech savvy. We provide a platform for them to communicate with their clients, who provide them feedback and reviews.
- Stories Told Together – Introducing Social Cards. Shaun MacDonald, MashupArts. For sophisticated social networkers, Mashup Arts is the social card company that delivers the most personalized, collaborative and media-rich card creation platform. We have raised $ 1.6 million in angel funding, and are ready to launch our product.
- WeGoWeGo.com: semantic search for city events. Dan Wood, WeGoWeGo.com. WeGoWeGo.com is a new city search and social network site focusing on nightlife, events and tourism in Toronto. With 20 million visitors each year spending $4.5 billion dollars, Toronto’s international cuisine, cultural events and thriving nightlife just keep getting better.
- Guestlist – online event management. Ben Vinegar, Guestlist. Guestlist is an online event management application, with a focus on user experience, design, and simplicity. It lets event organizers sell tickets online via gorgeous looking event pages, which are built using an intuitive WYSIWYG editor. Guestlist is “getting real” applied to event management—we’ve built a simple solution by providing what 80% of event organizers need, and forgetting the rest. (Note: Ben is a former UT undergrad.)
- guiGoog: Advanced Visual Power Search. Jason Roks, GuiGoog. The iconic search tool. Results matter.