Wednesday, November 27, 2013

Poor contrast websites: how to lose your users

The golden rule in designing interfaces is to think of the user. Consider what task they are trying to accomplish, and make that task easy to do. Every bit of good advice derives from that simple rule. This is why we make websites fast, because users want to accomplish their task quickly. This is why we make the most common actions stand out, to ease the user's job. Many books have been written about usable design and how best to serve the user.

Yet, there is a growing trend towards websites that are superficially gorgeous but are difficult to use. The biggest pain point is the lack of contrast. Many common mobile applications and websites are awash in a sea of grey. Readability is sacrificed to make the page look good from a distance.

A quick word about my setup.  I have two monitors: a 22" LCD monitor and a 27" LCD monitor (in portrait mode) at home. I have 20-20 vision. These observations are true when carried out on my work monitor as well. My work monitor is more expensive and newer than my home monitors. Screenshots don't capture the image I see. So I have photographs of the screen with a digital SLR camera with a fast lens.

On to the examples.

This is from Gitorious, a website that holds source code. Reading the source code is the entire reason for that web page. This is the page with the Makefile. Utterly and completely unreadable.


The 27" display is better at displaying the same text. But even here, the text is nearly impossible to read. Also, I noticed a yellow highlight that was invisible on the 22" display. In either case, this website is completely unusable on my displays since I can only read with eye strain.

Github is next. The github page of this project is only marginally better. The text is light blue and light grey against a background of grey. A truly nauseating sight after a few minutes. Again, the entire reason for this page is so the user can read the directory structure and navigate the project.  The main content is pretty bad, but the various widgets on the top: number of commits, number of branches is even harder to read.


Apple used to be a herald of good design. This has changed in favour of catchy and beautiful, at the expense of readability. On my monitor, many pages are completely unreadable. Here is an image of the bottom of the iPad product page. The page shows the same color scheme as github: light blue or light grey text set against a light grey background. In addition, the fonts are too thin to be readable even with good contrast.



Google Plus has the same issues. Here is the best contrast on the site: the side bar which shows the navigation drawer. The chat pane on the right has even worse contrast. Even the navigation drawer is quite difficult to read.

Google Store, the devices section. The contrast on the site is comically bad. Look at the unreadable text in the white boxes. The bottom bar: "Treat yourself to a..." is slightly better because the text size is huge.



To summarize:
  1. Your users have worse monitors than you. High gamut designer displays costing thousands of dollars are a rarity. The screen becomes even harder to view when you add external factors to this: viewing angle, ambient lighting, type of display (CRT vs. LCD), age of display.
  2. Your users have worse eyes than you. These photographs were taken with a reasonable SLR camera and I have perfect vision. Your users are spread across the spectrum of perfect vision and complete blindness.
  3. Your users have lower patience than you. The competitor is just a click away.

Here is one example of a good website. This is Microsoft's product page for the Xbox one. Beautifully readable: good contrast, big legible fonts.


Contrast Rebellion is a website that raises awareness about poor contrast. Here is a website that raises the same issue with more humor.

Sunday, November 24, 2013

Flight Log: 23 November

Somewhere near Germany, June 1942. Two pilots take off from an aircraft carrier in hostile skies. Co-pilot's logs.

10:00am: Seated in our aircraft. Pilot and co-pilot strapped in. Equipment check, surfaces check. Pilot instructs co-pilot to turn on the propeller.

10:02: Pilot confirms that the propeller works. Instructs co-pilot to turn it off. Then instructs the co-pilot to turn it on.

10:04: After two minutes of turning the propeller on and off, the pilot wants to stop flying. Co-pilot convinces pilot to stay and take off.

10:06: Ground control yells at us to: "Stop picking our noses and clear the flight line". Pilot chooses to control throttle. Co-pilot controls direction. Flaps down, thrust to full, chocks off. Flight takes off.

10:10: Pilot instructs co-pilot to turn off the propeller. Co-pilot tells pilot this is a dull move. Pilot not convinced.

10:15: Ground control alerts of threats approaching from the South-West. Co-pilot turns towards the threat.

10:15: Pilot doesn't want to tangle.
Co-pilot asks the pilot if pilot is scared: "No"
Are there threats?: "Yes"
Do you want to tangle?: "No"

10:16: Co-pilot continues towards threat, gaining altitude in preparation.

10:18: Co-pilot convinces pilot that we must face the threat. Pilot discovers the trigger button and carefully shoots a few hundred rounds into empty air.

10:20: Contact: Co-pilot spots four BF-109s flying 2km below at roughly 300kmph. Pilot continues to shoot recklessly, alerting the threat of our presence.

10:20: Co-pilot swings behind #2, shooting it. Pilot wildly moves thrust between idle and full, enjoying the thrust lever. We pass #1, and shoot down left wing. We swing around, shooting #3 bandit's rudder and #4's left wing. All four bandits neutralized. Flight turns towards carrier.

10:30: Flight gracefully approaches the carrier despite the pilot still wildly shifting thrust. Pilot instructed to sit still in preparation of landing. Co-pilot takes control of direction and thrust.

10:31: Flight lands safely. Pilot reminds co-pilot to put chocks on. Pilot jumps off the plane to get a kiss from mama seated nearby and co-pilot papa!

Another successful mission.

Friday, November 08, 2013

Addressing fear in children

I'm a pragmatic father. There are things people should be scared of: chainsaws, power sockets and cars driving past at 60mph while you are walking. And then there are things that are just not scary: strangers, superstitious mumbo-jumbo, and bugs.

So I was a bit surprised when Dev showed signs of a fear of  the dark. He wanted me to read in the kitchen rather than the living room. My wife suspected that the living room had a large window, which was dark. The recent Daylight Savings Time change made early evenings darker than a week ago. Even at 6pm, it was dark outside. Thankfully, my son can identify whether some thing bothers him, and I asked him if the dark was bothering him or if he was scared of it. He said that he was scared of the dark, and said it while staring at the dark window, shrinking back from it. No time like the present: we decided to tackle the issue right then.

First, we had a talk about it. I held him and told him that there was nothing scary about the dark, and that lots of beautiful things are visible at night: the Moon, stars, street-lights. We looked outside and asserted that there really wasn't anything scary there, and that he was safe in my arms. We both looked to see if there was anything particularly strange as we looked out of the window. Neither of us found anything.

Then, I asked him if we should step outside for a peek. He was hesitant, but he agreed. So we put on jackets and shoes and stepped out. Initially, my son clutched my hand tight. He was walking close by, he was subdued and quiet. We listed all the beautiful things about the night as we passed by them. We walked by some shrubs which were beautifully lit by street lighting. We walked by some decorative lighting in people's homes. Then we reached a prominent road. At this point, my son and I continued walking alongside the road, on the pavement. We saw some traffic lights, which were brightly visible from a distance away, we looked at road signs. After two intersections, we walked back.

On the way back, my son asked me to stop holding his hand. He was secure enough and holding my hand is uncomfortable for long walks. Then, he started singing in a  happy and loud voice. He sang all the way back home.  The only reason he wanted to enter the house was to tell mommy about our peek outside.


Parenting is about giving the child the right tools to survive as an adult. Feeding myths and falsehoods about the world are a terrible disservice to a curious child: stories about evil creatures in the night to get the child to stay silent, or stories made to get the child to eat. These stories are far from harmless. Fears grip their mind and children embellish their own fears with stories and falsehoods. Not starting myths and falsehoods is a start, and it is even better to address myths and irrational fears and reveal them as false nonsense.

Children are more capable than we give them credit for.


(Image, courtesy Only HD wallpapers)

Tuesday, November 05, 2013

Welcoming a challenge

Yet another difficult evening.

A few months ago, I would get my son to bed. It was so easy: he expected daddy to tell him a story, and then lie down next to him. And then I stopped doing it for a while and just as easily, his habits changed. Today I had to get him to bed because my wife was busy.

So we start at the appointed hour, and he follows along. He is glad that daddy is with him. We brush his teeth, he hears a story. He is having a great time: smiling and laughing. Things look great.

Then we walk to the bedroom, and all hell breaks loose. He remembers that mommy does this step, and today mommy isn't nearby. It starts: crying, misery, unhappiness, feeling of missing mommy.

I could tell you how I fixed it, but that is not the important part. The important part is that we stuck it together. We trusted each other, and neither forced the other. In the end, he asked me to get him to sleep. He went to sleep happy. And we cemented our bond as father and son.


A few days ago, I wrote about parenting being difficult. Sometimes parenting requires a mental shift. The shift is to realize that difficult times are opportunities. And perhaps tantrums are parents' fault as much as the child's. And that misery and unhappiness have a root cause, which should be addressed with love and affection.

Children don't lack discipline: they act according to the rules that they perceive. Saying that "a child is misbehaving" misses the real story. The child is behaving in conformance to previous rules. Either the previous rules are wrong, or you haven't told the child that their behavior was incorrect. A difficult time is an ideal situation to identify and resolve such issues.

A healthy attitude is to expect the worst, with open arms. How bad can things get? At the least, you will learn about your child and gain some experience.

(Image, courtesy Dad Centric)

Monday, November 04, 2013

Games with in-app purchases are not fun

I dislike computer games that allow you to purchase additional content inside the game. Read on if you'd like to find why.

Many years ago, computer games started out in arcade machines: their purpose was to keep you feeding all your coins to them. Some of the games were devilishly hard. You couldn't save your progress, and perfection required a lot of money. Many children got good at them after hours of practice and having squandered a great deal of cash. I never got to play many coin-operated games: the games were frustrating, my patience and skill never improved, and my parents saw that it was a waste of cash.

Then, computers and game consoles became cheap enough for families to own. Games that exclusively ran on computers or game consoles didn't need to prod you to put more cash in the machine. You bought the game in a store for a reasonable sum of money. You could play it as frequently as you wanted. You could save your game and resume from a level. If you took good care of the game media, it lasted you many years. So a single floppy, CD, or cartridge could be used for many hours of gaming. Sometimes you loved the game, played it till your fingers were sore, and got really good at the game. Then you told all your friends about it. Or you got bored, got frustrated, tossed the game in the closet and forgot all about it.  Companies that made boring games couldn't sell their second game. In this model, the interests of the consumer were aligned with that of the game developers: fun games produced more enjoyment for users and that rewarded the game developers.

The best games from this generation were fun to play. Adventure games like Monkey Island were funny, and you identified with the quirky personalities of the characters.  Car racing games like Need for Speed were challenging, you believed that you were driving a Lamborghini. You could drive a police car and chase down speeding racers. I was blown away when I saw Indycar Racing on a friend's computer. I didn't expect games to be this good: you could record the race, and view it from different angles. Game developers had fresh ideas, and they focused on improving the game experience. People remembered which companies made fun games: ID software, Broderbund, Lucas Arts, ... Just the Broderbund logo on the screen would make me smile: they knew how to make fun games! Just seeing that logo for a new game was a promising start: it was probably going to be fun.

The latest trend is mobile gaming. Games are very cheap: sometimes even free. You can download the game and play the first level or the first few levels. It all sounds great! So you download a new car racing game for the low price of $3. The first level is gorgeous: it has stunning graphics, and you are given a slow car. But hey, who cares, right? This game is cheap! You play the tutorial race, and it is so much fun! You come in dead last. No problem, you just got this game. So you play a bit more, and you keep doing a little better.  You might even win a race or two. Then, you hit a wall. No matter how hard you try, you can't unlock good cars anymore. You cannot get additional levels unlocked unless you put in hours of repetitive grind playing the old levels. Why can't you just drive the Lamborghini that is shown on the screenshot? Because it requires 65,000 credits, and wining races only gets you 300 credits. You need to win hundreds of races to get a half-decent car. Or you could play the same five levels again and again. Suddenly, it isn't fun anymore.

The fundamental problem with in-app purchases is that fun takes a back seat to selling content. The game isn't about fun: it is about providing just enough enjoyment to keep you paying more. The game is all about giving you incentives to buy extra credits: just for this car, for that track, for an upgrade on your current car, ... You aren't enjoying yourself anymore: you are constantly chasing the next target. Games are always designed to be profitable. But now, the incentives for the user aren't aligned with the game developer anymore. In order to have fun, the user must pay large sums of money to the game developer. In a popular car racing game, there is an option to purchase all the cars in the game for $99. That is ninety-nine real American dollars. By comparison, my copy of Need for Speed 3 was purchased for $15, and it included all the cars and all the race tracks. Sure, it only had five cars, but I bought it to drive a Lamborghini, not a Ford Focus. On many new racing games, I start off with a car worse than the old family car in my garage! How is that any fun? Much like coin-operated games of my childhood, these games are designed to eat cash at the expense of player frustration.

In theory, you can get all the content if you play the game enough. But the amount of time required to unlock the content is immense: many hundreds of hours at the least. These mobile games are misleading customers in their advertising. Most users get to choose from a small set of slow cars, and three or four race tracks. The fancy cars and fancy racetracks in the screenshots are a mirage.

Now I follow a simple rule: I don't buy games with in-app purchases.

(Image, courtesy Wikipedia)