You Can Afford to Design with Affordances

There is a refrigerator at the office that has both a water dispenser and an ice dispenser. The first time that anyone new to the office attempts to dispense a cool, refreshing glass of water ends with that person being splashed with water.

Care to guess why?

The design of the water dispenser is unexpected. In fact, many people first attempt to push their cup against the curved metal plate in the back (which dispenses ice, not water). After realizing that they pushed the wrong plate, many people will push the flat metal plate at the top (which does in fact dispense water). Unfortunately for them, they usually push the water dispensing plate while keeping their cup adjacent to the ice dispensing plate. As you may have noticed from the picture, the water is dispensed from the tiny spout at the top of the dispensing nook.

The end result? Splash.

Why does this happen? Why don't new users immediately grasp how to use this dispenser? Quite frankly, because the designers of this dispenser didn't make proper use of affordances.

Affordances provide users with a hint as to how something is to be used. They take the infinite number of possible actions that might activate a feature and reduce those possibilities down to the proper actions. The critical quality of an affordance is that it must be obvious.

The designers of the water/ice dispenser made a mistake by having the water dispenser's plate be flat in shape. There isn't anything about a flat, vertically-oriented metal plate that says 'push a cup here'. In contrast, the ice dispenser's curved, vertically-oriented plate practically begs you to push a cup against it.

The ice dispenser's curved plate arguably makes things more confusing for the user than having a flat plate would in this instance. The ice dispenser's affordance attracts the user to keep their cup located in the wrong spot in order to successfully dispense water. Ideally both plates would be curved, or neither plate would be curved.

Folks, take care when designing your user interfaces. Make sure that you are creating affordances in the design that make things easier for your users. They will thank you for it.

Bonus Content:

The folks at Extra Credits have a great video on the use of affordances in game design.

My Two Cents on BlackBerry's 'App Neutrality' Nonsense

John Chen, CEO of BlackBerry, discussing his concept of 'Application/Content Neutrality':

Unfortunately, not all content and applications providers have embraced openness and neutrality. Unlike BlackBerry, which allows iPhone users to download and use our BBM service, Apple does not allow BlackBerry or Android users to download Apple’s iMessage messaging service. Netflix, which has forcefully advocated for carrier neutrality, has discriminated against BlackBerry customers by refusing to make its streaming movie service available to them. Many other applications providers similarly offer service only to iPhone and Android users. This dynamic has created a two-tiered wireless broadband ecosystem, in which iPhone and Android users are able to access far more content and applications than customers using devices running other operating systems. These are precisely the sort of discriminatory practices that neutrality advocates have criticized at the carrier level.
Therefore, neutrality must be mandated at the application and content layer if we truly want a free, open and non-discriminatory internet. All wireless broadband customers must have the ability to access any lawful applications and content they choose, and applications/content providers must be prohibited from discriminating based on the customer’s mobile operating system.

Remember when BlackBerry (née Research in Motion) joyfully joined the Apple Developer Program and launched its market-leading BlackBerry Messenger service for iOS as soon as it was possible to do so back in 2008?

Wait, that never happened. Must have been an alternate universe.

Instead, what happened is that BlackBerry refused to open its messaging client to Apple's users. Why did they not do so? Because they were the market leader at that point in time.

What has changed in the intervening years? Quite simply, iOS and Android have given BlackBerry the old heave-ho off the top of the mountain. As it turned out, the BlackBerry Messenger service was not valuable enough to keep customers loyal to the platform. The superior user experiences provided directly by Apple and indirectly by Google won the war. The market spoke, and it spoke clearly--BlackBerry was no longer relevant for today's users.

Chen's statements are ludicrous. He attempts to conflate 'net neutrality' with his bogus concept of 'app and content neutrality'. Despite having similar-sounding names, the two concepts are worlds apart in meaning.

The basic underlying principle of net neutrality is that the so-called 'gatekeepers' of the Internet (e.g. Internet Service Providers) should not be allowed to interfere with the natural open market. Take, for example, the time that Comcast (allegedly) throttled Netflix's video streaming performance in order to get Netflix to 'pay a toll' for good performance. That's a perfect example of a gatekeeper exerting undue influence on determining the winners and losers in the market.

The basic underlying principle of app and content neutrality, as proposed by Chen, appears to be the idea that marketplace participants should be required to make investments that benefit their competitors. On the face of it, this is an absurd requirement. Is there a minimum threshold for a competitor to qualify for this standard? Should Apple and Netflix be required to spend the time and resources supporting Ubuntu's smartphone platform? How about Firefox's smartphone platform? Companies would quickly go out of business if they had spend money to support every conceivable competitor.

On the one hand, you have a concept that is better for the market by preventing gatekeepers from strangling market players. On the other hand, you have a concept that is worse for the market by requiring market players to take actions that are detrimental to their own businesses.

Chen is correct about one thing, though. There is in fact a 'two-tiered' ecosystem--the good choices (i.e. iOS and Android) and the terrible choices (i.e. BlackBerry and Windows Phone). Microsoft learned its lesson by realizing that, in order to stay relevant, it had to make its services available everywhere. BlackBerry should do the same without trying to force others to pay for its own business mistakes.

Folks, don't be fooled by this nonsense.

Fail Faster

The fine folks over at Extra Credits have an excellent video on a topic that is near and dear to my heart: failing faster. The gist of the video is that it is important to learn how to use tools such as low-fidelity prototypes to validate an idea. The key takeaway is that you want to learn from your mistakes as quickly and as cheaply as possible. Waiting until you have the perfect idea all figured out takes too much time (and really, you won't have it all figured out). Likewise, immediately jumping into writing code means that fixing your mistakes is much more expensive to do (and you will be more hesitant to do so).

I have personally been involved in this type of situation many times throughout my career. In one particular instance, I was part of a team working on a new major feature for an app. Unfortunately, the development process devolved into 'prototyping in code' as major changes were made on a daily basis to the visual design, user flow, and business logic of that feature. This was a terribly expensive way of figuring out how things should work. When we tested the feature with a few handpicked users, the flaws in our design were immediately obvious. We thought that the design was generally good and understandable (albeit with a few rough edges), but the participants in the user testing pointed out sizable problems with the design that made it clear that this feature was not ready to ship. It's as if we were blind to our own design.

After this particular experience, I championed the idea of using interactive prototypes for further design iterations. Each design iteration consisted of 'tappable screenshots' that our test users could try out and use to provide us with feedback. Making changes to a particular screen or to the user flow was as simple as dropping in a new image file from Photoshop or designating a new tappable area on an existing screen. The turnaround time for these changes could be measured in minutes or hours instead of days and weeks. In the end, the ability to 'fail faster' with the interactive prototype helped to make the feature better in a shorter period of time than what could be done with code.

Folks, I know it can be tempting to immediately jump into code; that's pretty much what developers are inclined to do. However, understand that it may not always be in your best interests to do that. Find cheaper and faster ways to validate your ideas.


There are many different tools that can be used to help you 'fail faster'. These are the ones that I use on a regular basis:

  • Pen and paper or a whiteboard - you really can't get much faster and cheaper than this.
  • POP (Prototyping on Paper) - this app makes it easy to take a photo of things that I have made in my sketchbook or whiteboard and add tappable hot zones with transitions.
  • InVision - this web app provides a lot more horsepower in terms of the transitions, collaboration, and version control that it supports. I use this with Photoshop mockups to provide a more "real" feel than what POP provides.

The Windows Store is Filled with Scam Apps

Chris Hoffman, writing for How-To Geek about app scams in the Windows Store:


Why doesn’t Microsoft care about the cesspool of garbage they’re hosting and offering to hundreds of thousands of Windows 8.1 users? The only answer we have so far is that Microsoft doesn’t care how good apps are — they’re just approving everything to get as many apps as possible. It’s been nearly two years now, and we haven’t seen any indication Microsoft actually cares about the pile of garbage they’re hosting.

The various app stores have their fair share of problematic apps. Google Play, with its focus on automated store rule enforcement, allowed a scam anti-virus app to become the #1 paid app. Apple's App Store, with its focus on manual store rule enforcement, allowed a bootleg Pokemon game to become the #3 paid app.

However, in both the App Store and Google Play examples, these scams were the exception rather than the rule. The numerous examples illustrated by Hoffman in the linked article are damning for Microsoft. While Hoffman's stated reasons for why Microsoft allows these blatant scams to exist is pure speculation, it is speculation that makes a lot of sense. Microsoft's Windows Store and Windows Phone Store are woefully behind the App Store and Google Play in terms of quality and quantity of apps. There is no subjective way to measure the former, but the latter is easy to measure (and is arguably even easier to inflate). There is a strong incentive to increase the number of apps in the Windows Store.

Folks, we all know what happens to an app store's credibility when it allows such garbage to become commonplace.


Don't Be Too Hasty To Do-It-Yourself or Pick-Something-Off-The-Shelf

A common question I get from folks that want to create an app or website with a backend system is what I would recommend they choose for a toolset. Should they use something baked into the platform like iCloud? Should they use a multi-platform service like Parse or Heroku? Should they write their own backend system from scratch?

The answer? It depends.

Honest. That's the truth. That's not an attempt to evade the question.

Rather than immediately jumping to answer the question, I always ask my own question to gain more context:

What are you trying to accomplish?

There are two different ends of the spectrum for that question. On the one hand, you have the Marco Arment (formerly of Tumblr and Instapaper) camp:


The common wisdom, which Justin suggests, is to go directly to a highly abstracted, proprietary cloud service or a higher-level hosted back-end — the kind that are so high in the clouds that they call themselves “solutions”. But the “BaaS” landscape is still very unstable with frequent acquisitions and shutdowns likely, and hosting on VPS-plus-proprietary-services clouds like Amazon Web Services or higher-level services like Heroku or App Engine can get prohibitively expensive very quickly. Developers who build everything on these services by default would probably be shocked at how cheaply and easily they could run on dedicated servers or unmanaged VPSes.

On the other hand, you have the Brent Simmons (Q Branch / Vesper) camp:


Well, my first thought was I don't want to run an actual server. I don't want to do that. Life's too short; I have to write code.

I often see debates on Twitter, blogs, or podcasts about the merits of both approaches. Depending on the particular biases of the author or host, the result is typically choosing one of the two extremes. Before jumping into one side or the other, however, it's important to understand the fundamental assumptions being made and what each side is attempting to accomplish.

The fundamental assumptions behind the Do-It-Yourself side, as exemplified by Marco, are that you are trying to create something that will need the greatest amount of flexibility and independence. By picking this extreme, you are deciding that the control over your own destiny outweighs the burden of creating and continuing to maintain your own backend solution.

The fundamental assumptions behind the Pick-Something-Off-The-Shelf side, as exemplified by Brent, are that you are trying to create something that will need the least resistance in reaching fruition. By picking this extreme, you are deciding that the effort saved by outsourcing outweighs the risk of not completely owning your backend solution.

Of course, these are two opposite ends of a spectrum. The solution that meets your particular needs will probably fall somewhere in the middle.

By all means, if you are intent on creating The Next Big Thing, then it makes sense to do things yourself and not be at the mercy of platform owners. However, if you are building something as a hobby then it makes sense to offload the things that aren't core to your interests.

It also makes sense to consider whether this is intended to be the start of a business or is intended to be a learning experience. In the former case, you have to weigh the tradeoffs between controlling your livelihood and getting to market quickly. In the latter case, you have to weigh the tradeoffs between focusing on breadth versus depth.

Folks, don't be too hasty to do it yourself or pick something off the shelf. It's not a simple decision.

Announcing The More Than Just Code Podcast

I'm proud to take part in announcing a new podcast that is now available. That podcast is called More Than Just Code.

It's a weekly show that covers topics that impact iOS and Mac developers. As the show's title suggests, we also consider the business perspective on each week's topics (i.e. 'more than just code').

The show is co-hosted by a transcontinental panel of developers: Tim Mitra, Aaron Vegh, Mark Rubin, and yours truly, Jaime Lopez.

Folks, check it out (and subscribe!):

Update Feb 25, 2015: New website URL, folks.

Teach Users How to Use Your App by Having Them Actually Use Your App

It's late at night. The empty cans of Red Bull tower over your desk precariously. You've done it. You've finally created your beautiful, polished, delightful app. The blood, sweat, and tears will all be worth it once you hit that delicious button to submit to the App Store.

You hesitate. You have a sense of worry gnawing at the back of your mind. 

What if users don't immediately comprehend my glorious design?

What shall I do?

I know! A tutorial! That's the ticket!

Netflix app for iOS (image via

Netflix app for iOS (image via

Suddenly, your beautiful app isn't so beautiful anymore. You've decided to smack the user in the face with a brain dump tutorial.


Why is it that so many apps fall for this trap? The most common reasons seem to be that app developers run out of time to properly implement a tutorial system or the developers fail to realize that the onboarding experience is an integral part of the app that requires just as much design effort (perhaps even more effort) as the rest of the app. Yet, it is still common to see apps that don't give much thought to how users will learn to use the app.

Whatever feelings you may have about Facebook's Paper app, they at least took a relatively uncommon approach to the problem of teaching users how to use an app with an uncommon design. While it may be somewhat heavy-handed at times, the tutorial system in Paper clearly took a bit of time to design and implement. In fact, the Facebook Paper team gave a presentation on how they approached the problem with contextually aware tutorials.

Developers can look outside of the traditional app development industry for inspiration as well. The game industry has spent decades working on this very problem. Take, for example, this analysis of the first level of Super Mario Bros. by the folks at Extra Credits:

The game designers at Nintendo carefully crafted the first level experience to teach players the skills that they will need throughout the game. They did so without dumping a bunch of explanatory text right at the start of the game or requiring that a player read the manual.

You might very well ask, 'how can these same design principles be used when creating an app?'

For starters, you should consider what your first-run experience is like for a user. Does your app have a bunch of empty states? Design a way for those empty states to have a call to action or design the app's first-run experience so that the user doesn't have those empty states to begin with (for example, pre-populating an app with content that the user is reasonably expected to enjoy). Does your app involve a complicated ecommerce transactional experience? Design a way for users to get progressive disclosure on where they are in the process.

Folks, Super Mario Bros. doesn't bombard players with every possible bit of information they could ever need at the beginning of the game, and there is little reason why apps should be any different. Teach your users how to use your app by having them actually use your app.


If you enjoyed the design analysis done by Extra Credits, you might also enjoy these videos (warning, they are longer videos and may include profanity so be careful at work).

Amazon is Adding More Cute Robotic Workers

From the Wired Business Conference comes a video showing 'A Day in the Life of a Kiva Robot'.

This isn't the first time that Amazon has shown us a video about the Kiva robots. This video, however, goes more in depth as to how the robots operate in Amazon's warehouses.

Folks, this is the wave of the future.

My Podcast Playlist

I'm often asked about the podcasts that I listen to on a regular basis. The combination of a long commute and self-training to be able to listen to podcasts at 3x speed means that I have quite a lengthy list. Without further ado:

#PaxEx Podcast - An excellent podcast from the Runway Girl Network that covers topics related to the airline passenger experience.

Accidental Tech Podcast - A fun tech podcast starring John Siracusa, Marco Arment, and Casey Liss. I enjoy listening to their wildly different views on the latest topics in tech.

The Adam and Dr. Drew Show - This is a comedy/self-help show starring the folks from Loveline.

All About Android - Even though I'm an iOS developer and not an Android developer, I like to keep in the loop on what is going on in that world. Starring the wonderful Gina Trapani and some other people not named Gina Trapani.

Amplified - One of the funnier podcasts out there related to Apple news. Hosted by Dan Benjamin of 5by5 fame and Jim Dalrymple the Editor in Chief of The Loop. Jim's sometimes a bit rough on certain companies (e.g. Samsung, Google) but his belly laugh makes things memorable. I honestly don't listen to the part of the show related to music topics.

The Broad Experience - A show about women and the workplace. If you liked Sheryl Sandberg's book Lean In, then you will likely appreciate this podcast.

CMD+Space - This interview-based show can be wildly inconsistent, depending on the particular guest that is being interviewed. I generally only listen to the episodes that cover topics I care about or involve people that I find interesting.

CocoaRadio - This show by the current developer of Glassboard, Justin (Not Bieber) Williams, is also interview-based. The consistently excellent selection of guests and Apple-related topics keeps me interested.

Core Intuition - This show is usually about the Apple ecosystem, but often veers into topics of general interest to indie software developers. The friendship between Daniel Jalkut and Manton Reece, coupled with the short episode lengths, keeps this show well-paced.

The Critical Path - If you want to dig deep into business topics or are a budding financial analyst, then this show is for you. Horace Dediu's excellent analysis of the different strategies employed by companies is usually spot-on. This is perfect material to debunk the general crackpottery infesting the tech and financial media.

Debug - Another interview show about tech topics. Can be somewhat inconsistent (though interview-based shows often are at the mercy of the guests).

Developing Perspective - A quick (15-minutes) show hosted by David Smith, an indie iOS and Mac developer. The topics, while based on the perspective of a developer immersed in the Apple ecosystem, are applicable to many situations that a developer may encounter.

DLC - A show about videogames and tabletop games. The call-in segment is interesting. I never listen to the tabletop segment, though.

The Frequency - This podcast is great because of the fun banter between Dan Benjamin and Haddie Cooke as they cover news topics ranging from the technology to oddities.

The Games Cast - A show about videogames from a British perspective. Very British.

How Did This Get Made? - This comedy show starring actors from the sitcom The League is great because it skewers many of the terrible movies that you love and hate.

iDeveloper - Another indie iOS and Mac development podcast. Worth a listen for the critical perspective on the Apple ecosystem.

iMore Show - Apple topics (generally news) covered by Rene Ritchie and Pete Cohen (formerly of the Angry Mac Bastards podcast).

In Beta - I'm of two minds about this one. I loved this show when it was hosted by Gina Trapani and Kevin Purdy and covered tech culture topics. Ever since Gina left the show, I've found the topics to not be to my particular tastes. Still has a gem now and then.

The Incomparable - A loveably geeky show about movies, comic books, television shows, and novels. Usually good for more than a few witty observations about geek topics.

IRL Talk - This podcast hosted by Faith Korpi and Jason Seifer (the former hosts of Geek Friday on 5by5) also covers geek topics. The interplay between Jason and Faith is great, especially when Jason is trolling Faith or when Faith has never heard of a particular geek topic.

Isometric - Brand new at the time of this writing, but I already love this show. Hosted by Brianna Wu (head of development at Giant Spacekat), Steve Lubitz, Maddy Myers, and Georgia Dow. This show provides a refreshing perspective on videogame news, development, and culture. I appreciate the fact that each episode has a sense of focus that is often lacking from videogame podcasts. I also appreciate hearing the feminine perspective on topics generally covered by men.

Iterate - A show about crafting the user experience for apps. As someone who only dabbles in the UX world, this show can be somewhat hit-or-miss for me.

MacBreak Weekly - This show about news in the Apple ecosystem is something that I usually have on in the background while I'm performing some sort of task. Somewhat difficult to recommend to others based on the personalities and viewpoints of the hosts, but I've gotten used to it and sometimes get an interesting perspective on topics.

Ray Wenderlich Podcast - This podcast from the tutorial website,, covers topics related to app and game development. I usually pick up a nifty tip or two per episode.

Release Notes - A show about indie development in the iOS and Mac world. Each episode is relatively short as far as podcasts go, and the pace is brisk.

Super Best Friendcast - I love this podcast from the Best Friends Play zaibatsu. That shouldn't be much of a surprise since I'm a fan of their YouTube channel (Two Best Friends Play, Best Friends Play). Listening to this show reminds me of all the conversations I've had with gamers as a wee lad.

Support Driven - This interview-based show dives into the world of customer support. Usually has some nuggets for how to make customer support a key part of the user experience (and a competitive advantage) rather than just a 'necessary cost'.

The Talk Show - If you're in the Apple world, it's difficult to avoid running into people that listen to this show and follow John Gruber's analysis. Leans in the 'Apple Apologist' direction, but generally has well-thought out topics and discussion. Oh yes, and baseball.

This Week in Google - Another podcast starring Gina Trapani and people not named Gina Trapani. This show is a good way to keep up to date on what is going on in the world of Google and cloud computing.

Unprofessional - This podcast hosted by Dave Wiskus and Jaimee Newberry is one of my favorites because it usually involves some sort of crazy situation. Also, Circus Circus and Taco Bell.

What the Tech - a show covering tech topics hosted by Andrew Zarian and Paul Thurott (the Bizarro World version of Marco Arment) from Super Site for Windows. I find it somewhat difficult to agree with Andrew's take on things, but he's usually kept in check by Paul.

Windows Weekly - This is probably the best show to keep up to date with the latest news in the Microsoft world. Paul Thurott's sometimes curmudgeonly nature is balanced by the fabulous Mary Jo Foley of All About Microsoft. Favorite bits include Mary Jo's codename pick of the week and beer pick of the week.


Folks, podcasts are the tech generation's replacement for radio. If you have any additional shows that you love, drop me a line on Twitter or ADN.