<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cakebaker &#187; usability</title>
	<atom:link href="http://cakebaker.42dh.com/tags/usability/feed/" rel="self" type="application/rss+xml" />
	<link>http://cakebaker.42dh.com</link>
	<description>baking cakes with CakePHP</description>
	<lastBuildDate>Tue, 20 Dec 2011 15:29:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Making it easier for non-geeks to login with an OpenID</title>
		<link>http://cakebaker.42dh.com/2008/04/24/making-it-easier-for-non-geeks-to-login-with-an-openid/</link>
		<comments>http://cakebaker.42dh.com/2008/04/24/making-it-easier-for-non-geeks-to-login-with-an-openid/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 16:53:04 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[openid]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/?p=597</guid>
		<description><![CDATA[For geeks it is no big deal to use an URL when they have to login somewhere. But for non-geeks it is probably a bit strange if they have to identify themselves with an URL. To make it easier for those users to use an OpenID, JanRain &#8212; the company behind the OpenID libraries for [...]]]></description>
			<content:encoded><![CDATA[<p>For geeks it is no big deal to use an URL when they have to login somewhere. But for non-geeks it is probably a bit strange if they have to identify themselves with an URL. </p>
<p>To make it easier for those users to use an <a href="http://openid.net">OpenID</a>, <a href="http://janrain.com">JanRain</a> &#8212; the company behind the <a href="http://openidenabled.com/">OpenID libraries</a> for different platforms &#8212; created a widget called <a href="https://www.idselector.com/">ID Selector</a>, where the users have to choose their OpenID provider and enter the user name part of their OpenID. So they do not have to remember the complete URL. Here a screenshot of how it looks like:</p>
<p><img src="http://cakebaker.42dh.com/wp-content/uploads/2008/04/id_selector.png" /></p>
<p>You can see it in action on <a href="https://www.idselector.com/user/login">https://www.idselector.com/user/login</a>. </p>
<p>The integration of the widget into a login form is easy: insert the provided JavaScript snippet into your code and set the id of the input field for the OpenID to &#8220;openid_identifier&#8221;. That&#8217;s it. </p>
<p>A &#8220;disadvantage&#8221; of ID Selector is that there will be ads (even though I haven&#8217;t seen any while testing), something you may not want&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2008/04/24/making-it-easier-for-non-geeks-to-login-with-an-openid/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>User-friendlier country selection</title>
		<link>http://cakebaker.42dh.com/2007/07/17/user-friendlier-country-selection/</link>
		<comments>http://cakebaker.42dh.com/2007/07/17/user-friendlier-country-selection/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 15:49:38 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/07/17/user-friendlier-country-selection/</guid>
		<description><![CDATA[Selecting the country where you live is a task you have to perform from time to time when registering for web sites. This often sucks, as it is often implemented in a way to make the life of the programmer easier, and not the one of the user. In this article I will discuss the [...]]]></description>
			<content:encoded><![CDATA[<p>Selecting the country where you live is a task you have to perform from time to time when registering for web sites. This often sucks, as it is often implemented in a way to make the life of the programmer easier, and not the one of the user. In this article I will discuss the problems of the usual approach, and two ways to make the country selection user-friendlier. </p>
<p>The usual approach is to have a drop-down box filled with all countries. That&#8217;s easily implemented: get a <a href="http://en.wikipedia.org/wiki/List_of_countries">list of all countries</a> from somewhere and put them into the drop-down box. To select a country with this solution, the user has to select the drop-down box and either scroll to the country or enter the first letters of the country, e.g. for Switzerland you would have to enter &#8220;s&#8221;, &#8220;w&#8221;, and &#8220;i&#8221;. That means it often requires more effort to select a country than entering directly the <a href="http://en.wikipedia.org/wiki/ISO_3166-1">ISO 3166-1</a> country code into a two-character input field&#8230;</p>
<p>The previous solution can be improved without much effort by putting the most used countries at the top of the drop-down box. Which countries that are depends on the focus of your site (and your site statistics). If you have for example a german site, most of your users will be from Germany, Austria, and Switzerland. By putting those countries at the top of the list you will make the country selection easier for the majority of your users. </p>
<p>The best solution would be, of course, a &#8220;convention over configuration&#8221; approach where the site automatically selects the correct country (at least in most cases). The implementation of such a solution requires a bit more effort on the side of the programmer as you have to determine the country somehow (e.g. by using a web service like <a href="http://www.hostip.info">hostip.info</a>), but on the other hand it will make the life of most of your users a little bit easier :)</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/07/17/user-friendlier-country-selection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Usability-driven development</title>
		<link>http://cakebaker.42dh.com/2007/07/07/usability-driven-development/</link>
		<comments>http://cakebaker.42dh.com/2007/07/07/usability-driven-development/#comments</comments>
		<pubDate>Sat, 07 Jul 2007 09:37:20 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/07/07/usability-driven-development/</guid>
		<description><![CDATA[In the article &#8220;What do you do when there is no documentation?&#8221; Chris Hartjes wrote about his attempt to use the Auth component in CakePHP for which almost no documentation exists. As I wouldn&#8217;t call Chris a newbie, it made me think. Is the missing documentation really the problem? Or could it be something else [...]]]></description>
			<content:encoded><![CDATA[<p>In the article <a href="http://www.littlehart.net/atthekeyboard/2007/07/03/what-do-you-do-when-there-is-no-documentation/">&#8220;What do you do when there is no documentation?&#8221;</a> Chris Hartjes wrote about his attempt to use the Auth component in CakePHP for which almost no documentation exists. As I wouldn&#8217;t call Chris a newbie, it made me think. Is the missing documentation really the problem? Or could it be something else that makes it hard to use the component?</p>
<p>That&#8217;s when I realized it could be a usability issue. And that the &#8220;user interface&#8221; of the component is simply not understood by the users&#8230; Anyway, this post is not about possible problems of the Auth component.</p>
<p>What I want to talk about is, as the title says, usability-driven development. If you hear &#8220;usability&#8221;, you probably associate it with user interfaces and how people interact with them. And so usability-driven development will probably deal with making better user interfaces. That&#8217;s correct. But it is not about user interfaces like web pages, it is about &#8220;user interfaces&#8221; of code components.</p>
<p>I know, it sounds a bit strange. But on an abstract level you can look at the public attributes and methods plus the comments as the user interface of a code component. And the programmer, who uses the component, interacts with this user interface. You may imagine a component as a beverage vending machine: methods are buttons, method names are the button labels, and comments are descriptions of the buttons. I know, this thought model is a bit inaccurate, as parameters and attributes are missing. But it shouldn&#8217;t matter.</p>
<p>By doing some thought experiments with our imaginary beverage vending machine we can come up with the following conclusions:</p>
<ul>
<li>too many descriptions suck as nobody likes to read much before he can use something</li>
<li>good button labels help to avoid unnecessary descriptions</li>
<li>too many buttons suck as it makes it harder to find the desired button</li>
<li>the order of buttons matters as it is faster to find the desired button when the buttons are ordered</li>
<li>as it is a beverage vending machine it shouldn&#8217;t provide food</li>
</ul>
<p>These conclusions can be easily translated back to code. By doing this we will see that a lot of code is not optimal from a usability point of view&#8230;</p>
<p>To get more concrete results (e.g. whether two methods without parameters are better than a single method with a parameter) we could introduce some metrics into our thought model, e.g. the time it takes to accomplish something. </p>
<p>Ok, what can you do to improve the usability of your code? </p>
<p>I think the most important point is to get a mindset that your code components are user interfaces for others and that you want to provide a good user experience to them. So you will design your components differently (compare it with the iPod vs. traditional MP3 players). </p>
<p>It is also a good idea to follow good coding practices like testing and refactoring. </p>
<p>And last, but not least, you could do usability tests. Give your component to someone else who never used it and let him accomplish a task while you watch. It may give you some good insights into what sucks with your component ;-)</p>
<p>Ok, I hope it was not too confusing. And maybe you will now look differently at your code ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/07/07/usability-driven-development/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Expandable links</title>
		<link>http://cakebaker.42dh.com/2007/03/10/expandable-links/</link>
		<comments>http://cakebaker.42dh.com/2007/03/10/expandable-links/#comments</comments>
		<pubDate>Sat, 10 Mar 2007 15:30:29 +0000</pubDate>
		<dc:creator>cakebaker</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://cakebaker.42dh.com/2007/03/10/expandable-links/</guid>
		<description><![CDATA[Even though I am not a design/usability specialist I will discuss the design process for a rather minor detail in an application. I have one of those lists you will find in almost every application which lists the items the user entered. Now it should be possible to move these items to two different categories. [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I am not a design/usability specialist I will discuss the design process for a rather minor detail in an application. </p>
<p>I have one of those lists you will find in almost every application which lists the items the user entered. Now it should be possible to move these items to two different categories. How could this be solved?</p>
<p>The easiest solution would be to add two links to the end of each row. But how do you name those links? &#8220;Move to Category A&#8221; and &#8220;Move to Category B&#8221;? Hm, that takes too much space and it looks ugly if you have to repeat it on all rows.</p>
<p>The next idea is to use icons instead of text. But this causes a similar problem as above. How should the icons look so people understand them?</p>
<p>Another idea is to put a checkbox in front of each row and to have a select box with the possible actions at the top and/or the bottom of the list. The problem here is that the user has to click at least three times to move an item. </p>
<p>What about a drag and drop solution? Well, drag and drop is not very intuitive, and it is difficult to visualize that an object is draggable.</p>
<p>Maybe we could add a select box to the end of each row? Well, it is still two clicks for the user. Can we reduce it somehow to a one-click action?</p>
<p>We could add a link to the end of each row and then on a mouse over event we show the possible actions. So with only one click the user can move a list item to the desired category. With that I have found the solution for the problem described at the beginning of this post. Here the visualization of this idea which I called &#8220;expandable link&#8221;:</p>
<p><img src='http://cakebaker.42dh.com/wp-content/uploads/2007/03/move_1.png' alt='Closed link' /><br />
<img src='http://cakebaker.42dh.com/wp-content/uploads/2007/03/move_2.png' alt='Expanded link' /></p>
<p>The first image shows simply a link, and the second shows what happens on a mouse over event on this link. </p>
<p>Up to now I didn&#8217;t test this solution in the wild so I cannot say how it will be accepted by the users, but if they are like me, they will find it cool ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://cakebaker.42dh.com/2007/03/10/expandable-links/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

