Patents

Apple’s lawsuit against HTC is not the first example of patents having a huge influence on how we are allowed to design user interfaces. If you’ve ever played a videogame and wondered why the game didn’t give you anything to do while a new level was loading, Namco’s patent is the answer. If you’ve ever bought something from an online store and wondered why you couldn’t just click on «Buy» and receive the item a few days later, Amazon’s patent is the answer (and yes, Apple has licensed that patent for the iTunes store). There are more examples on Wikipedia.

Marco Arment has an insightful take on the situation, and John Gruber has a pretty good lineup of the current patent situation, but I wanted to add two points that I think deserve more attention.

Small Companies

Gruber mentions large corporations and patent trolls in his essay. But small firms (with one to nineteen employees) make up the majority of all corporations.

While large corporations can afford to get defensive patent portfolios1, small corporations often can’t. It’s not that they couldn’t come up with ideas to patent. Most small companies could easily come up with dozens or hundreds of patentable ideas within days. But actually getting patents is expensive. Not just in terms of money (including paying lawyers), but also in terms of time. If employees are writing patents, they’re not improving the company’s products.

So most small to medium companies can’t afford to build up defensive patent portfolios. That means they can’t enter into cross-licensing agreements with larger companies. And since it is virtually impossible to not violate any of the patents held by large companies like IBM, Apple, or Microsoft, this makes small companies - and open source projects - vulnerable to patent litigation. As Marco Arment writes:

As a working software developer, the thought of accidentally and unknowingly stumbling into someone’s patent is terrifying.

And yet it is impossible to avoid doing exactly this.

Instead of protecting small companies and projects, the patent system is giving large companies a tool they can use to go after them. This is the reality of running a small software company: There is nothing you can do to defend yourself.

Patents Are Supposed to Be a Trade-Off

An inventor comes up with a new invention. The state then offers to protect this invention for a limited period of time. However, in exchange for this protection, the inventor writes up a detailed description explaining how the invention works, and agrees to publish this explanation. The goal is to get new inventions published, instead of kept secret.

In other words, the inventor «pays» for the protection by giving society (and his competition) access to the invention.

This trade-off does not apply to many software patents. I only need to spend five minutes on Amazon’s site to figure out how one-click shopping works. There is nothing useful I can learn from reading the patent. Likewise, I only need to turn on an iPhone once to figure out how to unlock it. This means that Amazon or Apple don’t give up anything when they patent these ideas. There is no trade-off involved; the state grants these patents «for free», because nobody gains anything from the publication of these ideas. They are already public.

Hence, most software patents are a rather one-sided affair. The companies get protection for their ideas, but they don’t have to give up anything in return.


  1. Although if the number of patent lawsuits in the mobile phone industry is any indication, that whole «defensive patent portfolio» idea doesn’t seem to be working particularly well anymore, either

If you require a short url to link to this article, please use http://ignco.de/253

Jon Bell on Scrolling

Jon Bell has a good article on scrolling vs. «page flips». I have seen far too many «we don’t need pages anymore, since screens are windows to an infinite two-dimensional space» essays recently. Jon quotes Kottke:

The page flipping animation in the iBooks app though? Super cheesy. It’s like in the early days of cars where they built them to look like horse-drawn carriages. Can’t we just scroll?

I may be missing something, but I honestly don’t understand this. How is scrolling desirable to the person who is trying to read a book? If I’m reading a book, I want to fill the screen with text. Then, I want to read that text. Then, I want to fill the whole screen with new text, and read that.

What I don’t want do to is read text, then spend a second manually scrolling until new text fills the screen, while keeping track of where exactly I have to continue reading.

What does scrolling gain me, except more work?

Further Reading

Chris Clark:

Dragging through thousands of words of prose isn’t skimming, isn’t navigation… it’s laborious. You’re paginating by hand.

Joel Fagin:

When I’m reading a book, I like to be absorbed into it. Any distraction which takes me away from the book, no matter how small, is unwelcome. Scrolling down the page with a flick of the finger is, frankly, too much effort.

If you require a short url to link to this article, please use http://ignco.de/254

Skinput

Technology allows devices to become smaller and smaller. Humans, on the other hand, remain roughly the same size, which can make interacting with such small devices cumbersome. Skinput uses the human body as an input surface for small electronic devices.

Via Warren Ellis.

If you require a short url to link to this article, please use http://ignco.de/251

Weekend Links

Boredom in Design

Jon Bell has an interesting article about designers who design for themselves instead of their users. It’s tempting to think of ourselves as artists. But that’s just not good enough. Wikipedia says:

Art is the process or product of deliberately arranging elements in a way that appeals to the senses or emotions.

People don’t just want to be have their senses and emotions appealed to by the things we design. They also (and perhaps mainly) want to get stuff done. It’s all to easy to let our own exuberance about our products get in the way of thinking about how people will actually use them.

Being boring is often the right thing to do.

Dashboards

Max Steenbergen has two neat articles about dashboard user interfaces: Dashboard UI’s: an introduction and Navigating around a dashboard UI.

Instapaper

The most recent version of Instapaper Pro supports reading using pagination. Marco Arment explains how he chose the «page change tap zones».

The ReadWriteWeb Facebook Login Incident

A lot of good articles have been written about this. Neven Mrgan has an explanation of what actually happened. He also has two follow-ups, Things people try to log into and I liked the old Facebook login better.

Dmitry Fadeyev tells us to focus on goals, not actions.

Jono DiCarlo writes that people don’t know how to read URLs. Keith Lang has some more about this. It’s not particularly surprising, really. Even explaining to people how to figure out what site they’re currently on is surprisingly difficult.

URLs are confusing

The takeaway here is that people don’t care about all of this technical stuff. Implementation details are meaningless. People just want to get things done. It’s our job to make sure that they actually can. If we can’t, we’re the stupid ones.

iPad

I’m not going to write much about the iPad until I have actually used one. In the meantime, here are some good articles about it:

Related to this, Macworld has an article on Apple’s shareholder meeting. Macworld reports that a shareholder asked Apple about «a simple programming language on the iPad». Strangely, Steve Jobs is quoted as saying «Something like HyperCard on the iPad? Yes, but someone would have to create it». I’m not sure where the misunderstanding is, but clearly, if somebody built something like HyperCard for the iPad, Apple would not approve it. Apple’s App Store rules do not allow apps which interpret code. One example for such a rejection is BasicMatrix, a BASIC interpreter for the iPhone1.

In my opinion, this restriction makes the iPad problematic for usage in schools. Basic programming courses are an important part of a proper education. Programming helps kids understand how computers work, it helps them to understand logic, and it’s also incredibly empowering. What’s more, being able to write Excel macros or simple AppleScripts is a useful skill2, regardless of what these kids eventually end up doing with their lives. Schools won’t be able to use iPads for such a course unless Apple changes this rule.

Finally, Apple’s rule also means that apps like Mathematica would probably not be allowed on the iPad.

How Gaming is Invading Reality

Interesting presentation by Jesse Schell, Carnegie Mellon assistant professor of entertainment and technology.

Swiss German

There’s a great article about Swiss German over at Thinking coral. Just in case you’re interested in that kind of thing.

And Finally

For some unfathomable reason, I have been interviewed by How To Get Focused, a productivity site. I want to make it clear that I did not write the byline above the interview. Which doesn’t mean that I don’t find it both flattering and hilarious.


  1. Although there are exceptions. A reader points out that SpaceTime allows users to write applications. There’s also Frotz, a Z-Machine interpreter. So Apple will allow some applications which execute code into the app store, and disallow others. Without knowing whether an app will be allowed, however, it will make little sense to actually create it for most developers. 

  2. Note that I’m not saying that schools should teach the Excel macro language or AppleScript, but that learning basic programming will help kids learn other languages like the Excel macro language or AppleScript on their own. 

If you require a short url to link to this article, please use http://ignco.de/248

Jamy Ian Swiss Talks About Empathy

Great presentation by magician Jamy Ian Swiss, who explains concepts like mental models and storytelling by equating software to magic.

Jamy Ian Swiss at Gel 2009 from Gel Conference on Vimeo.

Jamy Ian Swiss calls himself an «honest liar», because as a magician, he promises to deceive his audience, and then promptly does. User interface designers are somewhat similar, though probably a bit less honest. We constantly lie to our users about what they actually see. A button on a screen isn’t really a button, it’s a bunch of colored dots. The better we lie to users, to more easily we can convince them that it actually is a button.

So while we may not be as honest as magicians, our lies nevertheless are in the user’s best interest.

If you require a short url to link to this article, please use http://ignco.de/247

Windows Phone 7 Series

It’s hard to judge a user interface based on movies and pictures alone, but I think it’s pretty safe to say that Windows Phone 7 Series is a huge improvement upon earlier versions of Windows Mobile. If Microsoft won’t quite catch up to Apple and Palm, the release of Windows Phone 7 Series should put them at least a whole lot closer.

Microsoft’s official site shows off some of the new user interface, which is very reminiscent of the Zune HD. Engadget and Gizmodo have movies. Ars Technica has a nice overview of the new system.

If you require a short url to link to this article, please use http://ignco.de/246

Locus OS

Locus OS is a user interface concept for portable devices. It changes aspects of its UI based on the user’s location.

The idea of organizing files into projects seems interesting. The movie doesn’t show much of how this works - it seems users can either interact with their files in a spatial way, or using a timeline, but the timeline is never shown. Files do not seem to be associated with specific applications.

The system seems a bit disjointed, switching from a rich graphical user interface to a kind of text-based menu structure at one point. But it certainly contains some neat ideas.

Note that this is not actually a Microsoft project, despite of the logo in the movie.

Found via Sean Ren.

If you require a short url to link to this article, please use http://ignco.de/245

Removing Features

Applications have a natural tendency to grow. If you don’t pay attention, what started out as an elegant, simple application that perfectly solves a single problem, can quickly turn into a huge behemoth of an application that solves a ton of problems, but solves all of them poorly. Features are always more complex than you think, and many small features quickly add up to one large mess.

This is the kind of application you want:

Swiss Army Knife

If you are not careful, this1 is the kind of application you will end up with:

Novelty Knife

Constant vigilance is the price you pay for an elegant application.

This means you have to learn to say «no». Your current customers will ask you for a feature they want. Potential customers will tell you that if you add just one specific feature, they’ll buy the app. You can’t be everything for everyone. You have to let some people be customers of your competitors.

Kathy Sierra puts it like this:

Each of our books, for example, covers fewer topics than its closest competitors. Yet we outsell all of them, and part of that is precisely because we cover less. Our readers learn fewer topics, but nail the important ones, and it turned out that for most people, nailing it was more important than reading it. Our readers put their trust in us to work hard at finding and focusing on what really matters, and brutally cutting the cognitive overload that comes with the rest, and we try not to let them down.

Be brave. And besides, continuing to pile on new features eventually leads to an endless downhill slide toward poor usability and maintenance. A negative spiral of incremental improvements. Fighting and clawing for market share by competing solely on features is an unhealthy, unsustainable, and unfun way to live.

Steven Frank points out:

Since the days of the Apple ][, C64, and Atari 400, all we’ve done is add, add, add. Add more features to sell more computers. We’ve never stopped to take anything away.

You may be thinking that you’re creating a product for power users, so it’s okay to just keep adding features, because people will figure it out. But it’s not okay. Brent Simmons writes:

Here’s the thing about the power users and developers I know: they use a lot of apps. They manage a lot of complexity already. They often have a few powerful apps (Xcode, Photoshop, Final Cut, Excel, whatever) that they use to get their work done.

They’re not sitting around wishing for more complexity. Quite the opposite! But they do wish that some apps fit them better. And in many cases they wish for less complexity.

Of course, if you do ask power users what they want, and then implement every feature they can come up with, you’ll end up with this:

The Open Office Mouse

So saying no is good for you, and good for your customers.

But what if you’ve already said yes?

Eventually, you will find yourself in a position where your application contains features it should not. Even if you’ve been vigilant, this will happen. There are various reasons.

Technology Becomes Outdated

When you wrote your application, it made perfect sense to add support for FTP syncing, add a Java bridge or refactor your application to be an OpenDoc container. But the world changes, and a year or two later, what looked like a good idea at the time has now become useless, has turned out to cause huge support problems, or has turned out to be unreliable. Or perhaps most people simply didn’t care, and the feature has made the application more complex without helping anyone.

It Was Free

If your backend supports a feature, it’s often tempting to implement it, because to you, it’s essentially free. Months later, you will find out that while it didn’t cost you anything, it wasn’t free to your users. They now have to deal with a feature they may not care about, and all it does is get in their way. Jason Alderman provides an example:

Our devs whipped up a framework early on that supports categories, subcategories, AND tagging. (…) Tags just adds a layer of complexity to so many screens of the UI, that it’s hard to design a good, consistent user experience.

If the work already went into implementing a feature, it’s hard to argue that it should not be exposed to users. Even if you’re the only one working on the project, the sunk cost fallacy may have tempted you to expose a useless or potentially harmful feature in your user interface.

Mistakes Were Made

It happens. Perhaps it’s a feature the CEO wanted, and there was no way to say «no». Perhaps the people responsible just didn’t think it through.

You’re Creating a Simpler Version

It’s also possible that your application is great as it is, but that there is demand for a simpler version. Maybe you’re creating an iPad version of your desktop app and need to decide which features are not going to make it, or you’re trying to create a new consumer application out of your existing pro application.

What Now?

Regardless of how you got there, eventually you’ll be in a position where you have features in your application that don’t really (or really don’t) belong there. The most obvious solution is to simply keep them. Sometimes, this is a valid solution. Perhaps the features work, they are easy to support, and they don’t bother the people who don’t need them. In that case, it may be okay to just leave them in.

But a more likely scenario is that it’s not okay. Outdated features that most of your users don’t care about are broken windows of user experience design. John Gruber explains the «broken windows» theory:

It’s similar to the «broken windows» theory of urban decay, which holds that if a single window is left unrepaired in a building, in fairly short order, the remaining windows in the building will be broken. Fixing windows as soon as they are broken sends a message: that vandalism will not be tolerated. But not fixing windows also sends a message: that vandalism is acceptable. Worse, once a problem such as vandalism starts, if left unchecked, it flourishes.

If you leave features in your application just because half a dozen people actually use them, you’ll end up with Microsoft Word. Most people only use a small percentage of all features in Word. Unfortunately, most people use a different small percentage of all features in Word. Even the most unpopular, most broken feature is used by somebody. Nadyne Richmond, a user experience researcher in the Macintosh Business Unit at Microsoft, explains it like this:

There are people who insist that Word 5.1 was the pinnacle of word processors, and everything that has been done since then has been nothing more than bloat. They tell us that we should update it to run under OS X (and now they want it as a Universal Binary). Oh, but while we’re in there updating the code, could we please add their ten favourite features? As the ever-insightful Rick [Schaut] points out, ‘by the time you add up all the «Plus’s» you come to something that’s not all that far away from Word 2004, which is how we got here in the first place’.

Presumably, somebody needed Word 5.1 «Plus Web Search», so Microsoft went ahead and added the feature:

Web Search in Office

To me, this is a cautionary tale. Perhaps Microsoft is in a position where they absolutely have to «add up all the Plus’s»2. But you’re not. You don’t have to try to please everybody and eventually create an application that is liked by nobody. In fact, since your users are in all likelihood in a situation where they can switch applications easily, and since they probably are not locked in by the need to open a specific file format in its native application, it might be a really bad idea for you to go down the «simply add up all the requested features» route of application design.

So eventually, the best course of action is to get rid of some features that just don’t work out anymore.

So how do you go about it without causing a revolt amongst your users? Here are some ideas.

Get Usage Data.

Let your users opt in to sending you usage data.

Usage Statistics

This is probably the best solution, since it removes the «human factor». People often don’t consciously know how exactly they use an application. Getting objective usage data helps you figure out which features to cut.

If you can’t get objective data, the second-best solution is to ask. Manton Reece has an interesting blog post explaining how he asked his users for this type of feedback. In a follow-up, he writes about his eventual decision:

I eventually did remove a feature, and the survey to customers served as a nice sanity check that the feature wasn’t heavily used. The interesting part, to me, is that the feature I removed was the entire 1.0 product for Wii Transfer. Literally everything that 1.0 did is now gone.

It’s been two weeks so far without any complaints. I like to think that it removes a distraction from the app — one less place in the app that could lead the customer down the wrong path

Inform Your Users About Your Plans. Be Transparent.

Before removing features, tell your users that you plan to do so, and why you’ve decided to remove features. Brent Simmons shows how this is done. He writes:

So one thing I like doing is getting as much feedback on the possibly-to-delete list as I can. I don’t put things up to a vote, because a vote doesn’t tell me the why of anything, and that matters more than just numbers.

I’ve learned a few specific things in the past few hours that I didn’t know: for instance, that people actually do use the HTML Archive feature. That people don’t use the automatic enclosure downloading feature very much, but they do like the possibility of manual downloading. (I didn’t, and don’t, intend to remove manual downloading of enclosures.)

There’s also a great blog post by Adobe’s John Nack, where he explains why removing features is a good idea, and lists a number of features Adobe was going to remove from Photoshop.

Provide Alternative Solutions.

When the people at Bohemian Coding removed the bitmap features from their application DrawIt, they contacted Flying Meat’s Gus Mueller. They were able to work out a deal, and every DrawIt customer got a free copy of Flying Meat’s image editor Acorn.

Keep the Old Version Available (For a Time).

When Apple rewrote iMovie, they kept the older, more feature-complete version of the application online until they felt that the new version was mature enough, thus giving people who were not satisfied with the update a way to keep using the old version, at least for a time. This allowed Apple to add features users needed, and it allowed users to take their time getting comfortable with the update.

Do What You Have to Do. Suck It Up.

Despite of the generous offer of giving Acorn to each owner of DrawIt, Bohemian Coding’s Pieter Omvlee writes that reaction was not entirely positive:

The feedback I got was mixed. Some people were happy with the improvements I made to the vector part in the same update and said they never used the bitmap part anyway. Some complained because they only used the bitmap part, but I could point them to Acorn. Lastly, I received some complaints from people who really liked the combination of both vector and bitmap in one app. Fortunately, only very few people felt that way. In general, it all went well, and I think that’s for a big part thanks to Gus Mueller’s generous offer.

You can’t please all of the people all of the time. Sometimes, you have to make a few people really unhappy in order to make everyone else a little bit happier. Don’t let angry customers dictate your application design - the application isn’t as important to them as it is to you. Keeping your application healthy is your responsibility.

Your customers can switch to a different application if they don’t like yours anymore. You can’t. Your customers don’t know how hard it is to support a feature. You do. Your customers don’t know how popular a feature really is. You probably have a pretty good idea. Your customers likely don’t even really know what features they want, even if they tell you that they do. It’s your job to figure out how to grow - or shrink - your application properly and responsibly. It’s your job to make the hard decisions and cut the features that did not work out.

Conclusion

As a programmer or designer, it’s easy to become a bit too invested in your application’s feature set; accepting that something you’ve put a lot of work in needs to be changed or removed can be hard. But sometimes, it has to be done, and if done carefully, most of your users will appreciate your decision.

Update

Nadyne Richmond has written an answer to this post. She writes:

Using usage data to decide which features to cut is fundamentally flawed. Usage data doesn’t tell you why a feature isn’t used. (…) There are plenty of reasons that a feature might not get used, and removing the feature is not the only solution to the low-usage problem.

(…)

Usage data is directional. It doesn’t tell you what action to take, it tells you that there might be an action to take.

This is absolutely true, of course. The fact that few people use a feature does not necessarily mean that the feature is useless. I’m not advocating mindlessly removing all features that get little use. However, I do think that low usage is a very strong indicator of an unnecessary feature. After all, if the feature were truly useful, a sizable number of your users would likely figure out how to use it even if it was implemented poorly.

Further Reading

I want to thank everyone who helped write this article. Pieter Omvlee from Bohemian Coding, Max Steenbergen who provided awesome feedback on an earlier draft, Jason Alderman, Fabien Marry, Thibaut Sailly, Henning Hoefer, and Andreas Hartl.


  1. If you really want one of these, you can buy one here. Wenger also sells the knife in the first picture, which is the specific model currently used by the Swiss Army. Turns out this is no longer true. Kenneth Ballenegger informs me that the army has switched to a different model in 2009, long after I finished my own military service. 

  2. And maybe Photoshop users are truly craving for wet paints, but it’s also possible that Adobe would be better off investing that time into making Photoshop less of a UI mess

If you require a short url to link to this article, please use http://ignco.de/38

Realism in UI Design

The history of the visual design of user interfaces can be described as a gradual change towards more realism. As computers have become faster, designers have added increasingly realistic details such as color, 3D effects, shadows, translucency, and even simple physics. Some of these changes have helped usability. Shadows behind windows help us see which window is active. The physicality of the iPhone’s user interface makes the device more natural to use.

In other areas, the improvements are questionable at best. Graphical user interfaces are typically full of symbols. Most graphical elements you see on your screen are meant to stand for ideas or concepts. The little house on your desktop isn’t a little house, it’s «home». The eye isn’t an actual eye, it means «look at the selected element». The cog isn’t a cog, it means «click me to see available commands». You are typically not trying to replicate physical objects, you are trying to communicate concepts.

Details and realism can distract from these concepts. To explain this, I’ll take a page from Scott McCloud’s «Understanding Comics», a book which should be required reading for all designers.

Understanding Comics

The image on the left is a face of a specific person. The image on the right is the concept «face»; it could be any person. When designing user interfaces, we rarely ever want to show a specific entity; typically, we want to convey an idea or a concept. Details can easily distract from that idea or concept.

Symbol vs. Photo

At the same time, it’s obvious that some details are required. Too few details, and the user won’t recognize the idea at all.

What's in a face?

The circle on the left clearly shows a face. The circle on the right isn’t recognizable as a face anymore.

Let’s look at a symbol we actually see in user interfaces, the home button. Typically, this button uses a little house as its symbol.

Home Buttons

The thing on the left is a house. The thing on the right means «home». Somewhere between the two, the meaning switches from «a specific house» to «home as a concept». The more realistic something is, the harder it is to figure out the meaning. Again, if the image is simplified too much, it’s not clearly and immediately recognizable anymore.

Home Buttons losing details

The thing on the left is a home button. The thing on the right might as well be an arrow pointing up; or perhaps it’s the ⇧ key.

Let me explain this concept using an entirely unscientific graph:

Cognition

People are confused by symbols if they have too many or too few details. They will recognize UI elements which are somewhere in the middle.

The trick is to figure out which details help users identify the UI element, and which details distract from its intended meaning. Some details help users figure out what they’re looking at and how they can interact with it; other details distract from the idea you’re trying to convey. They turn your interface element from a concept into a specific thing. Thus, if an interface element is too distinct from its real-life counterpart, it becomes too hard to recognize. On the other hand, if it is too realistic, people are unable to figure out that you’re trying to communicate an idea, and what idea that might be.

Buttons

The button on the left is too realistic. The button on the right does not have enough details to be immediately recognizable as a button.

Toggles

The same applies to these toggles. Shadows and gradients help the user figure out what he’s looking at and how to interact with it. Adding too many details, however, ends up being confusing. The toggle switch is no longer just a toggle switch that is part of a user interface, it is clearly recognizable as a photograph of a specific toggle switch; it loses its meaning. It’s no longer a symbol, it has become a specific thing.

Home Button

An Exception

There is at least one specific area where more details are good: Application icons. You want your icon to depict one specific idea: Your application.

Application Icons

Coda’s leaf isn’t a representation of the idea of a leaf; it’s a very specific leaf, the Coda leaf. Acorn’s acorn isn’t just any acorn, it’s the Acorn. Adding details moves these images from a generic concept towards a specific entity, and in the case of an application icon, this is exactly what you want.

Conclusion

Graphical user interfaces are full of symbols. Symbols need to be reduced to their essence. This helps avoid cluttering the user interface with meaningless distractions, and makes it easier for people to «read» the symbol and figure out the meaning of an interface element. Realistic details can get in the way of what you’re trying to communicate to your users.

Unless you are creating a virtual version of an actual physical object, the goal is not to make your user interface as realistic as possible. The goal is to add those details which help users identify what an element is, and how to interact with it, and to add no more than those details. UI elements are abstractions which convey concepts and ideas; they should retain only those details that are relevant to their purpose. UI elements are almost never representations of real things. Adding too much realism can cause confusion.

Thanks to Max Steenbergen and Cameron Kenley Hunt for helping me form a coherent opinion on this topic.
The second house icon is from Dellustrations’s icon set «Dellipack».

If you require a short url to link to this article, please use http://ignco.de/240

BumpTop for Mac

There’s finally a Mac version of the funky 3D desktop.

If you require a short url to link to this article, please use http://ignco.de/241