jiggety jig

This weekend I'm going to be back in NY yet again. Sorry, boston people.

a return to your regularly scheduled metacommentary

I read Ward Cunningham's interview at artima recently, and had a bit of an epiphany about Extreme Programming.


In particular it was an epiphany about the YAGNI and DTST rules. I always assumed, based on the examples that were given, that the rules were meant to say "keep it simple, because that's probably good enough anyway". In other words, if you are sure that the simple approach isn't going to work, if your customer requirements include stuff outside the scope of the simple solution, you should use a more complex solution until you can encompass all the requirements. It should be no more complex.

Ward seems to be saying that this is wrong: that the goal is not to arrive at the simplest correct solution, but to arrive at the simplest solution that moves you forward, even if you know it's wrong. In fact, especially if you know it's wrong. Because you're going to arrive at the wrong answer multiple times anyway, it's very important that those answers be simple. Even if you can see deficiencies in your solution as you're implementing it, it's better to complete it quickly, put it in front of a customer, and determine experimentally whether the deficiencies you've spotted are as important as those the customer spots.

What I'm taking away from this article is that the key thing is release velocity, not correctness of the implementation or completeness of requirements analysis. The customer will change their mind. The estimates will be wrong. The only way you can compensate for this is by making changes cheap. The only way to make changes cheap is to practice making changes, and the only way to get practice is to make a lot of changes.

Being a drinker of XP kool-aid for quite some time now, it's funny how this still seems so counterintuitive to me. Looking at it sideways, though, it's a really distilled worse-is-better, with a much more narrowly-defined definition of how to "win big".

So, what do you think? Does "you have to do it wrong before you can do it right" sound like an accurate aphorism, or am I distorting Ward's words?

google bar

Since so many of you have asked, the google bar that reads "coolpix battery" in my recent screenshot is there because I was looking for a way to fix the broken battery indicator on my digital camera.

(If you want to ask questions like this in the future, consider using the livejournal comments option, rather than personal email or IRC /msg. I do read them.)

different tables

Today was my first real full day off in several months. It was great. The fact that my computer has stopped freezing up didn't hurt my mood, either.

I've had many (far too many) days where I didn't work over the last year, but most of them have been quickly soaked up by moving, or coping with various unfortunate events. Today I got in some actual relaxation, and with it some much-needed time to reflect.



One of the things that I've realized is that my 5-year separation from Ying has given me an intense appreciation of fairly banal activities. For example, cooking ramen, making a grocery list, and setting the table are not things that most people would consider "awesome". I imagine that soon, some of the novelty will fade. However, after years of feeling kind of stuck in a situation (and the last few months, that feeling has been very intense), it's really noticeable how much basic things like that give me a feeling of control over my environment.

Having Ying here is certainly the bulk of this feeling. Leaving out the bumps along the road, being apart when I was in school was sort of normal, an opportunity to prove that I was serious about our relationship. Being apart when I moved to Jersey was unfortunate, but a necessary part of my life's path. While I was at Origin, it was a quest. By the time I was at Ninjaneering, the distance was a constant ordeal. When I finally got here to Cambridge, it was a cosmic joke. So, now that she's back, there's several years worth of weight lifted from my daily concerns. I no longer need to figure out how and when I'm going to get across the country, or drag her. I see her every day - it's only been a week of this so far, so my subconscious hasn't fully accepted that I'm not on some kind of trip yet, and I'm not going to be returning to somewhere else...

There are other things, too, though. After years of eating at my desk, I have a table specifically for eating. Ying doesn't notice anything particularly positive about this, since her family would routinely eat in different rooms, but something from my childhood makes me view it as a sign of being well. The only times I'd eat in my own room as a child was when I was seriously ill or one of my parents was. The fact that as an adult I mostly ate by myself was when I was depressed didn't help.

This post is more rambling than I thought it would be. The point I'm trying to make is - I know many of you out there in internet-land have been worried about me. I'm doing much better. Not only am I much better, but I'm appreciating the fact that I'm much better.

Maybe the best thing about being back in a relatively sane situation was that the dramatic increase in my mental health has enabled me to fiercely concentrate on my work. I was starting to have real fears that I'd "lost it" in terms of getting productive coding done, and that the rest of my life was going to be a constant bitter struggle to force a few LOC out of my ten daily hours with emacs. If anything being depressed was more to blame for my slowdown than I gave it credit for; I've been able to consistently sit down and do something useful every day this week.

what can I even say about this?

I think it speaks for itself.