Not a whole lot to report. There is, I suppose, but it's too damn nice of a day to spend it reading (or writing) this stuff. I'm dangerously close to finishing a site for PBS' Frontline after a week-long crunch. It's been yet another experience that's re-affirmed my love for Django. It's to the point where I can take on (literally) twice as much work as I could before Django and the scary thing is that I'm just getting comfortable with it and each project exposes me to at least one new package that makes things easier. For instance, I really wish I'd known about PyFacebook a couple of projects ago. It would have made things a lot easier (especially if I'd coupled it with django-socialregistration).

The downside to my love affair with Django is it gets really easy to become picky, to insist on only taking projects that can be done in Django. The next step is to try to force each project into the shape of previous projects; the whole reason I gave up on CMSes in favor of a framework like Django was to avoid cramming a client's square peg into a round hole (dirty!). Always working in the same language and framework is a ghetto: you only know what you know and you don't get exposed to new ideas.

So I've ripped through another Django project and have picked up a new one this week as well. And yet, given my chronic case of Irish Alzheimer's, I'm down in the mouth because this week also saw the death of a project. Not death exactly, but it's being shipped off to India to apply the final touches. Whether that's death or CPR depends entirely on who gets a hold of it, but I'm guessing the project would have a hell of a time getting term life insurance right now. It's only the second project I've had go south in the 2-and-a-half years I've been out on my own, but it still sucks. In each case I came in after the contract had been agreed on and after (what would have been) the requirements gathering period had ended. I'd call it a clear lesson learned except it's one I learned a long time ago and keep screwing up because I assume I can punch my way out of anything. I need to spend less time improving my code and more time improving my ability to communicate the value of up-front requirements gathering and a process "agile" enough (whatever that means) to get regular feedback from the client on how things currently look.

Totally unrelated to any of this, but I did run into an interesting usability issue while we were on vacation in Maine. Though it may be silly to generalize about a state's drivers, I will still assert Maine's drivers are far more law-abiding than their New Hampshire counterparts. So I was surprised to see how they lay out passing lanes in Maine: like a challenge to your manhood. The first couple I shrugged off as mistakes, but after a day or two I could not get over how many passing lanes didn't end until you were just about up to a curve or hill that obstructed your view. I finally figured it out at the end of our trip: Maine assumes the best in its residents and visitors. Passing lanes end at the last possible second it's safe to pull back in. New Hampshire knows their residents are crazy. Passing lanes end at the last inch you could possibly pull out at and pass someone assuming you're on a motorcycle and passing a rickshaw. It'd be nice if Maine added one more sign to the Burma Shave-esque laundry list of warnings they have when passing from New Hampshire into Vacationland. Or just replace them all with "Welcome to Maine: Don't Do It, Brutha".