Traceability in Agile Projects

July 6, 2008 – 3:16 pm

I’ve been thinking a lot over the last couple of years about what an entry-level requirements and/or modeling tool would look like—something that undergrad students would find so useful in courses that they’d actually want to use it (instead of just going through the motions to get a grade).  Over at InfoQ, there’s a good summary of some interesting discussion about traceability in agile projects that I think is relevant.

A Guide to Distributed Version Control Systems

July 6, 2008 – 11:16 am

This guide at InfoQ is a nice counterpoint to my list of reasons for not switching to Git.

What Code Are You Proud Of?

July 6, 2008 – 10:29 am

I’ve been giving talks about Beautiful Code for ten months now. Mostly I talk about how the project came to be, and a few of my favorite chapters, but I end with this:

My father built most of the house that I grew up in. My mother made ever sweater I wore until I was 28. My older brother made my wife’s wedding ring; my sister made the quilt my daughter sleeps under, and my younger brother made the desk I’m sitting at right now. I’m proud to come from a family that makes things, and makes them well. I’d like my daughter to be proud of the things that I make, but when I think back on all the code I’ve written my twenty-eight years of programming, there’s nothing I can point at and say, “I’d like to be remembered for that.”

So let’s throw it out as a new meme. If your obituary was going to be a few pages of code that you’d written, an architecture diagram, or some screenshots, can you think of something you’d be happy with?  And if you can’t, what does that say about us and our profession?

Y Combinator Now Accepting Applications for Its Next Season

July 5, 2008 – 1:02 pm

David Crow has details.  On an unrelated note, I’m looking for $75,000 to fund three junior programmers for six months starting in January to do Really Cool Things.  If you’d like to know more, I’m easy to reach.

Why We’re Not Switching to Git

July 5, 2008 – 12:44 pm

I got the following a couple of days ago from a colleague in the US:

Our development teams are debating the use of GIT vs SVN. [Project name] has standardized on SVN, but some of the projects are considering GIT. Do you have an opinion on their relative merits, particularly for computational science and engineering applications?

It’s a timely question—two of my best students are keen to switch us from Subversion to Git, and claim the latter makes them much more productive. I’ve decided we’re not going to (not before the end of 2009, anyway) for a couple of reasons:

  1. Documentation: there’s a ton of good stuff about SVN, but Git’s docs are still spotty in places. I’m reviewing an early draft of a book about it, and that’ll go a long way toward closing the gap, but it’s not going to be ready until early 2009.
  2. Supporting tools: we delayed switching from CVS to SVN until the Eclipse and Visual Studio plugins for the latter were solid, and we’re going to delay switching to something else (such as Git) until support for it is as ubiquitous, and as dependable. Again, that probably means some time in 2009.
  3. Reality check: we’ve already had one big snafu due to a developer (a bright one) creating lots of local branches, losing track of his work, then having the hard drive die. Fans of fully distributed version control don’t seem to take this into account when talking about relative productivity, and I think it’s easier to fall into bad habits when there isn’t the visibility of a central repository.
  4. Backing the wrong horse: Git seems to be the most popular VCS of its kind right now, but there are several others, and it’s not yet clear which is going to dominate. Having chosen Python for my web programming projects, only to watch Ruby on Rails grow by leaps and bounds, I’m willing to wait a while to see which horse is going to win the race before placing my bet.

Later: see also this guide to distributed version control systems.

But Dad…

July 3, 2008 – 2:10 pm

…that just doesn’t make sense!

Madeleine, puzzled.

DJ Recommendations?

July 3, 2008 – 10:35 am

We need a DJ for our reception on Sept 6. If you know someone in Toronto who doesn’t think that 70s Eurotrash disco has come back into fashion, or that little kids and gangsta rap mix well, please let me know.

Another Good Lunch

July 3, 2008 – 7:45 am

We had our second student-industry lunch yesterday, and I think it was just as much a success as the first one. My thanks to everyone from Engenuity, Firestoker, IBM, Microsoft, MITACS, Mukodu, OCE, Red Hat, Scimatic, and ZeroFootprint who came out to chat to our students about life in the real world (and to give them a chance to practice their elevator pitches).

Current Projects

July 2, 2008 – 7:56 pm

Speaking of where the times goes, these are my current projects:

  1. Overseeing MSc students’ research.
    • Samira Abdi: using IR to cluster events in project histories.
    • Jeremy Handcock: visual awareness tools for developers.
    • Carolyn MacLeod: patterns of mistakes in novices’ use of concurrency analysis tools.
  2. Overseeing a proposal for a Professional Master’s degree in Computer Science.
  3. Overseeing DrProject.
    • Steering development work (done by Jeff Balogh, Nick Jamil, Kosta Zabashta, and Qiyu Zhu).
    • Front-line administration and tech support.
    • Writing a paper about its evolution and architecture.
  4. Surveying how scientists use computers for The MathWorks (with Janice Singer).
  5. Updating the Software Carpentry notes.
    • Converting to wiki format (with Luke Petrolekas).
    • Adding MATLAB examples (with Tina Yee).
    • Adding eight to ten more lectures.
  6. Co-authoring a “CS-1 in Python” textbook (with Jennifer Campbell, Paul Gries, and Jason Montojo).
  7. Studying how much of the design of project portals is due to different requirements, and how much is accidents of history (with Jordi Cabot).
  8. Co-editing special issue of Computing in Science & Engineering on software engineering and computational science (with Andy Lumsdaine).
  9. Teaching
    • Updating course notes for CSC301: Introduction to Software Engineering (which I’m teaching again this fall).
    • Recruiting students for CSC490: Computer Science Capstone (which I’m also teaching this fall).
    • Day-to-day administration for our 19 summer interns.

Who Did They Invade Again?

July 2, 2008 – 1:32 pm

Heather Williams has posted wordles of Obama’s and McCain’s speeches.  Look for “Israel” in both.  Now try to find “Iraq”.  Er, what?