Swimming with the Razorfishes

Friday, January 06, 2006


click for high-res

I was thinking today about how much I love San Francisco.

Thursday, January 05, 2006


click for high-res


So I'm sitting here, 11:38 PM, writing memos.And t...

So I'm sitting here, 11:38 PM, writing memos.

And the funny thing is that no matter what the memo is about, I cannot start writing the content until I've decided on the styling. I'm always tweaking the styles I use for writing business stuff.

Now is no exception. The style I'm using tonight looks a lot like A List Apart.

Tuesday, January 03, 2006

"Search for X" Considered Harmful

Many of use employ Use Cases as a tool to help design software we write. Maybe we want to be hip with the techniques the cool kids use, or our bosses tell us we have to start using "that RUP thing," or we just like drawing the stick figures.

Regardless, use cases are a good thing. User-focused, goal-oriented. Good stuff. I have one pet peeve, though.

"Search for X" is not a use case.

Your system should probably not have a "search for widgets" use case. Unless you have people who show up at the office, pull up to their desk, search for something and upon finding it throw up their hands and say "I'm done for the day," searching is not a primary use case.

Certainly, your users will need to navigate to the correct spot in the application. They might need to find things, too. Say, the correct invoice to post or the correct account for an expense report. But the searching is secondary. Searching is part of getting something done, not the thing to get done.

The "search for X" use case is a use case only a geek could love. "But you have to search" says the nerd. Another developer will argue, "we have to know exactly what they want to search for...to write the SQL." While this is all true, it almost entirely ignores the point of a use case: to be focused on something of benefit to a user. Us getting our joins straight isn't of direct benefit to the user.

Applications with "search for widget" use cases are easy to spot. They have big, obtrusive search functions. Every table in the database is represented in the window, often with multiple options per field. "Starting with X." "Contains X." "Ends with X." "Between X and Y." Almost invariably, if you do some user testing, no one uses every field or option in the application. Most people search for one thing, one way, and ignore the small forest of fields and menus sprouting from the screen.

Choose use cases carefully. Think about whether you need the search function to be central in the application -- should it be visible at all? Could you accomplish the same tasks by displaying a cleverly crafted list of stuff, mostly eliminating the need for most users to search for things? Search functions are often a manifestation of the underlying data storage. As yourself whether your search function is a necessary part of the system, or whether you are exposing too much of the relational model to avoid collecting more detailed requirements.


click for high-res


How do you teach a dog to do this?


On Friday, I woke up with a zeal for cleaning. This evening at about 10 PM, the same urge struck me.

But the compulsion wasn't so much for cleaning, rather I wanted to get rid of everything I own. All the crap I've accumulated. Between Friday morning and this evening, I think I threw away at least 1/5 of the contents of my apartment. I think I can get rid of another 20%.

Nearly as much fun as getting rid of all this junk was the means of disposal: stuffing it down the trash compactor. Opening that little door and jamming the garbage in. Hearing it slide down the chute. Sweet anticipation as it falls six floors. A satisfying thud as it hits the compactor.

Almost as much fun, too, as the memo I'll get from building management saying the trash compactor is broken because someone put a cardboard box of hangers, a box of extension cords, an electric screwdriver set, six bags of books, and three canvas bags of clothing into it.

Monday, January 02, 2006


To Sea
click for high-res

Thanks to my own sloth, I missed most of the fun with the Polar Bear Club on New Year's Day. Still saw lots of good stuff, including The Hungry Marching Band.

Sunday, January 01, 2006


This is very cool; I can't believe I missed it the first time around. I'm also glad I'm not his neighbor.