Something I realized after I wrote that comment: all the side-projects mentioned used the same toolset as the main project, but used it for a different purpose. So for example:

1.) Scrutiny was a quick PHP-based course evaluation system, done entirely when I should've been working on a large PHP rewrite of a HP fanfiction site. It took 2 weeks, vs. 3 years for FictionAlley (all part time).

2.) Bootstrapacitor was a quick web.py app, done when I was trying to do the layout for Diffle.com (also web.py) and feeling pretty overwhelmed by the HTML/CSS aspect (I'd never done my own layouts before). It took 3 weeks, vs. 5 months for Diffle - in particular, the Bootstrapacitor layout was very, very simple, because I wanted it to be done quickly. When I came back to do the CSS for Diffle, it was really easy, and I was done in a week or so.

3.) ArcLite is a JavaScript interpreter, done when I was feeling burnt out from building JavaScript UI widgets for GameClay. It took 1 week vs. 8 months so far for GameClay. (GameClay has many parts besides the JavaScript UI though; I'd estimate I've only spent 2-3 months on JavaScript aspects, the rest being Python & Flash.)

4.) Randomicity was a Django app built soon after converting GameClay to Django, but before I've built significant amounts of GameClay code in Django. Took about a week or two, vs. 2-3 weeks spent on the Django part of GameClay.

Also, all of the projects I was procrastinating on were first major projects with that toolset, and all the side projects were under about 1-2k lines. (If I ever start a blog, I want to do an entry about the "no-man's land of software" - it seems like anything up to about 2k lines is quite easy and can be done in a week or so, then there's a giant no-man's land up to about 20k lines where it's really difficult to make progress, and then after that it gets easier again.)

I'm not sure what to make of this, but one hypothesis is that procrastination is actually a subconscious lack of competence. If you address the underlying skill deficit and then give it a rest, the project becomes fun again. (Assuming that the project is useful - I didn't avoid all that homework in school because I didn't know how to do it, I avoided it because it was pointless.) By working on a side project, I had a chance to consolidate and assimilate all the knowledge I'd gained from beating my head against the original problem. It's much like the effect of sleep: you know how when you work really hard at a difficult mental problem, get nowhere, and then sleep on it, the answer often comes naturally in the morning? This is a case of working really hard for months at a time, then switching gears and doing something easy but related for a short period of time, then coming back and finding that what was previously hard is significantly easier.

I have friends in physics grad programs that have noticed a similar effect. The physics curriculum in my undergrad college was setup like a spiral - you would do mechanics, then E&M, then thermodynamics, then quantum, then you'd return to mechanics at a higher mathematical level, then intermediate E&M, then intermediate quantum, then advanced E&M, etc. Now my friends are doing quantum field theory and find that the Lagrangians we slaved over as undergrads are trivial.

The Suzuki method of teaching violin is similar, too. The books are setup so that you have a couple easy pieces, then one really hard piece, then a few more easy pieces so you can relax and assimilate everything you've learned, then another hard piece and so on.