<?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>Gregory Koberger :: the blog &#187; Usability</title>
	<atom:link href="http://www.blog.gkoberger.net/category/usability/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.gkoberger.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 30 Jul 2010 00:56:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>PCMP Lesson 1: Easy Isn&#8217;t Easy</title>
		<link>http://www.blog.gkoberger.net/2010/02/22/pcmp-lesson-1-easy-isnt-easy/</link>
		<comments>http://www.blog.gkoberger.net/2010/02/22/pcmp-lesson-1-easy-isnt-easy/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 07:01:39 +0000</pubDate>
		<dc:creator>Gregory</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.blog.gkoberger.net/?p=120</guid>
		<description><![CDATA[Over the weekend, I created a small app called PleaseCallMyPhone.com.  It does just that- it calls your phone.  I made it as a remedy for lost phones, however it is simple enough that you could use it for other things.  It only took me a day to make, however I wanted to share a few [...]]]></description>
			<content:encoded><![CDATA[<p><em>Over the weekend, I created a small app called </em><em><a href="http://pleasecallmyphone.com" target="_blank">PleaseCallMyPhone.com</a>.  It does just that- it calls your phone.  I made it as a remedy for lost phones, however it is simple enough that you could use it for other things.  It only took me a day to make, however I wanted to share a few quick lessons I learned from making it.</em></p>
<p><em><span style="font-style: normal;">A few weeks ago, I was talking to <a href="http://ericwillis.com">Eric Willis</a> and he said something I really liked:</span></em></p>
<blockquote><p><em><span style="font-style: normal;">Everything that&#8217;s easy isn&#8217;t if you do a good job.</span></em></p></blockquote>
<p><em><span style="font-style: normal;">Take a look at Please Call My Phone.  I used <a href="http://twilio.com">Twilio</a> (my super-easy-to-use <a href="http://www.blog.gkoberger.net/2010/01/08/amature-evangelists/">obsession</a>), which did most of the heavy lifting.  In fact, I got a &#8220;prototype&#8221; working in about ten minutes.  So, then, why did it take me a whole day to get the finished product out the door?</span></em></p>
<p><em><span style="font-style: normal;">It&#8217;s the little things that take the time.  The <a href="http://en.wikipedia.org/wiki/Pareto_principle" target="_blank">Pareto principle</a> plays a big part in it- 20% of the work always does seem to take up at least 80% of the time.</span></em></p>
<p><em><span style="font-style: normal;">My original, ten minute version had just a text box that called a phone.  Every little tweak and change took time, though.  Each little addition (scheduling, the design, better error handling, link to my site and Twilio link, JavaScript enhancements, etc) added up quickly.</span></em></p>
<p>There are a lot of hidden time sinks, too.  Take a look at scheduling, for example- little things like handling time zones took a ton of time, and nobody will even notice.</p>
<p>People notice when something is done wrong, not when it is done right.</p>
<p><em><span style="font-style: normal;">So, remember- if what you&#8217;re doing is quick and easy, you&#8217;re probably not doing a good enough job.</span></em></p>
<p><em><a href="http://www.blog.gkoberger.net/2010/02/26/pcmp-lesson-2-you-cant-trust-people/" target="_self">Lesson #2</a></em><em> and Lesson #3 will be posted soon.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.gkoberger.net/2010/02/22/pcmp-lesson-1-easy-isnt-easy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Solution To E-Mail Validation</title>
		<link>http://www.blog.gkoberger.net/2009/07/22/a-solution-to-e-mail-validation/</link>
		<comments>http://www.blog.gkoberger.net/2009/07/22/a-solution-to-e-mail-validation/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 07:00:55 +0000</pubDate>
		<dc:creator>Gregory</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.blog.gkoberger.net/?p=40</guid>
		<description><![CDATA[Whenever it comes time to validate an email address, I always end up going through the same exact process. I start with a simple regular expression- for example, this: (.+)@[\w]+\.[a-zA-Z]+ It works great for a majority of email addresses- however, it&#8217;s not perfect. It lets through a lot of invalid email addresses. For example, &#8220;.name@something.a&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever it comes time to validate an email address, I always end up going through the same exact process.</p>
<p>I start with a simple regular expression- for example, this:</p>
<pre class="brush: php">(.+)@[\w]+\.[a-zA-Z]+</pre>
<p>It works great for a majority of email addresses- however, it&#8217;s not perfect.  It lets through a lot of invalid email addresses. For example, &#8220;.name@something.a&#8221; is considered a valid email address by this regular expression.  So, let&#8217;s take a few steps to correct this:</p>
<pre class="brush: php">([-a-zA-Z0-9])([-.a-zA-Z0-9])*@[\w]+\.[a-zA-Z]{2,5}</pre>
<p>A bit better, right?  But what about valid email addresses, such as <em>john+smith@mail.something.com</em> and <em>$A12345@example.mobile</em>?  Same goes for the seemingly invalid email addresses such as <em>&#8220;Abc\@def&#8221;@example.com</em>.  But, alas, these <a href="http://tools.ietf.org/html/rfc3696#section-3">are all valid</a>.<br />
<span id="more-40"></span><br />
No, I&#8217;m not going to even attempt a regex that accommodates these.  Others <a href="http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx">have tried</a>.  However, it&#8217;s futile; email validation ends up either being too strict with what it rejects, or too liberal with what it lets through.  Or, in many cases- both.</p>
<p>But for the sake of argument, let&#8217;s assume we do create a regex that follows the RFC perfectly.  That still doesn&#8217;t stop people from getting through with something like <em>youre.bad@validation.com</em>.  Sure, we could even go as far as checking to make sure it&#8217;s a <a href="http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/">real, actual email address</a>.  But even then, there is no stopping <em>johnsmith@gmail.com</em>- an email address that surely exists, however probably is not owned by the person filling out the form.</p>
<p>Depressing, huh?</p>
<p>Well, what about this one:</p>
<pre class="brush: php">(.+)@(.+)</pre>
<p>Here&#8217;s the secret.  This is not a programming problem- it&#8217;s a usability issue.  <strong>If the user benefits from giving you their real email address, they will.  If not, you should not be asking for an email address.</strong></p>
<p>It&#8217;s that simple, really.  Just make sure they at least attempted an email address (otherwise, they may mix up the fields), and throw in a good reason to hand it over- and you will never have a problem.</p>
<p><em>Thanks to <a href="http://twitter.com/foofy">Chancey Matthews</a> for reminding me checking for an @ symbol is good enough, and haacked.com for <a href="http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx">reading the RTC</a> so I didn&#8217;t have to.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.gkoberger.net/2009/07/22/a-solution-to-e-mail-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Masking Passwords?</title>
		<link>http://www.blog.gkoberger.net/2009/07/08/6/</link>
		<comments>http://www.blog.gkoberger.net/2009/07/08/6/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 07:00:12 +0000</pubDate>
		<dc:creator>Gregory</dc:creator>
				<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.blog.gkoberger.net/?p=6</guid>
		<description><![CDATA[Recently, usability expert Jakob Nielsen made the case that we need to stop password masking.  After a few days of mulling over the suggestion, here is what I came up with. Who&#8217;s Job Is It? In his post, Nielsen implied that the unmasking of passwords should be put into effect by the web developers.  However, [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, usability expert <a href="http://www.useit.com/" target="_blank">Jakob Nielsen</a> made the case that we need to <a href="http://www.useit.com/alertbox/passwords.html" target="_blank">stop password masking</a>.  After a few days of mulling over the suggestion, here is what I came up with.</p>
<p><strong>Who&#8217;s Job Is It?</strong></p>
<p>In his post, Nielsen implied that the unmasking of passwords should be put into effect by the web developers.  However, his suggestions would work better if implemented at the browser level.  This way, users could easily and globally toggle the feature on and off, and decide for themselves if they want it.  (And, of course, there&#8217;s already a <a href="https://addons.mozilla.org/en-US/firefox/addon/10174" target="_blank">Firefox plugin</a> that makes the whole argument moot- users who prefer this functionality can already choose to use it.)</p>
<p><strong>Usability Concerns</strong></p>
<blockquote><p><em>Consistency is one of the most basic usability principles.  If users know that the same command or the same action will always have the same effect, they will feel more confident in using the system[...]</em></p>
<p><em>-<strong>Usability Engineering </strong>by Jakob Nielsen, p <a href="http://books.google.com/books?id=95As2OF67f0C&amp;lpg=PA147&amp;ots=38CEwkauVv&amp;dq=Nielsen%20usability%20same%20action%20different%20results&amp;pg=PA132" target="_blank">132</a></em></p></blockquote>
<p>Nielsen himself claims that consistency is important- so how can users feel confident, if some password boxes protect their passwords while others do not?  Not only is this an argument for it being a feature in browsers rather than websites, it&#8217;s an argument why it&#8217;s dangerous for web developers to even attempt it.  It would be one thing if all passwords were unmasked- however, Nielsen is calling for it&#8217;s implementation on a site-by-site basis.</p>
<p><strong>Breaks Browers</strong></p>
<p>By removing the <em>type=&#8221;password&#8221;</em> from the <em>input </em>element, we make it so that browsers won&#8217;t be able to tell the submitted field is a password- effectively breaking the &#8220;Save password&#8221; feature that saves us from having to type in passwords constantly.  And, even if this didn&#8217;t break the feature- would you want your saved password popping up in plain text every time you hit a site with a login box?  (Of course, saved passwords could be shown masked- but this is again a browser-level feature, as well as defeating the purpose of plain text passwords.)</p>
<p><strong>Perceived Security</strong></p>
<p>It&#8217;s true that masking makes no no difference in <em>real</em> security, however Nielsen has completely ignored <em>perceived<strong> </strong></em>security.  Users don&#8217;t understand that the only thing masked passwords protect them from are people physically standing behind them- having their password show up in plain text will no doubt result in many users believing anyone anywhere can nab it.</p>
<p><strong>Icon</strong></p>
<p>As made obvious by the press this suggestion has gotten, people listen when Jakob Nielsen talks.  If he was serious about people implementing this, he should have attached some sort of pseudo-standards to his post.  Had he created small masked/unmasked icons, he could have done for this what the little orange icon did for RSS.  People could have seen the icon, and known right away that the password field was unmasked (and known that clicking the icon would turn masking on). Rather, anyone who implements it now has to individually explain to the users what&#8217;s going on, and how to toggle it.</p>
<p><strong>Testing</strong></p>
<p>One thing that always impressed me about UseIt.com was the research that went into every alert.  He always seems to have statistics to back up everything he said.  In this post, there was none.  Had he found 20 people with various degrees of computer know-how, asked them to register for a mock site, and recorded their reactions?  Then we could be confident one way or another.  He&#8217;s forgotten that one of the basic principles of the field of usability is that even the experts can&#8217;t be confident until they observe actual users.</p>
<p><strong>My Conclusion</strong></p>
<p>We have to forgive him a little, though- his perspective is from that of usability only, and nobody can disagree that it is easier to type a password when you can see it.  That being said, I would argue that his view of this was too narrow; if he did indeed look at it from a broader context, he didn&#8217;t let it show in his post.  Even from a usability standpoint, it&#8217;s easy to see how this could be a potential problem.  He answered a very black-and-white question- &#8220;Is it easier to type when you can see what you&#8217;re typing?&#8221;- and the answer is, of course, yes.  While he does spend a paragraph conceding, almost reluctantly, that &#8220;sometimes security should win,&#8221; overall he stays away from exploring the ramifications of removing password masking- writing it off as Geocities-era &#8220;legacy design.&#8221;</p>
<p>He is right about one thing, though- those <em>reset </em>buttons need to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.gkoberger.net/2009/07/08/6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

