Today marks the third anniversary of this blog. As I near my thousandth post, I figured I'd bore you all with a look back.
Unsurprisingly, DrProject has been the blog's single biggest topic (under several different names):
2004-06-22: the first mention of Helium (a Java-based predecessor of DrProject that we intended to build from scratch).
2004-07-26: my first gripe about Python having too many half-finished web frameworks. I've taken some flak for saying this, but I still think that by failing to unite behind one, the Python community gave the game away to Rails. Speaking of which, this post, from August 10, is my first mention of Ruby, and this one, from December 14, is my first mention of Trac, the system from which today's DrProject is descended.
2004-08-04: Helium was over-engineered in many ways; this post discussed some of the tricky problems created by the user-and-project model I foisted on it.
We abandoned Java and the Hippo code base early in 2005. The main reasons were (a) the XML configuration files that tools like Hibernate depend on aren't debuggable, and (b) it took students so long to set up a working environment that they couldn't make much progress in a term. This post from September 14, 2004, was the first sign of trouble; things went downhillfromthere.
But back to DrProject: Chris Lenz did some cleanup on Trac for us in the spring of 2005, in exchange for which I mentored a Google Summer of Code project for him (where "mentored" means "stayed out of his way and was awed by his productivity"). The project picked up speed after that, thanks in no small part to generous donations from the Jonah Group and Perforce:
2005-08-22: after a summer of hard work, our fork of Trac (which at the time we were calling Argon) was up and running, but very slow. The cause turned out to be the fifty million calls to a Unicode end-of-line marker Python was making each time we ran the CGI. Those N2 algorithms will get you every time...
2006-03-29: Sean Dawson wrote a piece about processes hanging in DrProject. It turned out to be a taste of things to come...
2006-04-16: Igor Foox, Greg Lapouchnian, and Pat Smith produced the first screencast of DrProject in action. Greg won a Google Summer of Code award that year, and built us a web administration interface.
The first screenshots of Version 1 went on the web on July 15; we did the final release on July 17, and updated the screencast on August 14.
2006-10-23: I started a series of posts about DrProject's internals, largely to get them clear in my own head. I later used these posts in my Software Architecture course. They got me wondering whether users would prefer an IDE-based interface to DrProject.
2005-09-14: the Toronto edition of the course met for the first time. (This was actually the second time I'd taught the course at U of T, but the first time it was on the books and for credit.) There were initially 93 people in the course (!), of whom about half stuck with it to the end.
2006-02-17: I ran a workshop about the course at the annual meeting of the AAAS.
2006-03-26: I got angry about a report from Microsoft Research called 2020 Science that gushed about the future of scientific computing without any more than passing mention of the problem of making sure scientists' programs actually work.
2006-08-17: I gave a talk at SciPy'06 on selling Python to scientists and engineers. (Hint: don't. Instead, sell them solutions to their problems that happen to use Python, then wait.)
2006-10-31: a result published in Nature was retracted because the code used to produce it had been flaky.
Five months later, scientists from the Scripps Institute had to retract five papers published in various prestigious journals because of a sign error in a computer program. Stories like these are making the course easier to sell...
I used to be very sceptical about Extreme Programming and other agile methodologies. Discussions with Peter Hansen and others have since convinced me that it's a valuable tool in some contexts, and worth teaching.
I've always run post-mortems on 49X projects, and learned a lot from this results.
I first thought of Bayesian filtering to detect duplicate posts in newsgroups in October 2004; Helen Bretzke and Jonathan Lung looked into it in 2005-06, but it didn't seem to lead anywhere.
Quantifying the learning curve for tools and languages (2005-01-02): this was briefly fashionable in the 1970s and 1980s (look up a conference called "Empirical Studies of Programmers"); I think it'd be worth revisiting now that software engineering has a clearer idea of how to do empirical studies.
Many unhappy experiences have convinced me that the world really needs someone to figure out a "debugger" for configuration files ought to work. Do this, and every Ant, Apache, Hibernate, and Tomcat user in the world will be your new best friend. (I keep coming back to this topic; one attempt to build a UML model debugger is now on SourceForge.)
A library's API is the set of functions it allows others to call. Why don't we also care about the functions a library (or application) needs to call (which I dubbed its XPI in December 2005)?
Your version control system is only as good as your diffs, but sadly, after forty years, the only things we can diff reliably are plain ol' text files. There's research waiting to happen here...
I first asked the web for pointers to good programmers in April 2006. At SIGCSE'07, Grady Booch let the cat out of the bag by telling the world about Beautiful Code. I posted a table of contents on March 27.
I first mentioned code review, and the problem of making it a normal part of the undergraduate curriculum, on 2004-06-26. I tripped over the issue again in March 2005. In 2006, Jennifer Campbell and I got a grant from U of T to hire two students full-time to develop OLM. The first screencast of their work went up on the web on 2006-08-29, and we've been using OLM in courses ever since.
Women are under-represented in computing, and the situation is steadily deteriorating. Michelle Levesque and I looked at why the gender ratio in open source is so much worse than in the industry as a whole (2004-10-08).
: I was HP's rep on the Groovy JSR for three months in the summer of 2004 before giving up. These posts from September 7 and September 11 explain why. Groovy 1.0 finally appeared in January 2007; interest was...muted.