<?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>Unlimited Edition &#187; User-experience</title>
	<atom:link href="http://michaelodden.com/category/user-experience/feed/" rel="self" type="application/rss+xml" />
	<link>http://michaelodden.com</link>
	<description>Unlimited views, cleverness and love</description>
	<lastBuildDate>Sat, 23 Jan 2010 20:31:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>URLs should express output-format, not source-format</title>
		<link>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/</link>
		<comments>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:14:42 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Tip of the day]]></category>
		<category><![CDATA[User-experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[file-extensions]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://michaelodden.com/?p=296</guid>
		<description><![CDATA[I&#8217;m the kind of guy who always tries to optimize my ways, especially when it comes programming. Over the last years I&#8217;ve worked on/against a multitude of CMS, frameworks and API&#8217;s, and quite often make some thoughts how things could be better, easier and more intuitive. One of these things are regarding how to format [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m the kind of guy who always tries to optimize my ways, especially when it comes programming. Over the last years I&#8217;ve worked on/against a multitude of <acronym title="Content Management System">CMS</acronym>, frameworks and <acronym title="Application Programming Interface">API</acronym>&#8217;s, and quite often make some thoughts how things could be better, easier and more intuitive.</p>
<p>One of these things are regarding how to format a <acronym title="Uniform Resource Locator">URL</acronym>.</p>
<p><span id="more-296"></span></p>
<p>This post isn&#8217;t really server-technically focused, as it is more a discussion of an idea. I&#8217;ll none the less assume that the reader has some familiarity with <a href="http://en.wikipedia.org/wiki/MIME_type">mime-types</a>, basic webserver-settings (<a href="http://technet.microsoft.com/en-us/library/cc771240(WS.10).aspx">like</a> <a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fhttpd.apache.org%2Fdocs%2F2.0%2Fhandler.html&amp;ei=eppKSsbyL5Ph-QbY3pnfBQ&amp;usg=AFQjCNGlmxT6bNAwOk5cEwUNLfQy5GSSMQ&amp;sig2=GlBSqGjdNkmybxQDDlwSNA">handlers</a> and <a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/"><acronym title="Uniform Resource Locator">URL</acronym></a>-<a href="http://httpd.apache.org/docs/2.0/misc/rewriteguide.html">rewrite</a>-<a href="http://www.workingwith.me.uk/articles/scripting/mod_rewrite">techniques</a>).</p>
<h2>Why</h2>
<p>As far as I&#8217;m concerned, any <acronym title="Uniform Resource Locator">URL</acronym> should give a hint of what you will find there, and by stripping the file-extension and just sitting left with something that&#8217;ll look like a directory, or using the scripting-language&#8217;s extension, I believe that we works against this. File-extensions gives an important hint regarding what the content is. What do you expect when you see &#8220;.jpg&#8221;, &#8220;.gif&#8221; or &#8220;.png&#8221;? Yes, images. Then what about &#8220;.html&#8221;, &#8220;.txt&#8221; and &#8220;.odf&#8221;? It&#8217;s most likely some kind of text, perhaps formatted. So what does &#8220;.php&#8221;, &#8220;.py&#8221; and &#8220;.aspx&#8221; tell us? Not much &#8211; it mostly a directive to the webserver, telling it to use some kind of parser to compile/process the contents before outputting it. And it might output html, xml or pdf as well as anything else.</p>
<p>A couple of years ago it had a &#8220;coolism&#8221; about it, saying that &#8220;I know how to develop fancy websites&#8221;, but nowadays people mostly expect some kind of interactivity anyway.</p>
<h2>How</h2>
<p>All relevant webservers today have to possibility to map any kind of extensions to any kind of (supported) language-parsers. I.e. with Apache you can use the AddType-directive like this:</p>
<pre>addhandler php5-script html xml json</pre>
<p>- to  parse all .html-, .xml and .json-files in the given directory as <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.</p>
<p>Now, let&#8217;s say you have an <acronym title="Application Programming Interface">API</acronym> which allows you (or perhaps other users), to query a service for information &#8211; and allows it to be delivered in xml, json and html. This is usually solved by adding some parameter like &#8220;of&#8221; (output-format) or something like that in the request to tell which format you&#8217;d like. I prefer to keep everything as logical and reducing the need to look up in manuals as far as reasonably possible, so instead of sending GET-requests like this:</p>
<pre>http://example.com/gateway.php?id=15&amp;key=11341&amp;of=xml

http://example.com/gateway.php?id=15&amp;key=11341&amp;of=json

http://example.com/gateway.php?id=15&amp;key=11341&amp;of=html</pre>
<p>I&#8217;d rather prefer:</p>
<pre>http://example.com/gateway.xml?id=15&amp;key=11341

http://example.com/gateway.json?id=15&amp;key=11341

http://example.com/gateway.html?id=15&amp;key=11341</pre>
<p>This applies just as much for those <a href="http://mallinson.ca/post/mod_rewrite/">sexy</a> <a href="http://www.highrockmedia.com/blog/web-development/search-engine-friendly-urls-a-key-piece-of-the-seo-pie/comment-page-1">search-friendly</a> URLs &#8211; just append .html to that pretty <acronym title="Uniform Resource Locator">URL</acronym>. <a href="http://www.youtube.com/watch?v=dSG6C33GwsE">Google says</a> that it atleast won&#8217;t affect negatively on your ranking &#8211; so why not?</p>
<h2>Possible problems</h2>
<p>There are some obvious problem to this approach:</p>
<p><strong>1: What if you want different parsers (let&#8217;s say php and python) for different files but which will serve the same kind of output? How do we tell the server which to use when?</strong></p>
<p>- Possible solutions to this is to either separate them in different folders (the cleanest approach), or expand the extension to ie. .php.html and .py.html. Perhaps in combination with some mod_rewrite-kind of tricks.</p>
<p><strong>2: What about the overhead for static files, which still is sent through an interpreter although nothing is changed?</strong></p>
<p>- If you are running a service which is sensitive to these kind of margins, you should just use dedicated servers or CDN&#8217;s to deliver the static content no matter what.</p>
<p><strong>3: How far shall we take it? Should we use extensions like .html5 and .xhtml etc?</strong></p>
<p>-  I do believe that these differences are mostly relevant to the software parsing them, so in these cases it may suffice with keeping with i.e. .html, and use the <acronym title="Multipurpose Internet Mail Extension">MIME</acronym>-type to send further details.</p>
<h2>Summary</h2>
<p>Although all my examples might not pinpoint all the benefits I do believe that there is an idea in keeping the file-extension, both to assist external users as well as might reduce some clutter.</p>
<p>What are the pros and cons of an approach like this? I&#8217;ve barely touched a few in this post, but I hope I was able to mention some of the most essential ones.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=296&type=feed" alt="" />

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/webdevelopment/urls-should-express-output-format-not-source-format/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>table-row-highlighter.js</title>
		<link>http://michaelodden.com/webdevelopment/table-row-highlighterjs/</link>
		<comments>http://michaelodden.com/webdevelopment/table-row-highlighterjs/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 23:50:22 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[User-experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.michaelodden.com/?p=137</guid>
		<description><![CDATA[This article is about my solution to an issue/request mentioned in my "Usability-tips for your application (Part I)" regarding highlighting corresponding table-rows when keys are pressed.

Take a look at the demo-page and play a little around.

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/' rel='bookmark' title='Permanent Link: table-row-highlighter.js &#8211; now as jQuery-plugin'>table-row-highlighter.js &#8211; now as jQuery-plugin</a></li>
<li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<div class="post-update">
<h2>2009-06-06: Update</h2>
<p>Now also as a jQuery-plugin. <a href="http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/">Blog-post</a>.</p>
</div>
<p>This article is about my solution to an issue/request mentioned in my &#8220;<a title="Usability-tips for your application (Part I)" href="http://blog.michaelodden.com/development/usability-tips-for-your-application-part-i/">Usability-tips for your application (Part I)</a>&#8221; regarding  highlighting corresponding table-rows when keys are pressed.</p>
<p>Take a look at <a href="http://michaelodden.com/labs/js/table-row-highlighter/">the demo-page</a> and play a little around.</p>
<p><a href="http://michaelodden.com/labs/js/table-row-highlighter/table-row-highlighter_0.2.js">Download the script.</a></p>
<h2>Usage</h2>
<pre class="html" name="code">&lt;style type="text/css"&gt;
table tr.highlight td { background-color: yellow; }
&lt;/style&gt;
&lt;script type="text/javascript" src="table-row-highlighter_0.2.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;&lt;!--
// Should be substituted with your own play-nice-by-adding-events-method
window.onload = function() {
	MIO.highlighter.init(
		document.getElementById("mytable"), // Reference to table-node
		0 // Which column to check against, defaults to 0.
	);
}
// --&gt;&lt;/script&gt;</pre>
<p>More details can be found on the demo-page as referenced above.</p>
<h2>What do you think?</h2>
<p>There are a couple of improvements just around the corner, but thought I&#8217;d just share the idea and an example. Feedback are welcome, and if you improve it, please send me the changes so I can update the code.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=137&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs-now-as-jquery-plugin/' rel='bookmark' title='Permanent Link: table-row-highlighter.js &#8211; now as jQuery-plugin'>table-row-highlighter.js &#8211; now as jQuery-plugin</a></li>
<li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/webdevelopment/table-row-highlighterjs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google Wave &#8211; the email-killer?</title>
		<link>http://michaelodden.com/development/google-wave-the-email-killer/</link>
		<comments>http://michaelodden.com/development/google-wave-the-email-killer/#comments</comments>
		<pubDate>Fri, 29 May 2009 17:01:46 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[User-experience]]></category>

		<guid isPermaLink="false">http://blog.michaelodden.com/?p=200</guid>
		<description><![CDATA[Google recently announced their new tool/protocol/invention, Wave. I&#8217;ve seen their presentation and read through most the documentation, and think it will be interesting to see how it will evolve in the future. It&#8217;s currently only available as a sand-boxed version for invited developers, as well as it is possible to ask for access &#8211; I [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Google recently announced their new tool/protocol/invention, <a href="http://wave.google.com/">Wave</a>. I&#8217;ve seen their <a href="http://www.youtube.com/watch?v=v_UyVmITiYQ">presentation</a> and read through most the documentation, and think it will be interesting to see how it will evolve in the future. It&#8217;s currently only available as a sand-boxed version for invited developers, as well as it is possible to ask for access &#8211; I do not have any idea yet of how many there is who will gain access in this &#8220;early&#8221; stage.<span id="more-200"></span></p>
<h2>What is Google Wave?</h2>
<p>Google Wave is simply a way of communicating, with it&#8217;s own protocol, which aims to replace <acronym title="Instant Message">IM</acronym> and e-mail and other means of some-to-some communication. They are trying to remove the limitations of the regular communication-apps to ease the flow (waves) of information. This means that every conversation is a tree of messages, which in turn can contain text-messages, video, documents, images etc, and with control of it&#8217;s own history as well as access-control &#8211; mainly by inviting users to the conversation, but it&#8217;s also possible to delegate access to any sub-trees.</p>
<p>The <a href="http://waveprotocol.org/">protocol</a> is open, making it possible for anyone to build their own systems &#8211; a good decision, i think, by Google as it will have to reach widely to get the share and usage it will have to get to be a success.</p>
<h2>Will it succeed?</h2>
<p>It depends on what they think of as success. In some way or another &#8211; yes. It&#8217;s undoubtedly some good ideas, although little or nothing by itself is revolutionary. Similarly solutions exists already, but just as proprietary software as far as I know, so the idea of making it freely available, easily embeddable and with a good <a href="http://code.google.com/apis/wave/guide.html"><acronym title="Application Programming Interface">API</acronym></a> is one I really like. Not to forget that it all is supposed to run inside a web-browser <img src='http://michaelodden.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>It is not likely that it will be of regular use anytime soon, as it relays heavily on HTML5-features as well as a proposed addition of their own &#8211; although it is these kind of &#8220;killer-apps&#8221; that possible could speed up the adaptment of the specification in the coming UA&#8217;s and the transition to these new UA&#8217;s for the end-users.</p>
<p>But it is yet to tell if it will replace the regular emails and IMs as they are deeply rooted in ways of communication the regular users really can associate with &#8211; sending letters, and talking &#8211; but I personally would love to see it happen!</p>
<p>What do you think? Is it anything new, does it have potential, or is it just old ideas in a new suite?</p>
<h2>Related resources</h2>
<ul>
<li><a href="http://wave.google.com/">Project page</a></li>
<li><a href="http://code.google.com/apis/wave/guide.html">Google Wave <acronym title="Application Programming Interface">API</acronym></a></li>
<li><a href="http://www.youtube.com/watch?v=v_UyVmITiYQ ">Google IO Presentation</a></li>
<li><a href="http://waveprotocol.org/">Google Wave Protocol</a></li>
<li><a href="http://mashable.com/2009/05/28/google-wave-guide/">Google Wave: A Complete Guide</a></li>
</ul><img src="http://michaelodden.com/?ak_action=api_record_view&id=200&type=feed" alt="" />

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/development/google-wave-the-email-killer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usability-tips for your application (Part I)</title>
		<link>http://michaelodden.com/development/usability-tips-for-your-application-part-i/</link>
		<comments>http://michaelodden.com/development/usability-tips-for-your-application-part-i/#comments</comments>
		<pubDate>Mon, 25 May 2009 15:07:20 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[User-experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[skip-intro]]></category>
		<category><![CDATA[tabular data]]></category>
		<category><![CDATA[user-interfaces]]></category>

		<guid isPermaLink="false">http://blog.michaelodden.com/?p=9</guid>
		<description><![CDATA[There are a exponentially growing amount of applications being developed. Some of them vanish at an early stage, while others grow to be quite (and sometimes extremely) popular. What really dazzles me is how sucky many of them (both the popular and the unpopular ones) are regarding how they deal with user-interaction. I&#8217;m not an [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/the-whys-hows-and-whens-of-pagination/' rel='bookmark' title='Permanent Link: The whys, hows and whens of pagination'>The whys, hows and whens of pagination</a></li>
<li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs/' rel='bookmark' title='Permanent Link: table-row-highlighter.js'>table-row-highlighter.js</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>There are a exponentially growing amount of applications being developed. Some of them vanish at an early stage, while others grow to be quite (and sometimes extremely) popular. What really dazzles me is how sucky many of them (both the popular and the unpopular ones) are regarding how they deal with user-interaction. <span id="more-9"></span> I&#8217;m not an expert in user-interaction-design, but as a user of quite a lot of applications (both web and desktop), I do know when something feels cumbersome or just wrong or missing.  About a year ago, I started to write down some of those situations having ambitions about writing something useful. I started writing the headline &#8220;1000 or so tips for your application&#8221;, so although I still have quite some way to go to reach that goal ( <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) I figured I&#8217;d rather start writing about what I&#8217;d already got and take it from there!</p>
<p>Keep in mind that, as I&#8217;m kind of an web-guy, I&#8217;ll mostly keep things related to the web, but much of what I&#8217;m going to write about is easy transferable to the desktop-applications.  And I will also encourage you to mention issues you&#8217;ve encountered as a comment and help me finish my list.</p>
<h3>In this post I&#8217;ll go through:</h3>
<ul>
<li>Make tables sortable</li>
<li>Make sure &#8220;Skip-intro&#8221;-links are visible at once, even before the flash is loaded.</li>
<li>When working with tables, make sure a key-press highlights the first, closest matching row.</li>
</ul>
<h3>Making tables sortable</h3>
<p>In short &#8211; what is the use of organizing tabular data in tables, when you don&#8217;t/won&#8217;t enjoy the full power of it?  When coming to using tables on the web, it should really be up to the UA&#8217;s to implement such features, but until then you&#8217;ll have to do it yourself.  There are mainly two solutions to this case (on the web, that is):</p>
<h4>Backend processing</h4>
<p>Your table-headers are links, with parameters to be sent to the web-server, where your script than sorts the listenings (assuming you have your data in a database-table or an array/hash-table), and then output the correct result.  The query-string sent to the server will probably look something like this: &#8220;field=name&amp;dir=desc&#8221;. The script will then sort the results while taking the parameters into account, and then return a nice dataset ready to be rendered in html.  The downside of this approach is the extra requests to the server and the loading time, which in turn will make the user have to wait. We all know that that&#8217;s not good you bad boy!</p>
<h4>Frontend processing</h4>
<p>This is easily done, if you have used correct markup for your table (thead and th&#8217;s for defining the header-area, and tbody td etc to define the content-part. <a title="Bring on the tables by Roger Johansson" href="http://www.456bereastreet.com/archive/200410/bring_on_the_tables/">Check out this for more info</a>). There are a great amount of javascript-scripts dealing with this issue, although they have their shortcomings. The main functionality of these are to attach javascript-events to the text in the table-headers, and make them sort the table on the corresponding column &#8211; pretty straight-forward and as expected. <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The problem, though, is best imagined through an example:  Let us say you have a search-form, which search through an database of articles. The result is in return displayed in a table, with columns for title and creation-date. The searchresults are also grouped in pages of 20 rows each, so to view the next 20 results you&#8217;ll have to click on the neat little &#8220;page 2&#8243;-link. Let us now stay on page one, and click on the &#8220;creation-date&#8221;-header to sort the results after date of creation. The problem here is that your javascript will (usually) only sort the current page, because &#8211; of course &#8211; it doesn&#8217;t know about the remaining pages. This issue is avoided using backend-processing. It is obviously also possible to work around this, but as a default behaviour &#8211; this is usually the result.</p>
<h3>&#8220;Skip-intro&#8221;-links</h3>
<p>While this is an issue I come across quite often, this is also the the situation with one of the easiest solutions.  The situation:  There is this super-fancy site, with an even more super-fancy intro (usually in Flash), to really show off how cool this site really is. And &#8211; as this super-fancy-site-intro-flash is quite heavy with regards to loading images, animations and sound-effects &#8211; they also have to have a status bar to indicate the progress of loading the intro. All in all fair enough, and the solution for those of use who doesn&#8217;t feel like watching this intro and really just want to get on with the real content, is to give us an &#8220;Skip intro&#8221;-link which in turn will send us (hopefully) directly to the main-site.</p>
<p>So the followup-question is &#8220;<strong>Where do I place this link?</strong>&#8220;, which basically has two answers (and only one of them are actually good): Inside the flash-animation (usually with s a getURL-call), or as an <acronym title="HyperText Markup Language">HTML</acronym>-link located somewhere around the intro (above, underneath, left, right, or even diretly onto it (behold the the magic of <acronym title="Cascading Style Sheets">CSS</acronym>) ).  The good solution here is to locate it in the <acronym title="HyperText Markup Language">HTML</acronym> as an anchor. This is for several reasons: It&#8217;s fetchable for search-engines (allthough some SE&#8217;s by now know <a title="SWF searchability FAQ" href="http://www.adobe.com/devnet/flashplayer/articles/swf_searchability.html">how to read swf&#8217;s</a>), and it&#8217;s in reach already before the flash is loaded. On the other side, the worst solution was by someone who had the link inside the flash, and only visible <strong>after</strong> the progress bar was finished. Great!</p>
<p><strong>In short: place the &#8220;skip intro&#8221;-link in the <acronym title="HyperText Markup Language">HTML</acronym>-code, and keep it visible as long as the intro is running. </strong></p>
<h3>Highlight corresponding cell/row on key press</h3>
<p>This is another tip related to tabular data, and are often directly related to the sortable-part. When working with tabular data, and selecting/sorting a certain column, and pressing a key, ie. the letter &#8220;B&#8221;, please jump directly to the closest matching row.</p>
<p>In short: If the user presses a key, make sure to highlight the corresponding row, depending on which column is highlighted/sorted on. If the user presses &#8220;B&#8221; and the table is sorted on surname, jump to the first row with a surname which starts on &#8220;B&#8221;. If there are no rows with matching surname, then highlight the closest matching one. I.e. the first starting with &#8220;C&#8221; etc.</p>
<p>Perhaps not exceptionally relevant for websites yet, but I do think that as more and more content-heavy applications are being developed for the web, it is something to look into. I&#8217;m working on a JavaScript-solution to this and will post about it a little later. Keep following <img src='http://michaelodden.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Related links</h3>
<ul>
<li><a title="sorttable: Make all your tables sortable" href="http://www.kryogenix.org/code/browser/sorttable/">Sorttable.js &#8211; Making <acronym title="HyperText Markup Language">HTML</acronym>-tables sortable via JavaScript </a></li>
<li><a title="tablesorter - a jQuery plugin" href="http://tablesorter.com/docs/">tablesorter &#8211; a jQuery plugin</a></li>
<li><a href="http://michaelodden.com/webdevelopment/table-row-highlighterjs/">table-row-highlighter.js</a> &#8211; My prototype of abovementioned functionality</li>
</ul>
<h2>More to come</h2>
<p>I&#8217;ve got plenty more to come in upcoming posts,  and would also very much like your input on especially the discussed issues as well as proporsitions for coming cases.</p>
<ul>
<li>Does entry-highlightning on tables after key-press have anything to do with the web?</li>
<li>How can this be implemented in a good fashion?</li>
<li>What other magic is reasonably to accomplish with neatly marked up tables?</li>
</ul>
<ul>
<li><a title="tablesorter - a jQuery plugin" href="http://tablesorter.com/docs/"> </a></li>
</ul><img src="http://michaelodden.com/?ak_action=api_record_view&id=9&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/the-whys-hows-and-whens-of-pagination/' rel='bookmark' title='Permanent Link: The whys, hows and whens of pagination'>The whys, hows and whens of pagination</a></li>
<li><a href='http://michaelodden.com/webdevelopment/table-row-highlighterjs/' rel='bookmark' title='Permanent Link: table-row-highlighter.js'>table-row-highlighter.js</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/development/usability-tips-for-your-application-part-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The whys, hows and whens of pagination</title>
		<link>http://michaelodden.com/development/the-whys-hows-and-whens-of-pagination/</link>
		<comments>http://michaelodden.com/development/the-whys-hows-and-whens-of-pagination/#comments</comments>
		<pubDate>Sun, 24 May 2009 15:04:01 +0000</pubDate>
		<dc:creator>michaelo</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[User-experience]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[toc]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://blog.michaelodden.com/?p=21</guid>
		<description><![CDATA[Why In the most basic form, pagination is best illustrated by books: there&#8217;s a lot of content, and just expanding the sheet would too cumbersome. And then we discovered that by dividing the content into pages, and stacking them we&#8217;d get a lot of content in a handy way, and also making it pretty easy [...]

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<h2>Why</h2>
<p>In the most basic form, pagination is best illustrated by books: there&#8217;s a lot of content, and just expanding the sheet would too cumbersome. And then we discovered that by dividing the content into pages, and stacking them we&#8217;d get a lot of content in a handy way, and also making it pretty easy to navigate. Especially by prepending or appending a table-of-contents (<acronym title="Table of contents">ToC</acronym>).</p>
<p>Web-pagination came, I believe, in the days of modems as a solution to keep the amount of data to download smaller, and then letting it up to the user to decide which parts of the paginated content (s)he&#8217;d check &#8211; although that&#8217;s a pretty basic assumption &#8211; anyhow, that&#8217;s not of the scope of this post.</p>
<h2>The problem</h2>
<p>What I see all too often is something like this:</p>
<div id="attachment_114" class="wp-caption alignleft" style="width: 229px"><img class="size-full wp-image-114 " title="Pagination at ALA" src="http://blog.michaelodden.com/wp-content/uploads/2009/05/picture-2.png" alt="Typical example of navigation of paginated content" width="219" height="94" /><p class="wp-caption-text">Example of common pagination</p></div>
<p>The problem with this approach, even though it&#8217;s the most common one, is that the links to the different pages gives no indication of what you&#8217;ll find there. Yes, if you&#8217;ve performed a search, then you&#8217;ll know that you&#8217;ll find even more results, and as it probably is sorted by relevance you know that the entries will be less and less relevant (probably) the further you go. But what then if the decrease of relevance between each entry isn&#8217;t linear? Then entries in page 10 won&#8217;t no longer be half as relevant as those in page 5, etc.</p>
<div id="attachment_113" class="wp-caption alignleft" style="width: 318px"><img class="size-full wp-image-113 " title="Typical example of navigation of paginated content" src="http://blog.michaelodden.com/wp-content/uploads/2009/05/picture-1.png" alt="Typical example of navigation of paginated content" width="308" height="25" /><p class="wp-caption-text">Another example of common pagination - guess from where!</p></div>
<p>In books, pagination is practical mainly in cooperation with the <acronym title="Table of contents">ToC</acronym>, and also for keeping track of relevant pages &#8211; like which page something specific is written, or the current position of your progress. On the web we usually just throw in pages &#8211; and skipping the <acronym title="Table of contents">ToC</acronym> &#8211; leaving it up to the user to manually search.</p>
<p>This is again no problem for those who are reading the entries from start to end &#8211; but rather for those who are looking for something specific.</p>
<h2>Alternatives &#8211; and when and how to use pagination</h2>
<h3>Dynamic filters</h3>
<div id="attachment_119" class="wp-caption alignleft" style="width: 160px"><a href="http://blog.michaelodden.com/wp-content/uploads/2009/05/amazon_filters.png"><img class="size-thumbnail wp-image-119 " title="Filters from Amazon.com" src="http://blog.michaelodden.com/wp-content/uploads/2009/05/amazon_filters-150x150.png" alt="Example of filters on search-result" width="150" height="150" /></a><p class="wp-caption-text">Screenshot from Amazon.com&#39;s filters - click for full image</p></div>
<p>Filters are a great way to allowing the user to skip those entries he assumes is unrelevant to the current search. Webshops, catalogs and similar sites are now becoming pretty good at using this approach &#8211; just take a look at Amazon.com&#8217;s approach (image). Here I&#8217;ve searched for <a href="http://www.amazon.com/Blues-Music-Video-Concerts-DVD/b/ref=bw_ab_163420_4?ie=UTF8&amp;node=511422&amp;pf_rd_p=236911101&amp;pf_rd_s=browse&amp;pf_rd_t=101&amp;pf_rd_i=163420&amp;pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_r=1WCZ0H4107TJ201Q6Y4G">blues-<acronym title="Digital Versatile Disc">DVD</acronym>&#8217;s</a>, and is presented with relevant filters depending on the current result. I can ie choose to just see entries from 1960 &#8211; 1969, and skip out all those who aren&#8217;t english as well. This reduces it down to sub-13 from 914 &#8211; great! Now I won&#8217;t need to browse among 76 pages anymore.</p>
<p>To integrate a good implementation of this you&#8217;ll have to find out what attributes of the entries are reasonably to filter by (remember to take into account the demgraphics of the users going to use this), and make sure your solution present this in a good way.</p>
<p>It will usually be reasonable to allow multiple filters (I want english entries from the 1960&#8242;s), but in some situations singe-filter-support will suffice.</p>
<p>Other sites using this technique: <a href="http://finn.no/">finn.no (no)</a>, <a href="http://ebay.com/">ebay.com</a>, <a href="http://www.gulesider.no/tk/">telefonkatalogen.no (no)</a></p>
<h3>Table of contents</h3>
<p>This is probably mostly relevant for web-books, but elements of this can also be integrated into other solutions and situations. It will usually be used instead of dynamic filters where the content is linearly continuated in a given order &#8211; instead of some arbitrary sorting.</p>
<p>Web-books, online documentation etc is natural places where this is applicable.</p>
<h3>Informative links</h3>
<div id="attachment_120" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.michaelodden.com/wp-content/uploads/2009/05/paginated_miofw.png"><img class="size-medium wp-image-120 " title="Screenshot from an article-listening in my framework" src="http://blog.michaelodden.com/wp-content/uploads/2009/05/paginated_miofw-300x48.png" alt="" width="300" height="48" /></a><p class="wp-caption-text">Screenshot from my framework which takes care of descriptive links depending field and sort-ordering - with norwegian i18n. The arrow (not included in screenshot) is pointing at &quot;3&quot; and the UA is accordingly displaying the information.</p></div>
<p>Screenshot from my framework which takes care of descriptive links depending field and sort-ordering &#8211; with Norwegian i18n.There will probably always be some situations where you have to use pagination, and often will dynamic-filtering be a little overkill. The solution here can be to add information to the title-attribute of the link which says something about what you&#8217;ll find there. For example, if I have a result-set sorted by dates ascending, then a link to page might have the following pattern for it&#8217;s title-attribute: &#8220;Articles from &lt;fromdate&gt; to &lt;todate&gt;&#8221;. This way you&#8217;ll give the user an indication of what to find at that page, without having to check first.</p>
<h2>Related reading</h2>
<ul>
<li><a href=" http://en.wikipedia.org/wiki/Pagination">Wikipedia &#8211; Pagination</a></li>
<li><a href=" http://en.wikipedia.org/wiki/Table_of_contents">Wikipedia &#8211; Table of contents</a></li>
<li><a href="http://www.designvsart.com/blog/2008/06/04/a-guide-to-perfect-pagination/ ">Design VS Art Blog &#8211; A guide to perfect pagination</a></li>
</ul>
<h2>Feedback</h2>
<p>This is how I feel about the issue of organising larger amounts of data, and making it easy for users to find whatever is relevant. I&#8217;m sure there is situations I havent&#8217; covered here, and would like your comments on how this can be improved to give our users a best possible user-experience &#8211; and with that giving our clients a more valuable website.</p>
<ul>
<li>Is the title-attribute of anchors the best / right way to display information for informative links?</li>
<li>Are there other ways then filters, <acronym title="Table of contents">ToC</acronym>&#8217;a and informative links that can solve the problems?</li>
<li>What other places can <acronym title="Table of contents">ToC</acronym>&#8217;s be a good alternative?</li>
</ul>
<p>Your feedback is very much appreciated.</p><img src="http://michaelodden.com/?ak_action=api_record_view&id=21&type=feed" alt="" />

<h2>Related posts:</h2><ul><li><a href='http://michaelodden.com/development/usability-tips-for-your-application-part-i/' rel='bookmark' title='Permanent Link: Usability-tips for your application (Part I)'>Usability-tips for your application (Part I)</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://michaelodden.com/development/the-whys-hows-and-whens-of-pagination/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
