Archive for the ‘usability’ Category

New York has come of age as a start-up hub

Saturday, January 23rd, 2010

Obviously I’m biased, since I’m trying to do a start-up in New York, but everything about this rings true:

Tumblr and Posterous are the two most prominent “tumblogging” sites, i.e. sites that make blogging more straightforward by making it easier to post media. Both were launched within six months. (Actually, Posterous was started later than Tumblr.)

But now Tumblr has been an Alexa Top 100 site for a while and is still growing strong. Meanwhile Posterous has about 4 times less uniques. Yet Posterous has everything to win: it’s a Y Combinator company with top-tier investors like Chris Sacca and Mitch Kapor. Its founders are experienced software engineers with computer science degrees from Stanford. How come it’s eating dust from a small startup started by a high school dropout?

The answer is as easy as it is counter-intuitive: Tumblr is a New York company and Posterous is a Silicon Valley company.

Or, to put it another way: Posterous is an engineered product, while Tumblr is a designed product.

Posterous is extremely well engineered. There’s nothing wrong with it. Every single thing about it is well thought out. But it’s not just that it’s less pretty (though it is). It’s just not designed as well as Tumblr is.

…In fact, everything about Posterous is nice. It’s very nice. I’m not here to bash Posterous, I think it’s a tremendous product and I wish them the best of luck.

But everything about Tumblr is better designed. I used the landing page as one example, but there are tons of features where Tumblr shines by its gorgeous design.

Meanwhile Posterous is typical of the Silicon Valley engineering mindset where everything is measured, ranked, weighted. It’s like Google. And having terrible design like Google is great if you have a technology edge. But if you’re in a market where what matters is design edge, that’s not enough. There needs to be great design, by which I don’t mean looks (though they’re important), but how it works for the end user.

…The first is that New York has truly come of age as a startup hub, with its own “style”, its own way of doing things, its own mindset, which can sometimes — not always, but sometimes — kick Silicon Valley’s ass.

Not every thought can be expressed in 140 characters

Sunday, July 26th, 2009

Paul Carr defends long articles on the web:

Sometimes I write long. I really don’t care if the Internet is supposed to be limited to 140 badly punctuated characters of nothingness or one-note blog posts designed to leave a tsetse fly with ADD wanting more. For every comment I see complaining about the length of this column, I will add an extra 100 words to the following week’s installment. Believe me when I say this is a battle that I will win.

Jakob Nielsen used to argue that people only wanted to read short articles on the web. And yet, his description of how people read web pages exactly matches the way I read the print version of the New York Times:

A key finding is that most website users don’t read all your words. Instead, they scan the text and pick out headlines, highlighted words, bulleted lists, and links. Scanning is even more prevalent for readers of email newsletters.

Too many of the articles in the New York Times offer boring opinions and occasionally interesting facts, which is why I end up scanning it, instead of reading it. But my attitude is different when it comes to my favorite weblogs. I’ve read many fascinating essays on weblogs. And some of them are long. Complex thoughts can not be expressed in 140 characters. I appreciate Paul Carr’s slam against Twitter.

So frustrated with Mozilla that I’ve got a sore throat from yelling

Monday, June 8th, 2009

FireFox can crash any machine. Not “crash” in the sense of “blue screen of death” but crash as in “uses up all memory so the machine becomes unresponsive”. This is a reliable fact of using FireFox, regardless of whether you are on Ubuntu Linux, Windows XP, or Mac OS X (I can’t speak of Camino, as I don’t use it).

Sometimes I say this to other programmers and they respond “It’s not FireFox that is the problem, it is the plugins that you use – it is FireBug and Session Manager and all the others.” Of course, any programmer who reveals this attitude needs to be re-educated. If you offer a plugin system that is unable to manage the plugins, then maybe you should not offer that plugin system? It suggests a (possibly frightening?) willingness to shirk responsibility if a programmer defends a plugin system that can crash a computer.

I wonder what Brendan Eich is thinking?

One suggestion for others: if you use FireFox, every time a new version of FireFox comes out, FireFox will ask you if you want to upgrade. I used to always say “yes”. Now I realize, if your computer is more than a year old, you should say “no”. Each version of FireFox tends to be heavier and slower than the previous version. My Ubuntu machine is from 2006, and that is part of the reason why FireFox is so slow on it.

On my Windows machine, I just switched over to Google Chrome as my new default browser. I’m giving up on FireFox. On my Ubuntu machine, I am stuck with FireFox for now. I’m not aware of any other serious browsers for Linux.

For email, I would love to give up on Thunderbird, if I could find a substitute. I run Thunderbird on my main desktop machine which runs Ubuntu. Thunderbird has had a persistent bug that has survived several upgrades (of both Thunderbird and Ubuntu). The bug is with the address auto-completion. If I type an address fast, hit “Enter” to accept and start typing again fast, Thunderbird crashes. This can lose a lot of work for me (Where “work” might simply mean “Opened email and left them open because I found some that were important and so answering them will take some time.”). Apparently there is no equivalent of SessionManager for Thunderbird, no way of remembering which emails were open, waiting for a response, when Thunderbird crashes. No, instead, after Thunderbird crashes, I need to re-start it, go back 3 days, and then read through all my email again, looking for the important ones.

At work we had a deadline today, and I worked through the weekend to meet it. I kept getting feedback from various people testing the site. Some of the email I got was thoughtful, and offered intelligent suggestions about what we should do next. By this morning, I had about 20 emails open, waiting for me to have the time and focus to write a reply. Then Thunderbird crashed and they all vanished. I yelled so loud my throat was sore. Now I have to go back to Friday and read through all the email again, to find the ones that I wanted to respond to.

If I could find something better than Thunderbird, that runs on Linux, I’d switch immediately.

Empowering great designers to work freely with the HTML in a Symfony project

Tuesday, May 19th, 2009

I’ve had the good fortune to work with some truly great designers. These are people who are understand the client’s needs, who understand the users, and who naturally develop web sites that feel intuitive to the people who use the site. Long ago I learned that, when working with such designers, it was important to empower them with the code they needed, but to otherwise stay out of the way. In particular, such designers need access to the HTML of the site. When I hide the HTML away inside of PHP functions, I’m limiting the ability of these maestros to perform.

This has implications when working with a framework like Symfony.

A lot of computer programmers would add an image to a Symfony template by using one of the image helpers:

<?php echo image_tag(’banner.jpg’) ?>

But what if the designer needs to add a CSS class to this? What if they are working late at night, and they are unable to reach me? Or they are working in the middle of the day, but it is a day I’m spending away from my computer?

The designers I work with can read PHP code fairly well. And they can look up the image_tag helper and figure out its syntax. But this is a big waste of their time. It takes them further into the world of programming than they should need to go.

When creating URLs in a Symfony project, it is important to use helpers. The helpers take care of figuring out what the right URL should be for things like images. The helpers allow us to develop on one machine and deploy to another server when we go live, and even if that other server has a completely different directory structure, we don’t need to change any links, because the helpers take care of all that for us. However, managing the URLs is the only thing that the helpers should do.

So we do not do this:

<?php echo image_tag(’banner.jpg’) ?>

Instead we either do this:

<img src=”<?php echo $sf_request->getRelativeUrlRoot() ?>/images/banner.jpg” />

or we do this:

<?php sfLoader::loadHelpers(array(’Url’)); ?>
<img src=”<?php echo public_path(’banner.jpg’) ?>” />

This way the URL is managed by Symfony’s helpers, but the rest of the IMG tag is still free for the designers to work with. If a designer needs to add a CSS class, they don’t need to call me on the phone and get me to do it, and they don’t have to start researching Symfony helper tags, instead they just add the CSS class like they always have:

<img class=”header” src=”<?php echo public_path(’banner.jpg’) ?>” />

This is an important bit of project management. It allows for a correct separation of concerns – the designers get to focus on design, and the programmers can focus on the programming.

How much, or how often, should a design idea be discussed?

Monday, April 6th, 2009

One of the tough calls to make, when managing a project, is figuring out how much time should be devoted to talking things over. If you are the manager, there are two mistakes that you might make:

1.) You cut off conversation too soon, before the designer has had a chance to defend their idea, or before the client has had a chance to fully articulate their dissatisfaction, or before your programmer can explain why one option would take more time, and therefore more money. You force a decision to be made before all the facts are in. Possibly you kill the conversation just as people are warming up to what would be a brilliantly creative set of insights, if only you allowed more time.

2.) You allow the conversation to go on too long. After awhile, people begin to repeat the same points they made 4 hours before, or perhaps the day before. Your team begins to fear these conversations, which seem to be endless swamps of unproductive debate. The team craves action, decisions, movement, they want to finally be building something, but instead you keep pushing for more information, another round of opinion gathering.

It is difficult to find the right balance. I suspect we all have our preferences about what we consider the right level of conversation versus action.

Over at 37 Signals they’ve posted an extended chat that Jason Fried and Ryan Singer had about adding a new feature to Basecamp. It is useful to see how such a well known and successful team works through their design issues.

(14:42:41) Jason Fried: What are some of the pushback points we’re anticipating?
(14:43:02) Ryan Singer: “i use milestone attachments for [some crazy custom reason] and this doesn’t apply to me”
(14:43:30) Ryan Singer: possibly: “i want dates on my to-do items, not the lists themselves”
(14:44:12) Ryan Singer: i don’t think the first point is a problem
(14:44:18) Ryan Singer: there are always people who bend the interpretation
(14:44:51) Jason Fried: What if the date thing said “On or before March 14”
(14:44:59) Jason Fried: I think the ridigness of it may be a problem.
(14:45:03) Jason Fried: And this could soften that a bit
(14:45:05) Ryan Singer: a bit long, but i like that idea
(14:45:52) Ryan Singer: hm kinda long
(14:46:08) Ryan Singer: becomes harder to interpret too

I know that in such conversations I tend to defer to the designer, and I tend to want to reach a conclusion quickly. Probably because I’ve been in so many, many meetings where someone else forced the conversation to go on for many more hours than was needed, I tend to play the role of the person who is willing to reach a quick agreement. Ryan Singer reminds me of myself, in this portion of the chat, where he seems willing to go along with the “Due by” language, even though he initially disliked it. He seems eager to reach a final agreement.

(14:46:35) Jason Fried: After seeing this the issue I have is the rigidity of it.
(14:46:42) Jason Fried: This list IS DUE on this date
(14:46:45) Jason Fried: Well, not really
(14:46:57) Jason Fried: It’s part of a milestone that is due on this date.
(14:47:07) Jason Fried: So I’d like to see if we can figure out how to present that reality a bit better
(14:47:15) Ryan Singer: good point
(14:47:18) Ryan Singer: ok
(14:47:41) Jason Fried: how about
(14:47:47) Jason Fried: “Due by 14 February”
(14:47:49) Ryan Singer: “Milestone: 14 February”
(14:48:03) Ryan Singer: nice that Due by is shorter
(14:48:05) Jason Fried: Milestone may work. Ties it into the feature.
(14:48:07) Ryan Singer: shorter is better for this flag
(14:48:12) Ryan Singer: even “Milestone: 10 Feburary” is quite long
(14:48:13) Jason Fried: Due by is less rigid than “Due on”
(14:48:15) Ryan Singer: doesn’t hold together as well
(14:48:16) Ryan Singer: yeah
(14:48:37) Ryan Singer: Due by looks pretty good. screenshot coming

But Jason Fried won’t be rushed into a decision. Instead, he keeps the conversation going, even though Ryan Singer was willing to go along with “Due on”.

(14:55:14) Jason Fried: Due is good, but it’s an opinion 5 years after the fact.
(14:55:20) Jason Fried: That’s why I’m pushing back a bit.
(14:55:30) Jason Fried: We’re not introducing attachments today
(14:55:37) Jason Fried: If we were I’d feel better about it.
(14:56:15) Ryan Singer: i think if we don’t go with “Due..”
(14:56:26) Ryan Singer: it would be better to explore moving the link below the title into the list description area
(14:56:30) Ryan Singer: and actually naming the milestone or something
(14:56:41) Jason Fried: right like…
(14:56:54) Ryan Singer: like “For Ship v1 of the Home Page, 14 Feburary”
(14:56:57) Jason Fried: “This to-do list is attached to a “milestone name” which is due on 14 Feb”
(14:57:23) Jason Fried: I feel like we don’t lose anything with that direction.
(14:57:27) Jason Fried: And we gain clarity

If you read the whole transcript, you can tell these two are getting warmed up as the conversation continues – they are thinking hard about this problem, and they are getting deeper and deeper into the nuances. I relate to this chat quite a bit, as it reminds me of so many of the more productive meetings I’ve been in.

Finally, an hour goes by, and Jason Fried keeps pushing them until they arrive at what they both agree is the perfect answer:

(15:20:08) Jason Fried: In the app we say “Attach to…” so I wonder if we should repeat that here.
(15:20:18) Ryan Singer: i would rather change the language in the other places
(15:20:23) Ryan Singer: “Attached to” looks weird here
(15:20:28) Ryan Singer: and it doesn’t fit with the normal expectations of what an “attachment” is
(15:20:36) Jason Fried: K. We don’t want to change the language elsewhere so we’ll consider that one a no go.
(15:20:39) Jason Fried: Umm…
(15:20:46) Jason Fried: “Related to” works for me.
(15:20:47) Jason Fried: Cause it is.
(15:20:51) Ryan Singer: actually the edit dialog says this:
(15:20:55) Ryan Singer: “Does this list relate to a milestone?”
(15:20:58) Jason Fried: Perfect
(15:20:59) Jason Fried: Done
(15:21:02) Ryan Singer: done

15 of the top 20 websites use tables for layout

Thursday, February 5th, 2009

A very interesting post by I Am El Gringo:

For the time-constrained, I submit to you the results of my highly scientific research:

  • Yahoo: Minimal Use of tables. I found a picture of Hugh Downs horizontally aligned with it’s caption in a table
  • Google Home Page: Not only does Google use tables for it’s iconic home page, it embeds styling in the <td> tags. The horror.
  • YouTube: Uses tables for of layout of videos
  • Windows Live: Uses tables for footer layout
  • MSN: There is one table, but it’s only for stockquotes which is tabular data
  • MySpace Semantically pure. MySpace. Whoda thunk it
  • Facebook: Does form layout with tables
  • Blogger: No tables anywhere on the front page
  • Orkut All tables all the time
  • Rapidshare: A table with a single <td> for header placement. And again a single <td> table for the central “browse” section. Tsk tsk
  • Microsoft: Navigation bar is a table. What did you expect? Unicorns and rainbows?
  • Google India: It’s the same Google layout. I wonder if they used copy and paste for the template?
  • Ebay: Tables, tables every where
  • Hi5: Tables for every thing, pretty much. BTW, I didn’t even know this site existed until last week. Alexa rank 14!?
  • Photobucket: Tables for photo gallery layout
  • AOL: AOL’s layout is semantically pure! Friggin AOL?
  • Google UK: Same GOOG layout. I’m now sure the copied an pasted their html
  • Amazon: Now that’s just silly
  • IMDB: They used tables for their 3 column layout. What! No CSS framework?
  • Imageshack: Semantically pure as the driven snow.
  • Finally, even though it’s not on Alexa’s top 20, log in to your Gmail account and look at
    the use of tables

My Hypothesis: Pure CSS design == overcompensation

So, the five companies that use CSS are the web powerhouses–MSN, MySpace, Blogger, AOL and Imageshack. MSN, MySpace and AOL have been maligned for years throughout the web savvy community. My hypothesis is that these companies are overcompensating for the crap that they’ve taken thoughtout the years by designing their site in pure CSS.

Other companies that have more web street-cred like Google and Facebook don’t really have to worry about how the web design community sees them. This leads to things like Google making extensive use of inline styling on their homepage instead of putting it in their stylesheet. I’ve never heard anyone claim that the Google folks are slouches at the web design/development thing. Why is that?

A rule for user interaction: keep debugging information out of error messages

Sunday, February 10th, 2008

Yet another example of bad web programming. I was researching the subject of cancer and followed a link on a government site that gets me to this page:

Error message on government site: debugging information should be kept off of live sites

I think its fine to print debugging information to the screen when a website is under development, but on a live site, I think the error messages should try to be more helpful. Perhaps the error message can suggest the average speed it takes the site’s sysadmins to fix problems of this time. Or the error message can suggest that the visitor go get the page out of the Google cache. Even the cutesy error message that Stikipad used was more reassuring than this.

Netflix error: why allow a date that is not allowed?

Sunday, February 10th, 2008

Back on September 24th, I decided to put my Netflix account on hold. I knew I was facing a stretch of time when I was going to be too busy to watch movies. Apparently Netflix only allows you to put your account on hold for 90 days. Nevertheless, the form that I was presented with allowed me to choose any date in December, so I chose December 31st, as you can see here:

Netflix error: the form that allows forbidden dates to be choosen

Upon submitting the form, I got the following error message:

Netflix error: why do they allow users to choose dates that are in fact not allowed by their policies?

This is, of course, an example of bad user interface design. They should not allow me to choose a date which they themselves forbid. It is confusing that their form should offer a date which is, in fact, not allowed.

What designers do

Friday, November 30th, 2007

The framework I wrote auto-generates forms based on the definition of a table in the database. These forms are usually quite ugly. The advantage of these auto-generated forms is that they speed the initial set up of a site – I simply define some database tables, based on what the client has told me they want, and the framework auto-generates the form.

On the TSR site, we are still cleaning up the rough edges. Laura Denyes, the lead designer on this site,  is transforming the rough and ugly forms. After enhancing the clarity and improving the use of space, we hope to leave the user with a better experience. You can see Laura’s work in this before and after image:

Before and after - the transformation of a form on the TSR site - an example of the work of Laura Denyes, the designer

Sprint PCS is even more broken than before, thanks to its merger with Nextel

Monday, September 24th, 2007

I’ve written before about the error messages I’ve encountered on the Sprint PCS website. I’ve been unable to log into the Sprint PCS website this month – I get some bizzare error messages instead.

Today I figured I’d try to use my phone to pay the bill. I hit “*2″ which dialed customer service for me. I reached an automated voicemail system. It asked me to type in my phone number, so it could look up my account information. I did so. It then told me that I owed Sprint $513. I was stunned. By my calculations, I owe something like $200. I pay about $97 a month, and I owe last month and this month. I’m not sure how the amount doubled.

Eventually, the automated system gave me the option to talk to someone. I pressed the button.

A pleasant, helpful woman got on the line and asked for my telephone number, so she could look up my account information. I gave her the number and she said they had no account information for me. I explained that I’d had this account with Sprint since March of 2001. She explained that she worked for Nextel, she didn’t have account info for Sprint customers (the two companies are merging).

This is puzzling. If Nextel doesn’t have any of my account information, then why should my phone auto-dial Nextel when I press the buttons for customer service? Also, if Nextel has no information about me, how did the automated system tell me that I owed $513?

What happened next is also puzzling. I said, “Okay, can you transfer me to Sprint Customer Service?” She said she could not transfer me there. She could, however, give me the phone number. Why can’t the phone company transfer me to the number they want me to go to? I find that confusing.

I dialed the number she gave me.
Sprint PCS also had an automated system. It asked me to type in my telephone number, so it could look up my account information. I typed in my telephone number. It said there was no account with that number, and it suggested I type it again. I assumed I’d mis-typed it, so I tried it again, carefully. Again, the automated voice system told me that there was no account with that number. I didn’t know what else to do, so I typed in the number a 3rd time. Again it told me there was no such telephone number.

I couldn’t think of what to do then. The automated voice system did not give me any other option. It kept asking me to type in my telephone number. It asked me 4 more times, and then, when I did nothing, it hung up on me. It never offered to transfer me to a human operator, who might have been able to resolve the situation.

I’ve had this account for 6 and half years. Right now, I seem to be completely locked out of it. The computer at Sprint PCS claims my account doesn’t exist. At Nextel, the computer says I owe the incredible amount of $513, and then the operator says she has no access to my account information because it is over at Sprint.

I don’t need to know many of the details to tell that the merger of Sprint and Nextel databases is going badly. If I had stock, I’d sell it. This is the worst customer service experience I’ve had in many years.

SprintPCS has a broken website (Updated)

Friday, September 14th, 2007

Yet another story about a badly programmed website, with really bad error messages.

I went to pay my monthly cell phone bill. Just last month, SprintPCS instituted a new policy, requiring stricter passwords with more letters and numbers in them. So I was forced to change my password. Perhaps I was also in a hurry, as I did not write it down in the usual place.

Today, unable to remember the new password, I clicked the link they offer for “Forgot your password?” I came to the screen you see in the first image.

this is the form on SprintPcs.com where I request my password

I typed in my “username”, which is simply my telephone number. When I hit the submit button, I got, in response, a blank white page with the text “Error: 500″. That’s it. Nothing else. Just that text on a blank white page. You can see it in this second image:

This is the error message I got from SprintPCS. Not very helpful, is it?
I offer this anecodote as one more small piece of evidence for the case that most web sites are horribly programmed and poorly tested. I don’t mean to pick on SprintPCS, since there are many sites that are just as bad, but this just happens to be the broken website that I interacted with today.

Mind you, the above incident happened this morning, around 11 AM, and now it is 11 PM. I just went back to get screenshots. Twelve hours later, the problem is still there.

I sent SprintPCS an email about this. I have not yet heard back from them. I’ll update this post if I do hear from them.

UPDATE: wonderful response time. I just got this, on the 17th. The irony:

Date: Mon, 17 Sep 2007 14:08:18 -0500 [02:08:18 PM CDT]

From: Sprint Customer Solutions <ecare@cc.sprintpcs.com>

To: LAWRENCE@KRUBNER.COM

Subject: Re: Subject: ID # 20070914212929 (KMM38317571I123L0KM)

Hello Lawrence Krubner,

Thank you for contacting Sprint.

A ticket has been submitted in reference to the difficulty you are experiencing logging into your account online at Sprint.com. The ticket number is 16880851.

A follow-up call will be made to you within 36 business hours.

Thank you again for contacting Sprint. We appreciate your business.

Mary O.
E-Care
Sprint
“Where our customers come first!”

Refer someone to Sprint and get $25.

So after 3 days, they send me an email in which they promise to contact me within 3 days. Then they close with “Where our customers come first!” Hate to think how we’d be treated if we came second.

Usability is a single piece of an experience puzzle

Monday, July 23rd, 2007

A very nice point by Robert Hoekman:

We hold up usability as laudable because, sadly, most companies still have serious trouble putting their pants on correctly when it comes to usability. They need the gold stars.

Anyone in the interaction design or usability profession worth his salt knows that usability is a single piece of a very large “experience puzzle”. You need a strong value proposition to get users in the first place. You need a compelling product or service. You need good customer service when things go wrong. You need marketing prowess. You need something that makes you different, and better, than everyone else in your space.

For a product or service to be great, you need all these things. But you also need a usable touchpoint. A strong value proposition gets people interested in your product, but once you have their attention, a high level of usability helps motivate people to keep using it. A low level of usability deters people from using your product.