<?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>Ajaxian &#187; Usability</title>
	<atom:link href="http://ajaxian.com/by/topic/usability/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:23:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Studying perceived performance of Firefox and Chrome</title>
		<link>http://ajaxian.com/archives/studying-perceived-performance-of-firefox-and-chrome</link>
		<comments>http://ajaxian.com/archives/studying-perceived-performance-of-firefox-and-chrome#comments</comments>
		<pubDate>Mon, 21 Jun 2010 10:21:14 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9645</guid>
		<description><![CDATA[“A man&#8217;s got to do what a man&#8217;s got to do.” said the cowboy John Wayne. Mozilla&#8217;s new intern with the same name knows that Mozilla needs to do&#8230; and it needs to do performance. It isn&#8217;t just about JavaScript performance though, the battle for the hearts and minds is perceived performance. This is a <a href="http://ajaxian.com/archives/studying-perceived-performance-of-firefox-and-chrome">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.johnwaynehill.com/about/"><img src="http://ajaxian.com/wp-content/images/johnwaynemoz.png" alt="" title="johnwaynemoz" width="346" height="241" class="alignnone size-full wp-image-9646" style="float:right; padding:8px"/></a></p>
<p>“A man&#8217;s got to do what a man&#8217;s got to do.” said the cowboy John Wayne. Mozilla&#8217;s new intern with the same name knows that Mozilla needs to do&#8230; and it needs to do performance. It isn&#8217;t just about <a href="http://arewefastyet.com/">JavaScript performance</a> though, the battle for the hearts and minds is <a href="http://www.johnwaynehill.com/blog/2010/06/16/perceived-speed-performace/">perceived performance</a>. This is a tough game for Mozilla as the average user giving Chrome a shot is doing so on a fresh browser with no history, bookmarks, or add-ons. If you download a fresh Firefox nightly you may be surprised at how fast it is!</p>
<p>John has been doing some analysis comparing the perceived performance compared to Chrome:</p>
<p><img src="http://www.johnwaynehill.com/blog/wp-content/uploads/2010/06/Fresh.jpg"/></p>
<p><object width="480" height="289"><param name="movie" value="http://www.youtube.com/v/S3oLFHkeCco&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/S3oLFHkeCco&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="289"></embed></object></p>
<p>and came up with some recommended actions for the team:</p>
<ul>
<li>With just a few changes in the Firefox start-up process, we could greatly enhance the feeling of Firefox’s speed. The changes listed below are recommendations to help better the overall Firefox experience.
</li>
<li>Draw the OS spinner icon as little as possible, but one solid break isn’t bad and might be better than one really long spinner.
</li>
<li>Draw the browser chrome while the window is being animated (drawn) to size. So that most of the drawing happens simultaneously rather than sequentially.
</li>
<li>Make a new ‘website loading’ icon with less visual weight that animates faster but is slightly larger (would allow a user to ‘see’ the faster animation).
</li>
<li>‘Lazy’ load tabs that are being restored (already being talked about).
</li>
<li>Load upgrades and add-on updates upon browser close, not browser start.
</li>
<li>Delay loading the website’s title until the website is ready for interaction.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/studying-perceived-performance-of-firefox-and-chrome/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Scaling UI controls appropriately on the mobile Web</title>
		<link>http://ajaxian.com/archives/mobile-web-scaling-controls</link>
		<comments>http://ajaxian.com/archives/mobile-web-scaling-controls#comments</comments>
		<pubDate>Fri, 18 Jun 2010 11:04:29 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9610</guid>
		<description><![CDATA[Using the mobile Web with modern devices that give you the &#8220;full Web&#8221; and allow you to zoom in and out on the page (if zooming hasn&#8217;t been turned off of course). Sam Stephenson (of Prototype and 37Signals fame) has taken on the problem of the sizing of controls. If you zoom out, normally, controls <a href="http://ajaxian.com/archives/mobile-web-scaling-controls">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Using the mobile Web with modern devices that give you the &#8220;full Web&#8221; and allow you to zoom in and out on the page (if zooming hasn&#8217;t been turned off of course).</p>
<p><a href="http://37signals.com/svn/posts/2407-device-scale-user-interface-elements-in-ios-mobile-safari"><img src="http://s3.amazonaws.com/37assets/svn/420-device-scale-full-chrome.png"/></a></p>
<p>Sam Stephenson (of Prototype and 37Signals fame) has taken on the problem of the sizing of controls. If you zoom out, normally, controls are smaller in the same proportion as the rest of the content. In reality, you want nice large controls that are tap friendly. This is where his device scale technique comes in:</p>
<p><script src="http://gist.github.com/439777.js?file=gistfile1.js"></script></p>
<p>He also talks about how he takes hover elements and makes them tappable to get the same item shown or hidden.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/mobile-web-scaling-controls/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Full Frontal &#8217;09: Todd Kloots on ARIA and Acessibility</title>
		<link>http://ajaxian.com/archives/full-frontal-09-todd-kloots-on-aria-and-acessibility</link>
		<comments>http://ajaxian.com/archives/full-frontal-09-todd-kloots-on-aria-and-acessibility#comments</comments>
		<pubDate>Fri, 20 Nov 2009 16:10:28 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7976</guid>
		<description><![CDATA[Todd Kloots is talking accessibility and ARIA, with examples showing how YUI nicely supports these techniques. He explains how to improve in three areas: perception, usability, discoverability. Can We Do ARIA Today? Yes. Firefox and IE (he didn't say which version) have really good support for ARIA. And Opera, Chrome, and Safari. Likewise for the <a href="http://ajaxian.com/archives/full-frontal-09-todd-kloots-on-aria-and-acessibility">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Todd Kloots is talking accessibility and ARIA, with examples showing how YUI nicely supports these techniques. He explains how to improve in three areas: perception, usability, discoverability.</p>
<h3>Can We Do ARIA Today?</h3>
<p>Yes.</p>
<p>Firefox and IE (he didn't say which version) have really good support for ARIA. And Opera, Chrome, and Safari. Likewise for the screenreaders - JAWS, Windows Eyes, NVDA - also have good support. An the libraries - YUI, Dojo, JQuery-UI - all have good support baked in, one of the benefits of using ARIA is automatic support.</p>
<h3>Improving Perception - ARIA and Screenreaders</h3>
<p>Websites can have problems in perception when rendered with a screenreader; it's hard to get the big picture about what the words refer to. With ARIA, we can close the gap in perception. This is another example of progressive enhancement - augment the item by adding properties, markup or Javascript if required:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-3');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-3">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">node.<span style="color: #006600;">setAttribute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"role"</span>, <span style="color: #3366CC;">"menu"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">node.<span style="color: #006600;">role</span> = <span style="color: #3366CC;">"menu"</span> <span style="color: #009900; font-style: italic;">// alternative introduced by IE8. IE-only, so don't use!</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<h3>Improving Usability - Keyboard Focus, ARIA, and YUI support</h3>
<p>Keyboard access. For some people, it's a necessity, and for others it's still an option or preference (think Vim). To support it, you must be able to tab to the element to get focus, so you should control tabbing with tabindex. A good application of controlling tabbing is, amazingly enough, moving through tabs. Another is modal dialogs; the browser doesn't "know" it's modal, so we have to control focus to make sure it doesn't slip out of the thing that's the only thing users should be able to click on!</p>
<p>Todd shows us just how many steps are required to perform a task in a complex application like Yahoo! mail, using just tabs to navigate through - 19 steps in this example, walking through the toolbar; and even more, when you consider the wider picture of entering the app in the first place. To help with this, he introduces a pattern whereby tabIndexes are updated dynamically to control what comes next, as you move through a toolbar. A negative tabIndex will ensure the element is skipped over.</p>
<p>You can also use the "focus" pseudoclass to ensure focus appearance is consistent for all elements. But, and it's a big one, it's not very well supported; even IE8 doesn't support :focus on &lt;a&gt;, for example. Doing it manually with Javascript has problems, in particular performance. Fortunately, PPK has worked out how to handle focus and blur with <a href="http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html">event delegation</a>, so that it's much more performant, and the resulting technique is built into YUI3.</p>
<p>Device-independence with markup was also advocated to further improve accessibility:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-4');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-4">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> role=<span style="color: #ff0000;">"menuitem"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</span></div>
</li>
</ol>
</div>
</div>
</div>
<h3>Improving Discoverability - ARIA</h3>
<p>Essentially, this is about "random access" and keyboard shortcuts; jumping straight to areas in this page and activating them. The key ARIA feature here is "landmark roles" to identify particular points on the page. This is still something where users aren't aware of the feature, and Todd points out it's not surprising as most screen reader users are self-taught (just under 75% according to the study he showed). Also, not every user is a geek, and the same applies to screen-reader users.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/full-frontal-09-todd-kloots-on-aria-and-acessibility/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>YQLAutoTagger &#8211; making it easier for people to tag their content</title>
		<link>http://ajaxian.com/archives/yqlautotagger-making-it-easier-for-people-to-tag-their-content</link>
		<comments>http://ajaxian.com/archives/yqlautotagger-making-it-easier-for-people-to-tag-their-content#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:10:20 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7783</guid>
		<description><![CDATA[I am right now part of the Stackoverflow DevDays conference tour introducing the attendees to the things Yahoo has to offer for developers. One of the things is YQL as an easy way to use web services. When talking to the Stackoverflow developers they wondered how to make it easier for people to tag their <a href="http://ajaxian.com/archives/yqlautotagger-making-it-easier-for-people-to-tag-their-content">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I am right now part of the <a href="http://stackoverflow.carsonified.com/">Stackoverflow DevDays</a> conference tour introducing the attendees to the things <a href="http://developer.yahoo.com">Yahoo has to offer for developers</a>. One of the things is YQL as an easy way to use web services. When talking to the Stackoverflow developers they wondered how to make it easier for people to tag their questions. I've taken on the challenge and whipped up a  GreaseMonkey script that enhances the Stackoverflow question form to automatically add tags to the question using the <a href="http://developer.yahoo.com/search/content/V1/termExtraction.html">Yahoo Term Extractor API</a>. You can see a <a href="http://www.youtube.com/watch?v=SA4Et1DiVbE">screencast of the pimped StackOverflow</a> or <a href="http://github.com/codepo8/YQLAutoTagger/raw/master/stackoverflow_tags.user.js.">install the GreaseMonkey Script</a>. </p>
<p>The next logical step was to clean up the script a bit and make it work without Greasemonkey. Now you can simply embed it into any document. See it in action on YouTube:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/GZL3xrcQr3c&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x006699&#038;color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/GZL3xrcQr3c&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x006699&#038;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>As shown in the <a href="http://isithackday.com/demos/yqlautotagger.html">demo page</a>, all you need to do is to point to the script and call the <code>init()</code> method with the two field IDs as parameters.</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-6">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">&lt;form</span></a> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">"#"</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">"get"</span> <span style="color: #000066;">accept-charset</span>=<span style="color: #ff0000;">"utf-8"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">&lt;label</span></a> <span style="color: #000066;">for</span>=<span style="color: #ff0000;">"mainfield"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Your Message:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/label&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/textarea.html"><span style="color: #000000; font-weight: bold;">&lt;textarea</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"mainfield"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"mainfield"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Hello I am a programmer that does care about interfaces. What kind of library can I use that gives me a defined set of widgets that have been tested in the real world?<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/textarea&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">&lt;label</span></a> <span style="color: #000066;">for</span>=<span style="color: #ff0000;">"tags"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Tags:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/label&gt;</span></span><span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text"</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"tags"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"tags"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/form&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://github.com/codepo8/YQLAutoTagger/raw/master/YQLAutoTagger.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>YQLAutoTagger.init('mainfield','tags');<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>There are some ways to customise the script and its behaviour, all of which are described on GitHub. <a href="http://github.com/codepo8/YQLAutoTagger/">Download the script</a> and <a href="http://wiki.github.com/codepo8/YQLAutoTagger">read the docs</a> there.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/yqlautotagger-making-it-easier-for-people-to-tag-their-content/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Designing Web Interfaces with Bill Scott and Theresa Neil</title>
		<link>http://ajaxian.com/archives/designing-web-interfaces</link>
		<comments>http://ajaxian.com/archives/designing-web-interfaces#comments</comments>
		<pubDate>Wed, 04 Feb 2009 11:05:15 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5878</guid>
		<description><![CDATA[Bill Scott presented Designing Web Interfaces, a slideshow based on core items from his book (co-authored by Theresa Neil). There are some really interesting posts on the site, such as 30 Essential Controls. Theresa has been pinging the major frameworks and will be posting a matrix of coverage by the various frameworks. But more generally <a href="http://ajaxian.com/archives/designing-web-interfaces">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=dwi-1233708570866247-2&#038;stripped_title=designing-web-interfaces-book-oreilly-webcast" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=dwi-1233708570866247-2&#038;stripped_title=designing-web-interfaces-book-oreilly-webcast" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>Bill Scott presented Designing Web Interfaces, a slideshow based on core items from <a href="http://designingwebinterfaces.com/">his book</a> (co-authored by Theresa Neil).</p>
<p>There are some really interesting posts on the site, such as <a href="http://designingwebinterfaces.com/essential_controls">30 Essential Controls</a>. Theresa has been pinging the major frameworks and will be posting a matrix of coverage by the various frameworks. But more generally it is a nice checklist of controls that can liven up an interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/designing-web-interfaces/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chromeless: Designing zen; a browser without a browser</title>
		<link>http://ajaxian.com/archives/chromeless-designing-zen-a-browser-without-a-browser</link>
		<comments>http://ajaxian.com/archives/chromeless-designing-zen-a-browser-without-a-browser#comments</comments>
		<pubDate>Fri, 30 Jan 2009 05:43:27 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5842</guid>
		<description><![CDATA[Alex Faaborg and Aza Raskin have been having some fun playing with a new design challenge at Mozilla, and it shows in their design review screen/pod/vidcasts. The latest episode focuses on chromless browsing: What would a browser look like if the Web was all there was? As the Web becomes even more ubiquitous, we’ll never <a href="http://ajaxian.com/archives/chromeless-designing-zen-a-browser-without-a-browser">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.mozilla.com/faaborg/2009/01/29/a-web-browser-with-no-visible-ui/">Alex Faaborg</a> and <a href="http://www.azarask.in/blog/post/design-review-ep-2/">Aza Raskin</a> have been having some fun playing with a new <a href="http://labs.mozilla.com/2009/01/introducing-the-design-challenge/">design challenge at Mozilla</a>, and it shows in their <a href="http://www.azarask.in/blog/post/the-design-review-mobile/">design review</a> screen/pod/vidcasts.</p>
<p>The latest episode focuses on chromless browsing:</p>
<blockquote><p>
What would a browser look like if the Web was all there was? As the Web becomes even more ubiquitous, we’ll never have to leave it. Whether it’s on touch tables, giant wall-sized screens, mobile devices, or just our computers, exploring the interactions for browsing a windowless Web will become ever-more important in the next couple of years.
</p></blockquote>
<p>I really like how they use the video to not show talking heads, but instead add to their content.</p>
<p>As I was listening to them discuss the different between usability and discoverability it really resonated with me. Most of my favourite features are not discoverable at all. For example, I navigate tabs with Apple-1, Apple-9 etc.</p>
<p>But back to the topic at hand, imagine you are in full screen browsing mode, how would you get around? For me, I hope those Apple-# keys still work (tabs fade in when I hit apple?)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/chromeless-designing-zen-a-browser-without-a-browser/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Test Pilot: Wouldn&#8217;t it be nice to have a way to do real usability studies?</title>
		<link>http://ajaxian.com/archives/test-pilot-wouldnt-it-be-nice-to-have-a-way-to-do-real-usability-studies</link>
		<comments>http://ajaxian.com/archives/test-pilot-wouldnt-it-be-nice-to-have-a-way-to-do-real-usability-studies#comments</comments>
		<pubDate>Wed, 21 Jan 2009 09:26:53 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5753</guid>
		<description><![CDATA[How many tabs does an average use at a time? How about novice users? How often is the stop button pressed? How many times do people open a new tab to perform a search? There are hundreds of questions like these whose answers would help quantitatively inform the design process of Firefox. Those are the <a href="http://ajaxian.com/archives/test-pilot-wouldnt-it-be-nice-to-have-a-way-to-do-real-usability-studies">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://docs.google.com/File?id=aq5zpf783fj_198c9h3qzgr_b" alt="" /></p>
<blockquote><p>How many tabs does an average use at a time? How about novice users? How often is the stop button pressed? How many times do people open a new tab to perform a search?</p>
<p>There are hundreds of questions like these whose answers would help quantitatively inform the design process of Firefox.</p>
</blockquote>
<p>Those are the questions that Aza Raskin and the Mozilla Labs team are working on solving with <a href="http://labs.mozilla.com/2009/01/2008/03/introducing-test-pilot/">Test Pilot</a>, a very exciting project that is kicking off in force.</p>
<p>I am jazzed to see where this goes. I would love to see the crowd show us that "wow, people really do that?" which is my constant experience from usability studies. Maybe we could get some performance info too, and learn from the crowd that plugin A + plugin B causes issues. Who knows. The platform it just beginning. Have ideas? "Come brainstorm at a <a id="nouh" title="Lab's Night" href="https://mozillalabs.com/blog/2009/01/mozilla-labs-meetup-thursday-122/">Lab’s Night</a>, participate in the <a id="bxca" title="forums" href="https://labs.mozilla.com/forum/categories.php">forums</a>, hop on <a id="uf53" title="IRC" href="ircs://irc.mozilla.org:6697/%23labs">IRC</a>, or help create on our <a id="g3rv" title="wiki" href="https://wiki.mozilla.org/Labs">wiki</a>."</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/test-pilot-wouldnt-it-be-nice-to-have-a-way-to-do-real-usability-studies/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lengthening Out URLs</title>
		<link>http://ajaxian.com/archives/lengthening-out-urls</link>
		<comments>http://ajaxian.com/archives/lengthening-out-urls#comments</comments>
		<pubDate>Tue, 23 Dec 2008 15:22:33 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5488</guid>
		<description><![CDATA[In our age of information and technology, there isn't as much mystery as there used to be. In that sense, short URLs (e.g., tinyurl.com/123) can be fun! Who knows where you'll wind up. Some folks aren't as happy with uncertainty in hyperlinking; one of them, Darragh Curran, wrote in to tell us about his project: <a href="http://ajaxian.com/archives/lengthening-out-urls">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>In our age of information and technology, there isn't as much mystery as there used to be. In that sense, short URLs (e.g., tinyurl.com/123) can be fun! Who knows where you'll wind up.</p>
<p>Some folks aren't as happy with uncertainty in hyperlinking; one of them, Darragh Curran, wrote in to tell us about his project: Long URL Please.</p>
<blockquote><p>
Long URL please (<a href="http://www.longurlplease.com">http://www.longurlplease.com</a>) is a JSON webservice to<br />
efficiently convert short urls (tinyurl.com/123) to their originals.<br />
I've got a simple jquery plugin to take advantage of it, and a firefox<br />
plugin. It's running on google app engine.
</p></blockquote>
<p><img src="http://ajaxian.com/wp-content/uploads/longurl.jpg" alt="" title="Long URL Please" width="470" height="228" class="alignnone size-full wp-image-5490" /></p>
<p>Darragh hates short URLs so much he's offering to contribute his time to help wipe them off the face of the web:</p>
<blockquote><p>
I'd love to see it used in apps like twhirl/tweetdeck/twitterific, on<br />
microblogging sites and pretty much anywhere that's got lots of short<br />
urls. In that respect I'll happily contribute my time to help those<br />
people/teams integrate with the service.
</p></blockquote>
<p>There's even a bookmarklet.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/lengthening-out-urls/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Time Picker UI</title>
		<link>http://ajaxian.com/archives/time-picker-ui</link>
		<comments>http://ajaxian.com/archives/time-picker-ui#comments</comments>
		<pubDate>Wed, 12 Nov 2008 05:01:53 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5041</guid>
		<description><![CDATA[John Resig linked to an interesting new time picker UI that Maxime Haineault implemented as a jQuery plugin: He made a "two click" time picker. The first click is within the time field. This activates the display and allows the user to choose the time - all of which is done by moving the mouse <a href="http://ajaxian.com/archives/time-picker-ui">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ejohn.org/blog/picking-time/"><img src="http://ejohn.org/files/timepicker.png" border="0" /></a></p>
<p>John Resig <a href="http://ejohn.org/blog/picking-time/">linked to</a> an interesting new <a href="http://haineault.com/media/jquery/ui-timepickr/page/">time picker UI</a> that Maxime Haineault implemented as a jQuery plugin:</p>
<blockquote><p>
He made a "two click" time picker. The first click is within the time field. This activates the display and allows the user to choose the time - all of which is done by moving the mouse over the times that you desire. The final click is anywhere - filling in the time that was chosen. It's hard to explain, you simply have to try it.</p>
<p>One thing that you'll notice using it is that it's fast. Very fast. I'd argue much faster than clicking into the input area, moving to the keyboard for entering the time, typing the time, then moving back to mouse.
</p></blockquote>
<p>I would be remiss not to mention John's other post of the day, where he goes into detail on <a href="http://ejohn.org/blog/css-animations-and-javascript/">CSS Animations and CSS Animations</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/time-picker-ui/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Ext JS Key mapping; Keyboard handling as a first class citizen</title>
		<link>http://ajaxian.com/archives/ext-js-key-mapping-keyboard-handling-as-a-first-class-citizen</link>
		<comments>http://ajaxian.com/archives/ext-js-key-mapping-keyboard-handling-as-a-first-class-citizen#comments</comments>
		<pubDate>Wed, 24 Sep 2008 10:28:07 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[keys]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4583</guid>
		<description><![CDATA[I am a strong believe in making the keyboard a first class citizen for your applications, including on the Web. Thus, I was interested to read how Ext JS has keyboard handling that ties into the entire system: Ext.KeyMap Ext provides several components that support keyboard navigation out of the box such as GridPanel, ComboBox, <a href="http://ajaxian.com/archives/ext-js-key-mapping-keyboard-handling-as-a-first-class-citizen">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I am a strong believe in making the keyboard a first class citizen for your applications, including on the Web. Thus, I was interested to read how <a href="http://extjs.com/blog/2008/09/23/keyboard-handling/">Ext JS has keyboard handling</a> that ties into the entire system:</p>
<blockquote><p>
<b>Ext.KeyMap</b></p>
<p>Ext provides several components that support keyboard navigation out of the box such as GridPanel, ComboBox, and TreePanel. To implement custom keyboard handling, developers can use the Ext.KeyMap and Ext.KeyNav classes to attach keyboard bindings to any component or element they wish.</p>
<p>The first set of keys we wanted to handle was all of the Function keys (F1-12). While most browsers reserve some/all of these keys, with some ext-pertise, we are able to override the default function if need be for our application. The application we were working with was completely dynamic and server driven, so we really couldn’t define all of the handlers ahead of time. This led to us dynamically building an array of key handler configuration objects and passing them all through to our new Ext.KeyMap object. </p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-9');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-9">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> keys = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i = <span style="color:#800000;">0</span>;i &lt;buttons.<span style="color: #006600;">length</span>;i++<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> btn = buttons<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// fkey property contains a string referencing the Ext constants (ie: Ext.EventObject.F1)</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> fk = <span style="color: #000066; font-weight: bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span>button.<span style="color: #006600;">fkey</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; btn.<span style="color: #006600;">handler</span> = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">handleKey</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>, <span style="color:#006600; font-weight:bold;">&#91;</span>fk<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; keys.<span style="color: #006600;">push</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; key: fk,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; handler: <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">handleKey</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>, <span style="color:#006600; font-weight:bold;">&#91;</span>fk<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; stopEvent: <span style="color: #003366; font-weight: bold;">true</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; scope: <span style="color: #000066; font-weight: bold;">this</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Ext.KeyNav</p>
<p>The next set of key handling added was some additions to the grid keyboard navigation.  The GridPanel has built in key navigation from the RowSelectionModel that it creates.  Check out <a href="http://extjs.com/playpen/keygrid/keygrid.html">this grid example and select a row, you can then use the arrow keys to move up/down and even hold shift and press down to select a range of rows.  We added a simple way to navigate through a large paged data set by extending GrindPanel.  The PagingToolbar provides keyboard handling once you’ve focused within the built-in TextField, but we wanted to allow the users to just hit ‘page down’ or ‘end’ when focus was anywhere within the GridPanel and ensure it functions as expected.</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">MyGrid = Ext.<span style="color: #006600;">extend</span><span style="color:#006600; font-weight:bold;">&#40;</span>Ext.<span style="color: #006600;">grid</span>.<span style="color: #006600;">GridPanel</span>,<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #006600;">afterRender</span> : <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;MyGrid.<span style="color: #006600;">superclass</span>.<span style="color: #006600;">afterRender</span>.<span style="color: #006600;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">nav</span> = <span style="color: #003366; font-weight: bold;">new</span> Ext.<span style="color: #006600;">KeyNav</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">getEl</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; pageDown: <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">pagingNav</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>,<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">'next'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; pageUp: <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">pagingNav</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">'prev'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">home</span>: <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">pagingNav</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>,<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">'first'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; end: <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">pagingNav</span>.<span style="color: #006600;">createDelegate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>,<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">'last'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; scope: <span style="color: #000066; font-weight: bold;">this</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">pagingNav: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>page<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> pt = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">getBottomToolbar</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>!pt<span style="color:#006600; font-weight:bold;">&#91;</span>page<span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color: #006600;">disabled</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; pt.<span style="color: #006600;">onClick</span><span style="color:#006600; font-weight:bold;">&#40;</span>page<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ext-js-key-mapping-keyboard-handling-as-a-first-class-citizen/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Understanding context in your New Tab</title>
		<link>http://ajaxian.com/archives/understanding-context-in-your-new-tab</link>
		<comments>http://ajaxian.com/archives/understanding-context-in-your-new-tab#comments</comments>
		<pubDate>Tue, 26 Aug 2008 12:52:08 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[azaraskin]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4205</guid>
		<description><![CDATA[Aza Raskin and the Mozilla Labs team looks like they are having a lot of fun. They have been putting up proposals for new UIs and the latest involves a smarter new tab screen. Aza discusses how opening a blank screen doesn't really help you. Opera already allows you to have a quick dial screen <a href="http://ajaxian.com/archives/understanding-context-in-your-new-tab">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1474467&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1474467&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object></p>
<p>Aza Raskin and the Mozilla Labs team looks like they are having a lot of fun. They have been putting up proposals for new UIs and the latest involves a <a href="http://www.azarask.in/blog/post/new-tabs/">smarter new tab screen</a>.</p>
<p>Aza discusses how opening a blank screen doesn't really help you. Opera already allows you to have a quick dial screen show up there, but what else can be done?</p>
<p>Often a new tab is opened to do a search, so they can put a search bar right there, and it can be smart enough to search across your own tools and providers (e.g. delicious). I personally don't do this, as I use Apple-K to jump to the search bar in the browser and have the search results open in a new tab.</p>
<p>What I found even more interesting was the context specific smartness. How often do you do this:</p>
<ul>
<li>Find an address</li>
<li>Select and copy the address</li>
<li>Open a new tab</li>
<li>Go to maps.google.com</li>
<li>Paste in the new address</li>
</ul>
<p>Instead, the new tab selector can be smart and automatically show you the map option. NOTE: there are of course other options such as plugins that find the addresses and give you links to the map.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/understanding-context-in-your-new-tab/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Gratuitous animation at the new Borders.com</title>
		<link>http://ajaxian.com/archives/gratuitous-animation-at-the-new-borderscom</link>
		<comments>http://ajaxian.com/archives/gratuitous-animation-at-the-new-borderscom#comments</comments>
		<pubDate>Fri, 18 Jul 2008 11:02:20 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[billscott]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/gratuitous-animation-at-the-new-borderscom</guid>
		<description><![CDATA[Bill Scott took a peak at the new borders.com and quickly saw an instance of the anti-pattern: Animation Gone Wild. Here it is in action: And his analysis: Instead of popping up the book, music, dvd information quickly we are required to watch the talent of the developer to sloooowly animate the box into place. <a href="http://ajaxian.com/archives/gratuitous-animation-at-the-new-borderscom">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Bill Scott took a peak at the <a href="http://www.borders.com/online/store/MediaView_newborders">new borders.com</a> and quickly saw an instance of <a href="http://looksgoodworkswell.blogspot.com/2008/07/anti-pattern-animation-gone-wild.html">the anti-pattern: Animation Gone Wild</a>.</p>
<p>Here it is in action:</p>
<p><object type="application/x-shockwave-flash" width="400" height="233" data="http://www.flickr.com/apps/video/stewart.swf?v=55430" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=d0513bc3a9&amp;photo_id=2673866921"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=55430"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=55430" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;photo_secret=d0513bc3a9&amp;photo_id=2673866921" height="233" width="400"></embed></object></p>
<p>And his analysis:</p>
<blockquote><p>
Instead of popping up the book, music, dvd information quickly we are required to watch the talent of the developer to sloooowly animate the box into place. Come on folks, we can do better than this!</p>
<p>There is no need to see utility objects like this animate into place.</p>
<p>Here is the general rule. Try your feature without animation. Is the meaning clear? If so then don't add ANY animation. If it is not, try adding a quick animation. Did that get it? Then stop there.</p>
<p>Save animation for when you need it. Animation is good for at least seven reasons:</p>
<ul>
<li>Maintain context while changing views. <a href="http://billwscott.com/carousel/carousel_ajax_load.html">Carousels</a> are a good example of this. The scroll animation helps the user maintain context as they move through information.</li>
<li>Explain what just happened. The Apple store <a href="http://store.apple.com/us/configure/MB402LL/A?mco=NzQ3Njk0">Customize your Mac</a> uses this to highlight price changes while configuring a Mac for purchase.</li>
<li>Show relationships between objects. The <a href="http://www.appleinsider.com/articles/04/10/06/apple_receives_patent_for_genie_dock_effect.html">Mac Genie</a> effect when closing or opening windows. It is fast enough and it ties the iconified window to the dock.</li>
<li>Focus attention. Backpackit's <a href="http://ajaxpatterns.org/archive/One-Second_Spotlight.php">Spotlight</a> technique focuses attention on the change that happened.</li>
<li>Improve perceived performance. <a href="http://www.webappers.com/progressBar/">Progress Bars</a>.</li>
<li>Create an illusion of virtual space. <a href="http://myyblog.com/blog/2007/10/11/improved-personal-assistant/">Yahoo! Home page's personal assistant</a> (Tabs animate open).</li>
<li>Engagement. Mini-Cooper site, <a href="http://www.miniusa.com/?#/learn/FACTS_FEATURES_SPECS/colors-s">configure your car</a>. The animation is fun.</li>
</ul>
<p>BTW, I go into detail on animation in my upcoming O'Reilly Book, <a href="http://looksgoodworkswell.blogspot.com/2008/07/upcoming-oreilly-book-designing-web.html">Designing Web Interfaces</a>.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/gratuitous-animation-at-the-new-borderscom/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Require Javascript for Contributions?</title>
		<link>http://ajaxian.com/archives/require-javascript-for-contributions</link>
		<comments>http://ajaxian.com/archives/require-javascript-for-contributions#comments</comments>
		<pubDate>Mon, 09 Jun 2008 20:53:58 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Editorial]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3736</guid>
		<description><![CDATA[On the Stack Overflow blog, Jeff Attwood asks Is it OK to require JavaScript to participate? Note that by â€œparticipateâ€ I mean â€œedit, answer or ask a questionâ€. Of course passively reading a question and the associated answers will work fine without JavaScript enabled. ... While we do believe in progressive enhancement, itâ€™s possible that <a href="http://ajaxian.com/archives/require-javascript-for-contributions">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.stackoverflow.com/index.php/2008/06/is-it-ok-to-require-javascript/"><img src="http://ajaxian.com/wp-content/images/stackoverflowlogo250.png" alt="" border="0" width="250" height="70"/></a> </p>
<p>On the Stack Overflow blog, Jeff Attwood asks <a href="http://blog.stackoverflow.com/index.php/2008/06/is-it-ok-to-require-javascript/">Is it OK to require JavaScript to participate?</a></p>
<blockquote><p>
Note that by â€œparticipateâ€ I mean â€œedit, answer or ask a questionâ€. Of course passively reading a question and the associated answers will work fine without JavaScript enabled.<br />
...<br />
While we do believe in progressive enhancement, itâ€™s possible that some of the features weâ€™re building for asking and editing may be so dynamic that they do not degrade well, if at all.</p>
<p>What say you? Is it OK for a website in 2008 to require JavaScript for active (not passive) participation?
</p></blockquote>
<p>On a forum site like StackOverflow, is it an "enhancement" when you add a comment? Not really, which would make me lean towards keeping the site simple and not requiring Javascript for making basic contributions. There is also accessibility to consider (although "accessible" is not the same thing as "Javascript not required"). </p>
<p>It could be argued that as a developer-focused website, Javascript can be assumed. But developers are also the most likely folks to go out of their way and turn Javascript off. And developers are also among the most critical of sites that require Javascript (or Flash) when it could have worked without it.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/require-javascript-for-contributions/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Addressbook: An example of the Form History Pattern</title>
		<link>http://ajaxian.com/archives/addressbook-an-example-of-the-form-history-pattern</link>
		<comments>http://ajaxian.com/archives/addressbook-an-example-of-the-form-history-pattern#comments</comments>
		<pubDate>Wed, 28 May 2008 16:34:32 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3690</guid>
		<description><![CDATA[One of the examples that Ben and I give in our State of Ajax talk at Google I/O today revolves around form history. We were thinking about the case for Undo on the Web that Aza Raskin is proposing and it got us thinking about the usage patterns of form data. An example that got <a href="http://ajaxian.com/archives/addressbook-an-example-of-the-form-history-pattern">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>One of the examples that Ben and I give in our <a href="http://code.google.com/events/io/sessions.html">State of Ajax</a> talk at Google I/O today revolves around form history.</p>
<p>We were thinking about the <a href="http://ajaxian.com/archives/aza-raskins-case-for-undo">case for Undo on the Web</a> that Aza Raskin is proposing and it got us thinking about the usage patterns of form data.</p>
<p>An example that got me was the Address Book application on the Mac. I find myself storing past addresses in the general "Notes" section at the bottom, but what if history was built into the system so I could go back in time? This could be a nice metaphor in general that goes beyond undo.</p>
<p>I took this use case and put together <a href="http://google-ajax-examples.googlecode.com/svn/trunk/addressbook/index.html">a working example</a> that uses Gears to store the history locally so it can be speedy through the history.</p>
<p>The slider component comes from Script.aculo.us, and you can check out <a href="http://code.google.com/p/google-ajax-examples/source/browse">all of the code</a>.</p>
<p>In the video below I show the application in action and then do a quick code walk through:</p>
<p><object width="480" height="362"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1074353&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" /><embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1074353&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="452"></embed></object></p>
<p>This is just the beginning of course. A slider if fun, but it would probably be more usable if it was simply left and right arrows that click through the versions, or at least putting tacks onto the slider.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/addressbook-an-example-of-the-form-history-pattern/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>An easier and more accessibe YouTube player</title>
		<link>http://ajaxian.com/archives/an-easier-and-more-accessibe-youtube-player</link>
		<comments>http://ajaxian.com/archives/an-easier-and-more-accessibe-youtube-player#comments</comments>
		<pubDate>Wed, 21 May 2008 09:50:09 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/an-easier-and-more-accessibe-youtube-player</guid>
		<description><![CDATA[We've covered the YouTube JavaScript API here before and especially the chance to write your own players in HTML and JavaScript with it. Especially the ext.js based one to one copy of the YouTube interface was of interest. At the Accessibility2.0 conference in London earlier this year, Antonia Hyde of United Response gave a talk <a href="http://ajaxian.com/archives/an-easier-and-more-accessibe-youtube-player">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>We've covered the <a href="http://code.google.com/apis/youtube/js_api_reference.html">YouTube JavaScript API</a> here before and especially the chance to write your own players in HTML and JavaScript with it. Especially the <a href="http://www.siteartwork.de/youtubeplayer/">ext.js based one to one copy of the YouTube interface</a> was of interest. </p>
<p>At the Accessibility2.0 conference in London earlier this year, Antonia Hyde of <a href="http://www.unitedresponse.org.uk/">United Response</a> gave <a href="http://www.slideshare.net/hi.antonia/rich-media-and-web-apps-for-people-with-learning-disabilities"> a talk about rich media and web apps for people with learning disabilities</a> and outlined a perfect media player for the needs of this group of disabled web users. </p>
<p>Whilst not ticking all the boxes, I took the YouTube API and created an easy interface for YouTube videos that has big friendly buttons and easy to use volume controls:</p>
<p><a href="http://icant.co.uk/easy-youtube/?http://www.youtube.com/watch?v=9i0-btCTdN8"><img src="http://icant.co.uk/easy-youtube/easyyoutubeplayer.gif" alt="Easy YouTube player showing a video"/></a></p>
<p>You can just add a YouTube URL to the end of the player URL to play the video or download the whole player to host it yourself and style it any way you want.</p>
<p>Check out the blog post <a href="http://www.wait-till-i.com/2008/05/20/making-youtube-easier-and-more-accessible/">about Easy YouTube player</a> to get all the information and try it out.</p>
<p>What I found was that neither mine, nor the extJS nor the demo pages on the YouTube API page work in Opera, which means there is a bug in the API itself. </p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/an-easier-and-more-accessibe-youtube-player/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The seven rules of pragmatic progressive enhancement</title>
		<link>http://ajaxian.com/archives/the-seven-rules-of-pragmatic-progressive-enhancement</link>
		<comments>http://ajaxian.com/archives/the-seven-rules-of-pragmatic-progressive-enhancement#comments</comments>
		<pubDate>Wed, 07 May 2008 22:58:24 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Unobtrusive JS]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/the-seven-rules-of-pragmatic-progressive-enhancement</guid>
		<description><![CDATA[I've been talking about progressive enhancement here before and got a lot of flak in comments about it. It seemed that there was a general misunderstanding of progressive enhancement and unobtrusive scripting as a "passing fad" or "backward facing rather than being innovative". I was asked by a design agency in London to go there <a href="http://ajaxian.com/archives/the-seven-rules-of-pragmatic-progressive-enhancement">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I've been talking about progressive enhancement here before and got a lot of flak in comments about it. It seemed that there was a general misunderstanding of progressive enhancement and unobtrusive scripting as a "passing fad" or "backward facing rather than being innovative". </p>
<p>I was asked by a design agency in London to go there and give a brown bag presentation (during lunch break) on the matter and took this as an opportunity to write up reasons and examples for progressive enhancement concentrating more on the why than on the how. </p>
<p>The gist would be to say: enhancing a product progressively means you'll always deliver a working product - as you have no idea how your product can fail in certain environments, you plan for it to fail. This ties in nicely with the <a href="http://agilemanifesto.org/">agile manifesto</a> - you always deliver software that works. </p>
<p>In my talk I came up with seven "rules" of pragmatic progressive enhancement:</p>
<ol>
<li>Separate as much as possible</li>
<li>Build on things that work</li>
<li>Generate dependent markup</li>
<li>Test for everything before you apply it</li>
<li>Explore the environment</li>
<li>Load on demand</li>
<li>Modularize code</li>
</ol>
<p>I've taken these ideas and backed them up with benefits you get by following them and code examples in a full article: <a href="http://icant.co.uk/articles/pragmatic-progressive-enhancement/">Pragmatic Progressive Enhancement</a>. </p>
<p>The article is licensed with Creative Commons and uses YUI in the example scripts, feel free to translate, remix and create examples using other libraries.</p>
<p>You can also read the slides on slideshare:</p>
<div class="slideshare"><a href="http://www.slideshare.net/cheilmann/pragmatic-progressive-enhancement?src=embed#progressiveenhancement-1210189562112719-9">View 'Pragmatic Progressive Enhancement' on SlideShare</a><script src="http://chrisslidesharehacks.googlecode.com/files/previewer2.js"></script></div>
<p>Pending the quality of the recording, there'll also be a video available sooner or later.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-seven-rules-of-pragmatic-progressive-enhancement/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Event Delegation for blur and focus</title>
		<link>http://ajaxian.com/archives/event-delegation-for-blur-and-focus</link>
		<comments>http://ajaxian.com/archives/event-delegation-for-blur-and-focus#comments</comments>
		<pubDate>Mon, 14 Apr 2008 14:20:35 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Unobtrusive JS]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/event-delegation-for-blur-and-focus</guid>
		<description><![CDATA[Over at Quirksmode.org, Peter-Paul Koch is researching if Event Delegation which works splendidly with click events is also possible for blur and focus. Event Delegation means that you piggy-back on the behaviour of browsers to report events on child nodes up the tree to their parents. Instead of applying event handlers to each element you <a href="http://ajaxian.com/archives/event-delegation-for-blur-and-focus">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Over at <a href="http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html">Quirksmode.org</a>, Peter-Paul Koch is researching if <a href="http://icant.co.uk/sandbox/eventdelegation/">Event Delegation</a> which works splendidly with click events is also possible for blur and focus. </p>
<p>Event Delegation means that you piggy-back on the behaviour of browsers to report events on child nodes up the tree to their parents. Instead of applying event handlers to each element you apply a single one on the main parent element and use the event target to determine which element was activated.<br />
The benefits of Event Delegation are that you use a single event handler for a unknown amount of nodes. This is very handy when it comes to developing dynamic menus where the data is pulled via Ajax. </p>
<p>So far, PPK found that apart from IE all browsers play along, and there is a <a href="http://www.quirksmode.org/focusblurexample.html">test page</a> to give him feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/event-delegation-for-blur-and-focus/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPhone Optimization Script</title>
		<link>http://ajaxian.com/archives/iphone-optimization-script</link>
		<comments>http://ajaxian.com/archives/iphone-optimization-script#comments</comments>
		<pubDate>Tue, 25 Mar 2008 11:23:15 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3473</guid>
		<description><![CDATA[Bob Buffone has created a tool that can be used to output script and HTML to make your site more usable on an iPhone. He tells us about it here: I bought an iPhone about six months ago; in that time I noticed that even though it had this part of the Web and that <a href="http://ajaxian.com/archives/iphone-optimization-script">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.g8l.us/iphone/index.html"><img src="http://ajaxian.com/wp-content/images/iphoneopt.png" alt="iPhone Optimization Script" border="0" width="510" height="276"/></a></p>
<p>Bob Buffone has <a href="http://www.g8l.us/iphone/index.html">created a tool</a> that can be used to output script and HTML to make your site more usable on an iPhone. He tells us about it here:</p>
<blockquote><p>
I bought an iPhone about six months ago; in that time I noticed that even though it had this part of the Web and that part of the Web. Every page I went to I was only reading this part and in order to do that, I needed to scroll it into view and resize the page the same way every time.  When I go Ajaxian.com on my iPhone I need to scroll the content to the right location and scale it so the middle column fits the screen and then start reading.  Itâ€™s a real pain in the ass. </p>
<p>This was the case for my blog as well. I didnâ€™t want to rewrite it so I figured out a way to use a little JavaScript to set the scale and position of the page at start up so the main content area completely fills the screen for the iPhone.
</p></blockquote>
<p>Once you input the URL to your site, it gets loaded and you can interact with it to put the box in the right place. For Ajaxian, it then output the following HTML:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-13');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-13">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">&lt;meta</span></a> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"viewport"</span> <span style="color: #000066;">content</span>=<span style="color: #ff0000;">"width=980; initial-scale=0.631163708086785"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>and JavaScript to do the right thing on the iPhone:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-14">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//Variable used to control the zoom and </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//position of the page when it is loaded.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> viewport = <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; initialScale: <span style="color:#800000;">0</span>.<span style="color:#800000;">631163708086785</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: <span style="color:#800000;">980</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//(-80) is for the navigation bar, otherwise you can't read it </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//until it is fully loaded</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> scrollPosition = <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; left: <span style="color:#800000;">198</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; top: <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">188</span>-<span style="color:#800000;">80</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;&nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #0066FF;">/iPhone/i</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>navigator.<span style="color: #006600;">userAgent</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #009900; font-style: italic;">// sniff&nbsp; &nbsp; &nbsp;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//write the meta tag for the initial scale.&nbsp; This should </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//happen in the &lt;head&gt; section of the html page.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.<span style="color: #006600;">write</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'&lt;meta name=&quot;viewport&quot; content=&quot;width='</span>+</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewport.<span style="color: #006600;">width</span>+<span style="color: #3366CC;">'; initial-scale='</span> + </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; viewport.<span style="color: #006600;">initialScale</span> + <span style="color: #3366CC;">'&quot;&gt;'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//This loop will catch the page is loaded with out needing </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//to use the onLoad event.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> _timer = setInterval<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #0066FF;">/loaded|complete|interactive/</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">readyState</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clearInterval<span style="color:#006600; font-weight:bold;">&#40;</span>_timer<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//This will scroll the content into view, </span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//could be enhanced with animated scrolling but less is more.</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">//if the user started scrolling then let them handle it.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>window.<span style="color: #006600;">pageXOffset</span> == <span style="color:#800000;">0</span> &amp;&amp; window.<span style="color: #006600;">pageYOffset</span> == <span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span style="color: #006600;">scrollTo</span><span style="color:#006600; font-weight:bold;">&#40;</span>scrollPosition.<span style="color: #006600;">left</span>, </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scrollPosition.<span style="color: #006600;">top</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p></meta></head></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/iphone-optimization-script/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Seek or Show: Two Design Paradigms for Lots of Data</title>
		<link>http://ajaxian.com/archives/seek-or-show-two-design-paradigms-for-lots-of-data</link>
		<comments>http://ajaxian.com/archives/seek-or-show-two-design-paradigms-for-lots-of-data#comments</comments>
		<pubDate>Fri, 01 Feb 2008 15:32:24 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/seek-or-show-two-design-paradigms-for-lots-of-data</guid>
		<description><![CDATA[Bill Scott clued me in to this interesting first post from Theresa Neil on two design paradigms for handling large amounts of data: The Seek Paradigm: Have the user ask for what they want. The Show Paradigm: Display everything up front, and let the user explore and organize it. "The first is usually more prevalent <a href="http://ajaxian.com/archives/seek-or-show-two-design-paradigms-for-lots-of-data">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Bill Scott clued me in to this interesting first post from Theresa Neil on <a href="http://theresaneil.wordpress.com/2008/01/29/seek-or-show-two-design-paradigms-for-lots-of-data/">two design paradigms for handling large amounts of data</a>:</p>
<ul>
<li>The Seek Paradigm: Have the user ask for what they want.</li>
<li>The Show Paradigm: Display everything up front, and let the user explore and organize it.</li>
<p>"The first is usually more prevalent on the web. The latter usually more prevalent on desktop or deeper web applications. Theresa lists 10 different patterns illustrating Seek and Show."</p>
<p>She details both paradigm with very nice real world examples.</p>
<p><a href="http://theresaneil.wordpress.com/2008/01/29/seek-or-show-two-design-paradigms-for-lots-of-data/"><img src="http://ajaxian.com/wp-content/images/seekorshow.png" alt="Seek or Show" border="0" width="300" height="613"/></a></ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/seek-or-show-two-design-paradigms-for-lots-of-data/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design issues from Aza Raskin</title>
		<link>http://ajaxian.com/archives/design-issues-from-aza-raskin</link>
		<comments>http://ajaxian.com/archives/design-issues-from-aza-raskin#comments</comments>
		<pubDate>Fri, 01 Feb 2008 15:17:12 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/design-issues-from-aza-raskin</guid>
		<description><![CDATA[Aza Raskin has been chatting about a couple of things now that he is at Mozilla. First, Enso 2.0 is on the horizon which will be nice and free. Aza just added his design thoughts for the new version. I am interested in seeing how Enso could do more within the browser. You can already <a href="http://ajaxian.com/archives/design-issues-from-aza-raskin">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Aza Raskin has been chatting about a couple of things now that <a href="http://humanized.com/weblog/2008/01/16/joining-mozilla/">he is at Mozilla</a>.</p>
<p>First, <a href="http://humanized.com/weblog/2008/01/23/enso-20-on-the-horizon/">Enso 2.0 is on the horizon</a> which will be nice and free. Aza just added his <a href="http://humanized.com/weblog/2008/01/31/enso-20-design-thoughts/">design thoughts for the new version</a>.</p>
<p>I am interested in seeing how Enso could do more within the browser. You can already do things like open a URL, but you could take it further and use it as a way to script the way you do things in the browser.</p>
<p>Then, Aza talked about <a href="http://humanized.com/weblog/2008/01/25/songza-and-a-little-thing/">the design decisions in adding an about page</a>. When you read that you probably think: "are you kidding me?" but there is a little more too it:</p>
<blockquote><p>
Say Iâ€™m listening to â€œBohemian Rhapsodyâ€, singing along in that I-hope-the-neighbors-wonâ€™t-report-me-to-the-landlord sort of way, and I decide to find-out more about Songza. I click the link and â€” BAM â€” Iâ€™m no longer listening to the song. Instead, Iâ€™m staring at this self-serving, slightly meglomaniacal page about Songzaâ€™s history and its founders. Not only that, but Iâ€™ve lost my spot just at the best part of the song (Iâ€™m not saying which part that is in hopes of starting a small flame war). The naive approach to creating a separate page has turned the unassuming â€œabout songzaâ€ link into a landmine â€” under no circumstance should you punish your users for using your system. Because there is no way for the user to know which links will intterupt the music, every link is a Russian Roulette. Not cool.</p>
<p>The solution is to open a new window (although preferably, it would be a new tab). This way, the â€œabout songzaâ€ page opens without interrupting the song. Itâ€™s work-flow transparent. Spamming the user with extra windows or tabs is never a good thing, so we use a little bit of Javascript to open a new page only if a song is currently being played. We used a similar solution for the â€œWatch Videoâ€ link as well, except we went the extra mile there and automatically pause the Songza song so that it doesnâ€™t compete with the video.</p>
<p>Now we need examine the behavior of the â€œreturn to songzaâ€ link that formerly went at the bottom of the about page. By opening the about page in a new window, weâ€™ve broken the linkâ€™s behavior. If I were to click on it, it would cause that new window to go to Songza, which means I would have two separate instances of Songza open. How annoying! One solution would be to change the link to say â€œclose about pageâ€. That works great if I had come to the page from Songza, but if I had found myself on the page by doing a search, I would have no way of getting back to Songza proper without editing the URL. We are in a bit of a bind â€” either way we do the link, we have a suboptimal behavior.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/design-issues-from-aza-raskin/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

