Archive for the 'Random Thoughts' Category

Everyday Usability (Cruise Edition)

Monday, March 4th, 2013

To take advantage of my self-imposed unemployment the wife and I have been vacationing it up lately. In February 2013 we took a cruise on the Disney Magic to Grand Cayman and Cozumel out of Galveston. In your state room you are given a door hanger that has two very different messages on it. This is to let your room host (the person responsible for servicing your room) that you either don't want to be disturbed or that you'd like for them to attend to your state room. Here's what they look like:

IMG_9271 IMG_9272

A couple of cruises ago we spent almost half the cruise not realizing the two sides were different. Around the third or fourth time the host tried to service the room while we were taking a mid day nap we realized what idiots we are. That got me to thinking about how you could improve these door hangers both for the guests and for the room host. For the guest you want something that makes it even more obvious that the two sides have different meanings. For the host you would like a method of differentiating the message being communicated by the door hanger that can be discerned from a greater distance or from a more extreme angle that doesn't allow reading it. Of course you have the different images on the hanger but that's not terribly visible when looking down a hallway of a couple of hundred doors.

I think using a different color for each side would work even better. Since we're not communicating the intent of the different sides solely through color I think were still good in terms of accessibility and color blindness (I should also note the lack of Braille on the different sides of the door hanger). I would naturally pick red and green if not for the horrible memory of a former manager and a firmware engineer arguing for hours about the inherent ambiguity of the two colors when multiple nationalities and cultures were involved. Anyway, here's a stab at what my "improved" version would look like.

door_privacy_fixed door_service_fixed


Door Handles and Usability

Friday, May 25th, 2012

I just finished watching "J. Crew & the Man Who Dressed America" on CNBC. I recommend it but then I love those sorts of pseudo documentaries. It's about Millard "Mickey" Drexler and mostly his time spent at the Gap and J. Crew. One interesting thing about him is that he is mostly responsible for the success of the Gap and quite possibly deserves a large amount of credit for the success of the Apple Store. He's a retail / fashion specialist.

So I'm watching this documentary about an incredibly smart micro-manager (in a good way) that turned the Gap around and is slaying it at J. Crew. He and the interviewer are in front of one of the J. Crew retail stores and Mickey Drexler spends 5 or 6 seconds trying to open the door for the store:

Mickey Drexler trying to open a door

Now I can't fault him because even though the tiny text above the handle says "push" the handle screams "pull." Donald Norman goes over this in The Design of Everyday Things (another in a long line of books I recommend highly). You can see some of his thoughts on door handle design here:

Door Handle Design

You may not be equally amused as I was at the idea of a design / fashion obsessed CEO of a multi-billion dollar corporation not being able to open a door to his own store in under 6 seconds but for some reason the whole thing made me absolutely giddy, especially since it pointed to an example of the practical application of the lessons I had learned from Norman's book. This all has practical application potential in my day job as well: buttons need to simply look "pushable", there needs to be a visual cue for click to edit, the manual won't save you from poor design (see the small text above the door handle), and your poor user has no idea there's a context menu lurking behind that rather innocuous looking area of the UI. But, I digress.

Here's another instance that always makes me smile:

Intentionally Bad Usability

This is an instance where intentionally difficult usability is appropriate. The exit door for a school for handicapped children is made hard to operate. Making it extremely easy to use could have dire consequences (with no "undo" operation available to save the day).

I'll leave the "what we can learn from all of this" wrap up text as an exercise for the reader. For me it's just read more books and watch more non-fiction television. It helps me get my point across with what I consider to be cool phrases like: there are some doors that CEOs can't open.


He's Got This Ultimate Set of Tools

Sunday, May 6th, 2012

"Relax, all right? My old man is a television repairman, he's got this ultimate set of tools. I can fix it." If you don't remember your Fast Times at Ridgemont High quotes you're probably not alone. The scene is worth remembering because the context is ridiculous. So it is sometimes with software development. The cost and effort of fixing the existing implementation is sometimes just too great. The changes cut too deep. You're better off throwing out the current stuff and starting from scratch.

In software development you rarely understand your problem domain perfectly, if ever. You learn what your customers want through trial and error. Sometimes your organization has made such poor attempts at delivering the product people want that you can't help but throw away what you've currently got and try again with what you learned from your previous attempt.

Managers usually hate to hear such talk from developers. Developers always want to rewrite things. But in some rare cases they're absolutely right. Refactoring is great if you're even remotely close to what you want to do. But what if your product is built on bad assumptions of epic proportions?

Could CVS have been refactored incrementally to arrive at git? Could Windows have been refactored to create Linux? Could MacOS have been refactored to create OSX? Could Internet Explorer be refactored to create Chrome? When do you come to the realization that what you want, what you need, is so far away from what you have that you can't get there from here? When is the cost of making changes to your current product artificially inflated by the technical debt and faulty abstractions to the extent that it's better to throw it all away?

That's the advantage your competition has. You've shown them your near miss at a great product. If the people in your organization advocating a rewrite were magically transported into a competing startup that was creating a competing product from scratch would you be at all worried? If the answer is "yes" then you should use the advantages you have (those very same people plus a more intimate knowledge of the problem domain and where you went wrong) and do something about it. Plus if something in your product actually proves useful you can copy and refactor it into the new product.

There are certainly risks but the rewards are incredible.


I Think We're Going to Need a Bigger Box

Tuesday, April 10th, 2012

I was reading this post on the Instagram buyout by Facebook today and it got me to thinking about the benefits of the cloud, DevOps, horizontal scalability (one of my favorites), and well thought out architectures and monitoring.

One of the more interesting things about the $1 billion purchase price is that Instagram has 13 employees and 35 million users. That's just so crazy to me. It also ends up being yet another argument against the "bigger box" method of solving scalability issues. Eventually you cannot simply add more RAM to fix things. Trying to solve your problems that way is like trying to solve world hunger by breeding a single, giant cow.


Geek TGI Friday's Flair

Monday, September 19th, 2011

TGI Friday's walls are littered with "vintage" wall decor. Red Lobster has old lobster traps and fish photos all over their walls. Then it hit me: geek hangouts need their own brand of wall flair. Why not outdated tech books?

I've got a ton of books on technologies that aren't in widespread use any more. I'd donate them but even Goodwill doesn't want stuff like that. When you think about it it makes sense. So where do they go? The landfill? I like to pretend I'm much more environmentally friendly than that.

Some hangout for geeks needs to step up and offer a free appetizer or something for anyone that brings in a tech book that was published before, say, 2000? That seems like a reasonable cutoff. Then all the geeky people can laugh at the titles lining the shelves above their tables. "PowerBuilder? Oh, shit! I wrote something in that once!" (Apologies to Sybase, but you really need to give up on that shit.)


Thoughts on Call of Duty Elite

Wednesday, July 20th, 2011

For those of you that may not know Activision recently announced an online service called "Call of Duty Elite". This is directly related to their Call of Duty game series and works on kind of a freemium model. Ultimately I think it'll be a cool idea. However, the way they announced it to their customers lead to a pretty big negative reaction. Recently I recorded my thoughts (over a Call of Duty: Black Ops game play) on how they could have handled the announcement better, not abused their community managers in the process, and even whether or not they should build some of this stuff themselves (in particular in the social networking area of things).

If you're interested you can see the video on my YouTube channel or via the embedded player below:


MP3s and Ratings

Friday, August 13th, 2010

Don't you hate when you put ratings on most of the songs in your massive music library only to find that you need to do it again when you switch players? On Ubuntu I use Banshee which allows you to save ratings to the ID3 tag right in the MP3 file. That means those ratings are available from any Banshee player. Nice.

The problem is that I'm working a contract gig that sort of requires Windows (well, they think they do at least) and I don't fully trust the port in progress of Banshee to Windows. So, I'm using iTunes (which I hate). I think it'd be nice if other players could use that same custom ID3 tag to use the ratings but I realize that many people have an issue with subjective information (the ratings) being stored in a repository meant to store common supposedly objective information about the song itself. Then there's the whole issue of standardizing on the custom tag. In a perfect world more stuff would use a plugin based design and you could simply write an extension to get the ratings from wherever you wanted.

A simple import / export to an agreed upon format could also sort of solve the problem but you can't get people to agree on things and you would then have some annoying synchronization issues. I think it'd be swell if something like acted as that song and ratings repository since they're a bit of a de facto standard supported by most MP3 players. It seems simple to stick the rating in there when you scrobble whatever you're listening to. Then it's just a hop, skip, and a jump to an import / export to get up and running. It also feels like it'd add some value to their existing service. Somebody get on that…


Job Postmortem #2

Tuesday, August 3rd, 2010

About the Company

Now that I'm done with my current job it's again time to reflect on what I learned and what went wrong. I've changed the names to protect the innocent. I spent about 2 years at "Company V." They make a retirement planning tool. It allows you to do some nice "what if" scenarios to determine whether or not you're on track to do all those things you dream of someday doing after you retire. It's much more sophisticated than the crappy one or two question forms on the website of most financial planning companies.

It's a great idea in my opinion. It has a lot of potential. For the record, I like the people at Company V and I love the product idea. I just think things could be better.

Now for the lessons. I won't bother talking about the many issues I had about software development methodology at Company V. Instead I'll just talk about the product side of things.

Analytics, Stupid

The first is a simple one: collect some fucking analytics. Any discussion about how important a feature is, why people aren't signing up, which type of sign up button is more attractive are all bullshit if you don't have some way of collecting data about your visitors. We collected almost zero data about our visitors. What was our conversion rate? Fuck if I know. How many people abandoned the sign up process once they saw all of the data we required? Fuck if I know. That's the answer to every one of those questions because there's no goddamn data.

I can't talk about analytics as well as these two videos: Startup Metrics for Pirates and Web App Marketing Metrics. They're pretty short and definitely worth a few minutes of your time.

Multiple Masters

Company V has two very different target customers. Home users and financial advisors. If you are serving two very disparate customer types you will wind up with some very serious conflicts. Each customer type is a reason not to do something for the other customer or a great way to more than double your effort in the rare case you actually get to work on a feature.

In the case of Company V it was that they have a feature called "offline mode." This allowed financial advisors to take their laptop to locations where they don't have an Internet connection and sit down with a customer, going over their retirement plan. This was accomplished via a desktop application written in Java.

Getting Java working on someone's computer is an unnecessary hurdle and places without Internet connections only exists in movies. Offline mode is not useful to the home user. I would argue that it's not sufficiently useful to the financial advisor either. However, it was a feature that kept us from doing a lot of cool stuff because we had to have it. Yes, this feature could be accomplished in a better way but the need to keep the feature presented unnecessary overhead and complexity in my opinion.

Too Many Hurdles

There's just too much shit for someone to do before they can use the product. They have to sign up for an account, install the Java plug-in, download the application (or launch the applet) which is over 100 megabytes, and figure out how to use your product.

The more of those steps you can eliminate the better. Each one of those steps throws away half of your potential users. They just go bye-bye. The observant reader will realize that I just pulled that number out of my ass since Company V doesn't collect that kind of data. Prove me wrong.

The Things I'd Do

Short and sweet. Here's a list of things I would have done that I firmly believe would make for a better product for Company V.

Web App

Easy. Ditch the desktop application and make it a web application. Use something like GWT so you can get some good use out of your current Java development staff and have a relatively rich UI for your user. No installation on your computer, no downloading. Nice. You could even use Gears to get some workable solution for offline mode.

Use It Before You Register

If you have that nice web application, let people start making their retirement plan without even signing up. Just start using the product. Of course it would be nice if your product guided people through unfamiliar territory, but that's a given.

Once you've proven your value to them then you can try and get them to create an account if that's really your sort of thing.

Don't Even Register

Even better is to let them sign in with their Facebook, Google, Yahoo!, or OpenID login. Create an imperfect, incomplete profile off of whatever data you've got and bug them later to fill in the blanks. So what if you don't have their email address? Why the hell do you want to email them anyway?

Stop Emailing People

We collected email as part of the registration so we could bother our customers. Why? If you have a product announcement or a change in your training schedule why not just Tweet it? Or post an update on your product's Facebook page? Fine, let them put in their email if they want to be updated that way or need a password reminder (assuming they aren't using a 3rd partly authentication mechanism), but don't demand it.

Be the Tool

With retirement planning there are a lot of financial advisors that blog about how cool they are and how huge their planning penises are. We should have helped them do that. Our web app should have allowed embedding of whole or partial plans into web pages. If you want to show the benefits of a 529 savings plan create a couple of portfolios and embed the relevant portions into your blog. Company V would have a teeny tiny link in there so they get a little free press and the financial planner gets a tool that makes displaying unwieldy information a little easier. It's one of those win-win things I hear so much about.

Be the Tool Part 2

If you go to a financial planner they need to ask you roughly 3500 questions (I made that up) to determine the current state of your financial clusterfuck. Company V helped them do this by creating a PDF that was 10 megabytes and 40 pages long. The advisor would email it to the potential customer, pray it doesn't bounce because it's fucking huge, the customer would print it out, fill out the relevant portions, take it to the financial advisor who then hands it off to some data entry monkey to type into our desktop application. Simple, no?

Yeah, to hell with that. Use the no registration web application to allow the financial advisor to email, host, whatever a guided process to determine the relevant data and collect it directly from the user and dump it straight into the Company V application. The advisor has access to it immediately and the end user doesn't see most of those irrelevant questions. Throw in some tracking codes so the advisor can see the ROI for different ad campaigns. Let the advisor create a special URL that they can include in every email signature or even print right on their business card that takes the potential customer right to where they need to go. You get the idea.

Nice Ideas, But…

In fairness Company V thought some of my ideas were good. They just weren't good enough to actually do. There was no shortage of excuses. We have to keep offline mode, there are more important features to work on, who's going to pay for the development, etc. I still think each of these is potentially a great idea in general and for Company V especially. My next task is to find a place to work that agrees with me.


I Wish They Made This

Monday, August 2nd, 2010

Rhapsody is a music subscription service. For $10 a month you can stream music to your computer from their pretty massive catalog. It seems like a nice idea but I don't actually use it. I'm not sure why not. Anyway. I do love me some Guitar Hero (pretend I said Rock Band if your allegiances lie elsewhere). I would gladly pay a monthly fee to get access to a huge catalog of GH ready songs.

I know that Rock Band has opened up their tool set to allow independent bands to create RB tracks (and simultaneously get raped by an unfair split) but they're still selling the individual songs. I want to drink from the fire hose! Are there technical hurdles? Sure but that's not my problem. See, I'm an idea man, Chuck.

Yes, they can continue to release a new "game" every quarter or so and have a 50/50 chance of getting my $50, but wouldn't it be better to screw me out of $10 or $15 every month like clockwork? I think so.


Street View, Baby!

Wednesday, December 10th, 2008

I just got through reading a post that Google doubled its Street View coverage. I will admit that I know roughly zero about the inner workings of Google but this gave me an idea that I can in no way use to my benefit.

What if the setup for equipping a car with the "Street View hardware" was sufficiently unobtrusive that you could easily mount it on your rental car? Would it be worth it for Google to partner with a rental car company and offer a $5 or $10 per day discount on your rental fee? Or better yet, what about partnering with U-Haul? Would the information be too redundant (everyone driving around in the same locations) or just plain useless (like empty stretches of interstate highways)?

Just a random thought.