All posts by Shahid Hussain

H-1B 221(g) Administrative Processing waiting times

I’ve just finished this process for an H-1B visa from the US Embassy in London. The H-1B was allocated from the lottery by USCIS, but following the interview at the embassy I was handed a 221(g) form giving me notice of “administrative processing”. I’ve also previously been through this process for the F-1 student visa. For anyone else in this situation, this post should illustrate some of what’s going on and what you can expect.

WTH is going on?

Administrative processing is a massively vague term. What’s actually happening is that the Embassy is doing a background check on you. They don’t do it themselves – instead, they package your information and send it off to the FBI and other agencies, who are actually doing the checks.

How long should I expect to actually wait?

I waited 32 days for processing of my F-1. I waited 4-5 months for processing of my H-1B.

The London Embassy helpfully publishes the status of your application on their website. Even better – they don’t just publish yours, but everyone else’s information as well. So, I did some quick analysis on this data.

For everyone who’s still waiting (i.e. status = pending), here’s a frequency graph of waiting times.

H-1B waiting times

This analysis is based on data from 09.00hrs on 14th Sept 2010.

This means that, for example, about 52% of people who are waiting have been waiting more than 90 days. If the speed of processing at the Embassy isn’t changing over time, this means that your chances of hearing something before 90 days is about one in two.

I’ve also heard that the 90 day mark is used as an internal check, i.e. the embassy themselves will start chasing various agencies for the results of your check around this time. I’d expect to see an inflexion point in the chart if this was the case, but the data doesn’t seem to bear this out.

(Update: A reader wrote in to show their analysis of the US Embassy in Tokyo. It seems to indicate a 2 week backlog, and a faster average response.)

Is there anything I can do in the meanwhile?

If you want to speed it up, to the best of my knowledge there is precisely bugger all that you can do. To quote the London embassy:

Please do not contact the Embassy while your application is being processed as we will not be able to assist you.

You can only do two things that will yield you information for sure:

  • Obsessively check your email
  • Check the website if you’re applying through the London embassy

For some people (including me) that’s just not enough, and there is other stuff to do, but it’s all just a shot in the dark rather than anything definite. In each case, I’ll include what I did and whether it helped (spoiler: nothing helped for sure).

Your senator. Although this might seem strange to us Brits, you can contact your local senator for assistance. This is probably the most concrete and useful step here. Unsurprisingly, your senator isn’t required to assist you in any way, but you can ask. In my case, we contacted Senator Dianne Feinstein’s office. The money quote:

My staff will be happy to assist you in following up on the status of your pending name check if your case has been pending with the FBI for at least one year.

Our company lawyer drafted a letter to a contact of his in Feinstein’s office. This is one of the advantages of *having* a lawyer, although it’s certainly no guarantee. We did get a reply back, but by that time the case was already completed.

State department. You can contact the state department directly to find out what the heck is going on. There is a direct number floating around, which I won’t include for fear of inundating the polite chap I spoke to, but it’s around. I did this, and was told that my application was still pending processing (not exactly a revelation). However, they were able to look up my case, so I did now know it had actually made it out of the embassy.

Personal network. If you’ve lived in the states for a while, you may know people who can find something out for you. It turned out that I had an acquaintance at the DOJ, a friend whose colleagues knew some politicians, and a colleague whose wife’s mum used to work for the state department. All of them were wonderful, sympathetic and tried to help by contacting people they knew who might know something. Although noone was able to dig up information specific to my case, I did get back some useful advice (which is now in this blog post).

National Academies. You can fill in a questionnaire. I’m not sure if it helped, but I did get a followup automated email after I was approved to confirm that everything was received.

The embassy themselves. The 221(g) plainly says that you can’t call the embassy for any information until 90 days are up. I called on the 91st day, but it was absolutely no help at all.

Is there anything I can do to avoid this in the future?

If you’re lucky enough to be reading ahead and you’re a few months before your potential 221(g), keep reading. If you’re in the US at the moment, I understand that it’s possible for you to get a check run on yourself before you head out. It will take about 3 months, and your local police department & FBI can help you out with this. Once it’s done, administrative processing should go faster – plus, you can take the checking documentation to the visa interview and wave it at them to save everyone some time.

What should I expect to see when it clears up?

You should get an email, but it’s not guaranteed. I didn’t hear anything on phone or email once the processing had completed on the H-1B, but I did get an email for the F-1. Here’s the text of the email I received.

Dear Mr $applicantName,

Please submit your passport.

You must resubmit your passport via the Embassy-appointed courier service, Special Mail Services (SMS). Once you are prepared to submit your passport for visa issuance please contact SMS by telephone on 0870-950-1760 to arrange pickup of your passport and delivery back to you upon issuance of your visa. The courier service will not have any information about your visa processing.

Important Notice: Your application will take between 15-20 workdays to process once it has been received by the Embassy. Once processing is complete, your passport will be handed to SMS. A further one to two days should be allowed for delivery.

The Embassy cannot expedite your application once it has been received. Please do not call the Operator Assisted Information Line or email us concerning the progress of your application unless more than two weeks has passed since SMS collected your documents, as we will not be able to provide you with any information.

We strongly advise that you do not purchase any tickets for travel to the United States or make irrevocable travel plans until after you have been issued a visa and your passport has been returned to you.

If your travel dates have passed, you must submit a new itinerary. If you are planning to travel for the same purpose at a later date, we may well be able to issue your visa, however, if your circumstances have changed, we will have to do further processing.

Summary

Expect to wait. If it clears up quickly – thank your stars and head to the New World.

Please drop a note in the comments if this was useful or you have any other experiences that might help others.

Updated: I added in some extra information as I learned more about the process. My H-1B has been issued and I’m now back in the states. Best of luck to everyone waiting.

Implementation models vs mental models IRL

If you’ve read “About Face” (Cooper, Reimann, Cronin) you’ll recognise this diagram. It’s a great description of how a product can be closely related to the way it was built (the implementation model), or the way a user relates to it (the mental model).

Implementation models vs mental models

Here are some products that are close to the implementation model:

  • The command line
  • IRC
  • Opening files with VLC

Here are some ideas that pull implementation closer to a mental model:

  • An email inbox
  • A desktop in your operating system
  • Folder icons in Explorer / Finder / GNOME

It never occurred to me that the same could happen in real life, but here it is, from a gym in Birmingham, UK. This is a sheet that members use to refer their friends (presumably in return for a discount).

Making interface animation useful

Many interfaces on the web contain some kind of animation. We’ve had Flash for a long time, and with jQuery and HTML5 it’s become even easier to add animation.

Should we do it?

Just because we can do a thing, it does not necessarily follow that we must do that thing.

People hold these two views about interface animations:

  1. Take the animations off! They are slow and I want to concentrate on function – this crap just gets in the way!
  2. I will put in animations because I can. L33t

There is a third way, which is this – make your animations useful. I’ll explain by showing an example of a site that lights the way, and a site that ballsed it up.

This site lights the way

bandize.com

Behold, Bandize.

As you click through the navigation links – Show / Tours, Accounting, Contacts and so on – the content in the lower box sweeps linearly. If you go from link 1 to link 3, you see the content from link 2 sweeping by quickly. The list of links is your map, and the content box below is your zoom into that map.

The animations directly describe how your control is related to what you’re seeing, and that’s good.

This site ballsed it up

widgetbox.com

Behold, widgetbox.

This is a really similar content discovery style – a set of links (the four grey panels to the right) that control a panel (content to the left).

But this time, there are a few errors.

  • Firstly, path from navigation links to content doesn’t match the animations. The content animation sweeps linearly along to the right, same as Bandize – but the navigation links are actually arranged in a zigzag. Try it – it’s confusing as heck.
  • The grey panels activate on hover rather than click, which makes it too easy to navigate by mistake rather than intention.
  • There are two more ways of navigating through content (I circled these in orange above). One, a play / pause control that’s almost invisible, and second, iPhone style dots (that actually do map correctly with the content animation – they’re in a line.) Both of these elements are clutter.

Conclusion

Using animations is easier than ever, but be careful. Don’t add them for their own sake – make sure they are helping the user understand what’s happening and why.

T-Mobile’s image compression

I’ve been using a T-Mobile UK connection through a Nexus One to stay online in Blighty. It turns out that they employ some shenanigans to keep their bandwidth costs down.

A few tricks seem to be happening:

  • A transparent proxy loads your requested images, but sends you a more compressed version of your image instead.
  • On every pageload, a script tag to insert this javascript file is injected into the page header. This file allows a user to request the full quality images with a keyboard shortcut after pageload. Instructions are given with a tooltip on every image.
  • All unnecessary formatting is removed from the page source, i.e. spacing, tabs and so on from the HTML.

Here’s what the compressed image looked like:

Here’s what the original image looked like:

How much bandwidth did this save?

Here’s what we know.

  • In my very non-scientific testing, the extra compression seemed to approximately halve the size of the image delivered.
  • According to the YUI people, average image pageweight is around 50% due to images.

Therefore, T-Mobile should be saving around 25% on every pageload. This comes at the cost of a slightly diminished user experience for users, maintenance costs for the proxy and script files (albeit minimal), and potential subtle brand damage (a user might perceive T-Mobile delivered internet as worse quality).

Update: You can disable the image compression by visiting http://accelerator.t-mobile.co.uk/ while connected via t-mobile.

Web coding on a mac

If you’re developing for the web, the chances are good that you have a server out there somewhere running a LAMP stack. If you’re doing a lot of iteration – which is probably a good idea – you’ll want to find a quick way of changing code on your server rather than downloading & uploading all the time.

Option one: Use vi

The cleanest way to develop code on that box is to SSH directly in there, and use vi, but it’s not all roses.

Advantages:

  • Great syntax highlighting
  • vi is frighteningly fast if you know how to use it
  • You can use the same environment from any laptop running os x or linux, and it’s instantly familiar
  • You don’t even need to install any software locally

Mannequin coverDisadvantages:

  • vi’s learning curve

For newbies like me, watching someone who’s familiar with vi makes me feel like Emmy from Mannequin. (“Where did they hide all the musicians?”)

So, you could spend a long time learning vi, or try something else.

Option two: Use something else

If you’ve ever used Dropbox, you’ll know that having a remote filesystem mounted in Finder makes working with files super easy. Luckily, there’s some great OSS around to help you do just that. Here’s how to get started:

  1. Download and install MacFuse from here
  2. Download and install MacFusion from here

After restarting your mac, you’ll be able to mount both SSH and FTP servers right into your filesystem. Now, you can use your text editor of choice on the mac, directly working on the files you want to play with.

Advantages:

  • Use any text editor you want (I use TextWrangler because I’m cheap)
  • Use all your mac’s keyboard shortcuts

Disadvantages:

  • You need to install some software locally, so you’re screwed if you have to move between laptops

Being a vi numpty, I chose this second path, and so far it’s working a treat. However, there is a bug in the current version of MacFusion (v2 final).

Macfusion Bug on sshnodelay.so

When connecting over SSH, you’ll note that the connection can’t be made. You’ll see a “remote host disconnected” error, and on examining the log in MacFusion, you’ll see this:

dyld: could not load inserted library: /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/sshnodelay.so

sshnodelay.so error

The solution is to rename the file to something else. Head into Terminal, and type this:

cd /Applications/Macfusion.app/Contents/PlugIns/sshfs.mfplugin/Contents/Resources/
mv sshnodelay.so MOVED_sshnodelay.so

… and voila, you can now mount over SSH no problem! (source)

Guide to Twitter for Marketers

Last week, I gave a talk at Kellogg on Twitter. I wanted to try and help our people understand what it means for them as we graduate and head into business. This post is the content of that talk.

If you’re well into social media already, you might be familiar with a lot of this information already.

If you’re not working in social media but you want to understand how you might be able to use it to help your business and your customers, this post should be useful for you. Unlike Twitter, there is no short version, but I’m always happy to help if you have any questions. Just ping me!

Start here

First – Twitter is probably something you should know a little about now. Here’s Comscore data to April of Twitter versus LinkedIn, NY Times and Digg.

twitter-vs-digg-linkedin-nytimes

Two more signals of it being mainstream – it’s been on Oprah, and it’s been on the Daily Show. This isn’t a fad, and although it might change, Twitter isn’t going away.

What is it, and how do I use it?

First, go and sign up for an account. To quote:

You can’t understand Twitter, Facebook, or blogging by reading an article in a magazine or a report from your CMO.

George F. Colony
CEO, Forrester

The basic idea is this. You put in a short message of 140 characters or less, which is by default available for anyone to read.

That’s it.

It’s similar to Facebook status messages – except in Facebook, only your friends can see your messages. It’s similar to blogging, except your messages can only be 140 characters long.

At first glance, it’s not a mindblowing concept. But let’s examine more closely why it’s worked out so well.

Why is it so goddamn popular?

One – the messages are 140 characters.

Let’s do a little experiment. Take out a polite email you’ve written recently to someone you don’t know – maybe a request for an informational interview, or an invitation for someone to speak. Now, try and boil it down to 140 characters or less.

Imagine yourself in the position of the person you’re emailing. Of course, it’s nice to get a polite email. But if you’re pushed for time and just trying to absorb information as fast as possible, the 140 character version will probably get the message across faster.

Now consider Generation Y. There are studies knocking around that demonstrate that the attention span of Gen Yers is decreasing. So not only are they getting more information per unit time, but they don’t have the patience to read through an entire article. (Maybe I should just twitter this article out instead? hope u r not gen y)

Two – you get messages in real time.

In tech, we like to keep out eyes open for trends – and there’s one happening right now – real time. To quote:

I have always thought we needed to index the web every second to allow real time search. At first, my team laughed and did not believe me. With Twitter, now they know they have to do it. Not everybody needs sub-second indexing but people are getting pretty excited about realtime.

Larry Page, Google Founder

Twitter is one of the reasons Page is talking this way. You can get a solid idea from Twitter and its surrounding services what users are talking about right now.

Three – you can access it from anywhere.

Twitter is pretty goddamn open with their API. Check it out – if you’re running Mac or Linux, hop on to the command line and type this:

curl http://twitter.com/statuses/public_timeline.xml

… or this …

curl -u user:password http://twitter.com/statuses/friends_timeline.xml

That’s it – you’ve just queried the Twitter API. If you wanted to, you could recreate the entire twitter user page with calls to the API like the ones you just made. That’s something that makes Twitter different from Facebook. Combine this with some talented developers and great ideas, and some amazing applications like twistori start to appear.

Four – location information.

Most importantly, people have written twitter clients – applications you can use to read and update Twitter – for everything. Multiple iPhone clients, any smartphone, and you can even update via SMS. For some of these clients, the location of the update is included – and location based services are also ramping up right now. How’s that useful for twitter? Check out this demo, which pinpoints where people are twittering about swine flu in the US right now.

What do people actually WRITE on Twitter?

Like Facebook or blogging, people have a whole bunch of stuff to talk about. I’ve put it into four categories.

  • RSS replacement. TechCrunch twitters out 140 character versions of its stories that are quicker to parse than their RSS feed. So, it can replace RSS for a user. An article prĂ©cis can come from random users as well as the article writer.
  • MLIA. People just tweet about the unimportant details of their lives. I don’t have any data on this, but I believe most tweets fall into this category.
  • Self-promotion. Julia Allison is a great example of this – not particularly being famous for anything except being a minor web celebrity. She’s making the service work to promote herself, and being pretty successful so far.
  • Real celebrities like Oprah, Queen Rania and Shaq, who are using it to build on their existing profiles or promote a cause. Here’s another place where real time works – a Shaq fan get get updates from their idol on exactly what they’re doing right now. That’s bringing fans and celebrities even closer together, and it’s reasonable to expect celebrities that use social media to start to outstrip those who don’t.

oprah

Of course, there are users like Sockington the cat that defy categorisation – but I hope these four cover most bases.

One more thing to consider – Patrick Swayze is not dead. Because Twitter users use each other as reference points, information spreads rapidly throughout the network, whether it’s true or not.

How should / shouldn’t my company use Twitter?

What I can do is show you some examples of how people are using it to help you figure it out.

First of all, to quote from a Kellogg study:

There is a measurable connection between what is being said about a product in online posts and real-time customer behavior.

Not shocking news. The interesting part is how Twitter is helping us to peer into those conversations – twitscoop and twends are two tools you might want to use to do so. How’s that useful? Let’s say you’re putting out a superbowl ad. You can use these tools and others to understand immediately how well your campaign is going, and adjust it accordingly.

Now, let’s see two good examples of how companies are using Twitter.

  • Kogi is a Korean barbeque truck that drives around LA, tweets out where it’s going to be, and then shows up to the crowd that’s been following them on Twitter.
  • Threadless, a Chicago based t-shirt design community, twittered an official press release to request tweets that are voted on and made into t-shirts.

These examples work because they lean on Twitter’s strengths – community and real-time. That said, it’s not all roses – you can be a hero or a victim.

Twitter’s mean streak

Skittles decided to take the obvious route, and just replaced their home page with a live Twitter stream next to Facebook, Flickr and Youtube content. Of course, the internet sensed an opportunity for vandalism, and started tweeting rude stuff so it would appear on the home page. They’ve since scaled back to just use their YouTube homepage, where the vast majority of comments are positive, but there’s also these:

  • How is this useful. I’m not buying skittles because of this. Heck, I wouldn’t have heard of this without ZD NET social media fails
  • wtf is this
  • i love sex !

Using social media marketing means asking your customers to speak for you, and that’s risky. First time around, Skittles gambled and lost.

Here’s another. Consider the example of Motrin, which is a painkiller. They put out this ad:

Some influential folk in the twitter community took pretty serious offence to the ad. The result?

motrin-apology

So – there you have influential people in social media killing off hundreds of thousands of dollars of investment. Gone!

Can’t I just pay to get buzz?

It might be tempting to employ people to try and control that conversation and mitigate the risk, and that’s just what companies like Izea do (although the FTC may have something to say about it). Here’s their side of the story.

In my opinion, one should resist this temptation. An employee at Belkin famously tried this, paying people a small amount to write positive reviews of their products on Amazon.com. That didn’t turn out to be good PR for anyone, and the employee was hung out to dry by Belkin.

Granted, Izea argues that “sponsored conversations” should be marked as such, but it doesn’t sit well with me. People participating in this are advertising to their friends, and one of the reasons why social media and word of mouth advertising is so effective is that people trust their friends to give them an unbiased opinion. Directly influencing the conversation with money or something similar breaks that trust.

So, what the hell do we do?

This is the most interesting part of this whole deal. There is no solution for everyone. The effectiveness of old school media is drying up. It’s problematic to influence the conversation directly. We just have to come up with clever solutions, like others have, and accept that the days of throwing money at a media plan are dying out.

The Smart Rebel

Fact is, a lot of the class of 2009 will be graduating Kellogg without a job. Another fact – there are, for sure, jobs out there. Some might think that this situation is wrong, the students are to blame, the school is to blame, and we should just get a job, whatever it is.

But I’m here to tell you something. We worked hard to get in, worked hard while we were here, and spent a ridiculous amount of money trying to learn something useful. All of us want to find a job that’s exciting and interesting. And if you think we should settle for something less, then stuff you.

Everything is going to be OK

And another thing. If you think we shouldn’t worry because we’re MBAs and we’re owed a free pass to the executive bathroom, then stuff you. Those days are over. For the rest of us – let me lay it out.

Things aren’t bad, things are changing.

Generation Y is growing up – killing off old marketing models on the outside, and restructuring companies for sustainability and social responsibility on the inside. Technology is levelling the playing field in media. The internet is still a source of amazing ideas that can change the world.

But things are changing fast. Companies that are just doing things the way they’ve always been done are missing their earnings calls and rescinding their offers. But the opportunities right now are with companies who ARE doing things in a different way. Big companies with open minds. Small companies trying to upset the order. The rebels.

Sure, all of us are being thrown to the lions. We can’t as easily hop from cushy yuppie pad to cushy yuppie pad. But this is how it was meant to be. This is what we trained for – not creaming fees from departments who want to buy data they’ll never look at or advice they’ll never use, but actually making companies better. Getting stuff done. Pulling out and using our coursepacks. Connecting people. Helping others who need it.

This good news is this – the world will always need smart people. We have an opportunity to do something clever with the tools we’ve been given. We can take that opportunity.

It’s our turn to be the rebels.

How To Be A Successful Blogger

279-days-logo-201x300Some of you may have come across Chris Guillebeau’s 279 day guide to success as a blogger. For those of you who don’t have time to read it, here’s the short short version.

First the obvious parts:

  • Being a successful blogger takes a long time and is a lot of hard work.
  • Even doing that won’t make you boat loads of cash.
  • You need to stay disciplined in your posting.
  • Get other sites interested in you through reviews, guest posts & media connections.
  • Use primary market research.

Now the interesting parts. Chris’s position is that Adsense ads suck, because you’re trusting Google to figure out what’s contextual. If your site links out to stuff, you’re telling your visitors that if they trust you, they should trust this ad, and that link is being driven by an algorithm that could well be wrong.

I would argue that most people understand the weak trust link when they see Adsense embeds, but it follows that a weak trust link means that the advert is going to suck at being effective anyway. I’d not thought about this before, and it’s definitely worth considering.

Chris’s solution for monetisation is the freemium model – a blogger’s product is information, so why now charge for some of it. It’s not going to work for everyone, but Chris has made it work for a non-targeted blog, so that’s encouraging.

In reading it, a few quotations stuck out:

  • “I work harder than most people I know, and the other unconventional success stories mentioned in this report do the same.”
  • “I derive too much emotional validation from the daily state of my network. When lots of people are subscribing, the comments are up, and the links are rolling in, I feel great. When the numbers are down, I feel bad.”

Right there is the real reason Chris’s blog has been so successful – he clearly works his ass off.

The worrying parts

googleadInteresting fact: a lot of the most popular blog content is about how to become a popular blogger. The whole hook of Chris’s report is on how to be just a successful as Chris. I’m not disputing his incentives at all, but when you strip away the excellent graphic design and verbiage, that’s what it boils down to.

Here’s the problem. Folks read his report because they want what he has, but for whatever reason (family, the day job and so on) they can’t invest the time needed to actually DO it. If they did, thousands of super successful blogs would start to spring up. It never happens. Even if it did, since global web attention is a stretchy-but-limited commodity, as supply increases, price goes down and folk spend less time with one individual blog.

I’m not saying it’s a pyramid scheme – Chris isn’t charging, isn’t benefitting, and in fact, licensed this report with CC-BY. But some elements are there – one successful guy at the top and a lot of people who want but can’t attain the same success.

Technology Platforms in a Nutshell

One of tech’s dirty words is platform. The idea is simple – build something that others can build on top of, and suddenly you have control of not just a product, but a little ecosystem.

That’s a really common thing to do, but there are a few choices you have to make. If you make a tool and widget that goes into it, does that widget conform to standards set by agreement, or do you have the power to change standard widget design whenever you want to? Is it free for other people to make widgets? Does any of this matter to the consumers?

I set the rules around here

Let’s say that you create a product + widgets, and you’re the only one that sells both. It’s likely that you’ll sell the product cheap and the widgets are relatively expensive, because that cost is sneakily hidden from the customer. This is the “razor blade model“, which you all know about.

Now let’s say that you create a product + widgets, you make the tool and control the standard widget, but you allow anyone else to make widgets. (This could be the App Store or Minidisc.) Now, you really have two sets of people to worry about – your customers and your widget developers.

  • Your customers would like to see lots of different widgets out there, because that probably makes your platform more appealing.
  • Your widget developers would like to make money. So they want a huge user base, and for you not to screw them by changing the rules – like suddenly integrating features of their widget into the main tool, wiping their business out.

I abide by the standards

One way for you to help your widget developers feel like they’re not going to get screwed is give control of widget standards to a standards body like W3C or ISO. The disadvantage is that you lose control – if the market changes and you want to make a change to the standard widget, there’s a lot of buggering around. Even worse, those standards bodies probably work with your competitors too, so it’s going to be hard to make a change to the standard that will benefit you.

The answer is changing

This sort of stuff is becoming more important in software. That’s because:

  • It’s getting easier to develop software (even the kids are doing it!)
  • Customers are getting used to applications with a shedload of functionality, and one company might not have the resources to do all that, no matter .

My opinion – keeping those widget developers happy is more important than ever. So – if you’re going all platform, remember those two things you need to provide for them – lots of end customers and a degree of stability.

UI Design Principles from Mozilla Labs

labslogoAs part of the Labs concept series, I attended an online talk by Alex Faaborg from Mozilla UX, presenting Jakob Nielsen’s 10 principles for software usability design. They are simple and useful, so here they are.

  • Keep system status visible: Is there a web page loading right now? Am I in private browsing mode? The user should be kept aware of the current status, and feeback on modes should be timely. When a user doesn’t know which mode we’re in, this is called a mode error.
  • Systems should mirror the real world: Engineers want to implement whatever the technology makes easy to implement – but users want to use something that mirrors the world as they see it. Some technology elements are still confusing (e.g. Fx asking if you want to resend POSTDATA) but some are now commonplace (404 errors or the http:// prefix). Real world elements can appear in icons (padlocks, floppy drives, gold stars) or replicating a real life method (e.g. having a desktop).
  • User control & freedom: Don’t prevent users from doing certain things. For example, in Fx3 it’s impossible to bring back the Most Visited folder on the Firefox bookmarks toolbar if you delete it.
  • Consistency & standards: Be consistent internally with the way you’re always represented things inside your application, and be consistent externally with the wider OS or peer applications. These could conflict – Fx changed the bookmarks icon in v3 from a bookmark to a gold (or blue) star to fit with other browsers.
  • Recognition not recall: The command line requires you to remember everything, which is why most users find it too tough to use. Ubiquity suffers from this in a way – although it does a lot to help you, it can’t do anything unless you type something.
  • Flexibility & user efficiency: Toolbars that are malleable are flexible, but it’s tough to create complete flexibility, as very flexible UI systems (like Ubiquity) require some skill to use completely.
  • Minimalist design: Visual clarity is good. Reduce redundant elements (e.g. the address bar URL, the window title and the tab title). Combine elements logically – the iPod wheel combines a set of functions into one element while keeping it easy to use.
  • Error prevention: fix common user errors like commas in URLs.
  • Help users recover from errors: proactively provide contextual help, like the internet connection wizard in Safari.
  • Help and documentation: ensure users know where it is and can access it.

Balancing things out

The keen ones amongst you will have spotted that not all of these things are achievable – balances are needed between these elements, and the correct position depends on the user and the application. Here are the contradictions – and the balances – that I can identify.

  • More user control and freedom can mean less minimalism, less error prevention and less consistency. The user can reconfigure away from standards.
  • More recognition can mean less minimalism. The command line is an awesome interface for the right kinds of people.
  • More system statuses can mean less minimalism. Where do you put the throbber in a chromeless browser?

Creating an awesome design – it seems – is about finding ways of winning on both sides of these balances so that compromise becomes less necessary. At the same time, we must recognise that no system is going to be perfect for everyone – as the market becomes more diverse, the interface must understand and trade off different requirements in that market.