That’s Hard

Over the last decade or so, I’ve had a pretty consistent cycle on learning new technologies, which I’d really like to break out of. I start by believing that something is hard – probably too hard for me to learn. And then … well, I stay there for an absurdly long time. Later on, usually out of necessity, or just because I’m tired of thinking that it’s hard, I force myself try, really hard, even though I probably won’t be able to do it. And, lo and behold, it’s usually a lot easier than I expected.

One of the unfortunate consequences of this is that I put off, for ridiculously long times, things that I wish to accomplish.

Examples of this include mod_perl, mod_rewrite, C programming, Apache modules, and jQuery. But there are others. I do this a lot.

Two things have brought this starkly to my attention recently. But they both amount to the same thing – complaining about something for *years* before finally doing something about it. And I think that in the geek world we get an awful lot of joy out of complaining about things. But fixing them is so much more full of satisfaction, it’s surprising that we often put it off so long.

The first of these was the PHP documentation. I have complained for years that the “how to install php on Apache” documentation was wrong. Yes, I’m ashamed to admit it. Years. Probably five. Perhaps more. And during that whole time, people would come on to the Apache IRC channels, ask “why isn’t this working”, and I’d say “Because the PHP docs are wrong. Silly PHP people.” All that time, of course, I was ignoring a simple truth. I’m one of those PHP people. I use PHP. For most of those years I made my living with PHP. I was one of those annoying people who complains without doing anything. That’s embarrassing.

I have repented of my ways, and I’m about half-way through fixing the offending documentation, not only to make it more accurate and less prone to error, but to strengthen the ties between the two communities, which are hurt by jerks like me who spend too much time saying “that’s a PHP problem” and too little time saying “let’s see how we can fix this.”

The other incident is within the Apache HTTPd project. I have been a committer on Apache HTTPd since September 2001, and have done some work on the documentation. But during that time I have said, many times, that I merely write about what other people do, and have declined to accept any responsibility when things don’t work quite as people want them to.

Granted, writing Apache module C code is a lot harder than patching Docbook. But it’s not impossible. I’ve just convinced myself that it’s Too Hard For Me, even though I wrote the for Nick’s excellent Apache Modules book.

Now, I did try once, long ago, to patch one of the Apache modules. mod_access, I believe. And because I had no idea what I was doing – and, more importantly, because I didn’t test it once I was done – my change was reverted within five minutes of my committing it. Mostly, I don’t talk about that, because that was entirely my fault, and was a stupid mistake. Mistakes are fine. Not testing changes is not excusable.

And I also gave a whiny presentation back in 2006, at ApacheCon in Stuttgart, entitled “Why I Hate Apache.” It was amusing, and was better received than it deserved. And, to give credit where it’s due, almost all of the things I complained about have since been fixed. None of them were fixed by me. That’s a pity. The talk would have been much more effective if it had been accompanied by patches.

But now, because I finally got off my bum and decided to do something, I actually have two changes in Apache, which will be part of the next release. The QSD flag in RewriteRule, and a teensy tweak in mod_autoindex’s CSS support (not yet complete). Neither of these are earth-shaking, but they’re the first step, I hope, over a hurdle that I set for myself for no particularly good reason.

That was a lot of talk to get to my points.

1) Don’t decide that something’s too hard before you’ve tried it. That’s not only selling yourself short, it’s being selfish with your time and talents.

2) Complaining about stuff without doing anything about it is just adding to the problem. Filing bugs is important and good, but just whining and complaining is a strong disincentive for anyone else to fix it.

So if there’s a theme to my goals (resolutions, if you like) for the new year, it’s this: Stop complaining and do something about it.