Archive for March, 2006

WIBNI

Friday, March 31st, 2006

Most bug tracking systems accumulate feature requests along with defect reports. The next time I set up a tracking system, I’m going to add a “wouldn’t it be nice if” (WIBNI) category to distinquish between the nifty ideas that developers dream up and the features that customers actually ask for.

There are good reasons for implementing both types of features, but unless you keep the distinction visibile (and the decisions about how much of each to do deliberate), you might find yourself accidentally putting out a release with nothing but internally generated features. There might be some customer value in that, but navel gazing can be a risky strategy.

Lost notebook

Friday, March 31st, 2006

I left a small notebook on an plane (SWA from ABQ to PHX this afternoon). It has my email address and phone number in the front. If you found the notebook, though “I wonder if there’s a web site at that address?” and see this, please drop me a line. I really would like the notebook back.

I don’t tend to leave things on planes. It must be the headcold kicking in after a week of the dry dessert air doing a number on my sinuses.

Kudos to Albuquerque airport management

Monday, March 27th, 2006

While other airports are blocking access to power outlets, the airport in Albuquerque has set up tables with large power strips on them. Tables, with chairs. And a sign: “Charging Station”.

Brilliant.

When Albuquerque isn’t a destination, it’s one of those places that you connect through if you’re travelling slightly off the beaten track. Flight segments in and out of ABQ are usually more than long enough to guarantee a drained laptop battery by the end of the trip. Providing travellers with a chance to recharge is a real service, and probably costs the airport a pittance.

I wish other airports would pick up the clue phone on this one.

Times change

Tuesday, March 7th, 2006

Three things I never said to my Dad when I was eight:

  1. Daddy, can I have my own password?
  2. Dad, can you check the weather satellite?
  3. THIS COMPUTER IS BEING STUPID!

A Day of data munging

Sunday, March 5th, 2006

Today I tackled a data munging problem that had been festering on my To Do list for several weeks. The problem was blocking other, more pleasant work, and was contributing to my having a foul mood.

The problem involved reworking 121 HTML documents to hoist content out of a table and then discard the table structure along with some other content. Editing the documents by hand would have been both exhausting and error prone (25 documents? Maybe. 121? No thanks). There were enough slight variations in the documents to make writing editor macros tricky. It could have been done in multiple passes, but that’s error prone with that many documents.

This was essentially a tree rewriting problem, so XSLT would seem to be a good tool to reach for. Unfortuntely, the documents were non-well-formed pre-XHTML. (Many of the files has passed through Adobe GoLive, which produces some… uh, interesting HTML.) Was it worth taking the time to convert to XHTML? Tempting, but not in this case.

I ended up using Perl and HTML::TokeParser to tokenize the documents. A simple “keep tokens until we see a <table> tag, discard it, and keep discarding until we see… and then keep tokens until…” state machine was quick to code up and test, and ran so fast that at first I thought there had to be a bug. Converting the tokens back to HTML let me clean up some of the damage that GoLive had done.

Perl has long been my tool of choice for problem like this, though lately I’ve been spending most of my evening programming time with Ruby. It’ll be interesting to see if or when Ruby supplants Perl for problems like this one. My knowledge of Ruby’s libraries outside of those needed for Rails work is still meager, and my bag of Perl tricks is pretty big. I’m guessing it’ll be another year.

Slow, incremental decluttering

Wednesday, March 1st, 2006

The first step is easy. Sit at your work area (or stand, if you work on your feet). Close your eyes. Take a deep breath. Get your head as clear as you can in the space of one breath. Breathe out. Open your eyes and let your attention fall on something within reach that looks out of place. Take a moment to deal with it, in whatever way makes sense for you in the moment. This might mean throwing something away, filing it, or jotting down a note to deal with the thing later.

Repeat this a few. Over time, increase your perimeter. Open a drawer. Look at the nearby walls, or the floor nearby.

As I do this now, I see (and move) a Land’s End catalog, some papers that need filing, an expired post-it note on my monitor, and a pair of sunglasses that don’t need to be on my desk.

The second step happens in its own time. Something you need won’t be within reach. As you get it, ask yourself if this thing needs to stay within reach. If so, take a moment and find some other thing that is within reach but doesn’t need to be, and move that other thing somewhere else. Simple rule: something comes, something goes. (Or, if you read Boing Boing, something comes to town, something leaves.)

I’m at an impasse with the second step. There are reference books I reach for every few days, but the need to have them within reach isn’t strong enough to displace anything else.

This slow, incremental decluttering works a lot better for me than big bang cleanups. The latter do nothing to avoid the clutter building up again.