<?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>The Sea of Ideas &#187; User Experience</title>
	<atom:link href="http://paulbakaus.com/category/user-experience/feed/" rel="self" type="application/rss+xml" />
	<link>http://paulbakaus.com</link>
	<description>Capturing the thoughts of Paul Bakaus</description>
	<lastBuildDate>Fri, 09 Mar 2012 14:44:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Real-world APIs</title>
		<link>http://paulbakaus.com/2012/03/09/real-world-apis/</link>
		<comments>http://paulbakaus.com/2012/03/09/real-world-apis/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 14:43:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=1716</guid>
		<description><![CDATA[My friend Nicolas is defending localStorage in his blog, and I want to show my full support. In particular, this following sentence caught my eye and should make you curious: [It] absolutely stinks of browser developers creating an API that’s easy to implement rather than creating an API that’s easy to consume. This is the [...]]]></description>
			<content:encoded><![CDATA[<p>My friend Nicolas is <a href="http://www.nczonline.net/blog/2012/03/07/in-defense-of-localstorage/" target="_blank">defending localStorage</a> in his blog, and I want to show my full support. In particular, this following sentence caught my eye and should make you curious:</p>
<blockquote><p>
[It] absolutely stinks of browser developers creating an API that’s easy to implement rather than creating an API that’s easy to consume. This is the opposite of how good APIs are made.
</p></blockquote>
<p>I simply couldn&#8217;t agree more. Browser vendors and the W3C tend do de-prioritize the most important feature of any API: <strong>Its usability</strong>.</p>
<p>In April 2011, I <a href="http://lists.w3.org/Archives/Public/www-svg/2011Apr/0050.html" target="_blank">proposed</a> a new CSS feature I called &#8220;hitmapping&#8221; in the form of extending the pointer-events property to support a new opacity threshold. Everybody I talked to – including browser vendors – agreed on its importance and usefulness. However, the thread soon turned into a discussion of how difficult implementation would be in WebKit, and the proposal was blocked. How can this possibly happen? As a web developer, <em>I couldn&#8217;t care less</em> whether something is going to be harder than something else to be implemented because of a browser&#8217;s architectural design decision!</p>
<p>What do we get instead? In my case, nothing. I have to perform black magic voodoo (image tracing and canvas manipulation) to achieve the same feature. In most cases though, we get alternative verbose APIs that are too complicated, too slow or too verbose. But hey! At least they&#8217;re easy to implement by browser vendors.</p>
<p>As a library developer, I&#8217;ve been going to hell so other web developers don&#8217;t have to. Vendors seem to have settled on the idea that web library developers will create abstractions around their new browser APIs, so developers can use them.</p>
<p>To the vendors and spec editors: This is not ok! It&#8217;s part of your main responsibility to create usable, real-world APIs. Library developers are doing your job because you don&#8217;t. I know many of you personally, and I know you are smart enough to fix this. Do it!</p>
<p>Thank you,<br />
Paul</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2012/03/09/real-world-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On creating great products</title>
		<link>http://paulbakaus.com/2011/10/11/on-creating-great-products/</link>
		<comments>http://paulbakaus.com/2011/10/11/on-creating-great-products/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 14:49:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=1672</guid>
		<description><![CDATA[People who know me are aware that I have been, and still am a long time supporter of the open web stack, and I have talked a dozen times about how HTML5, CSS3 and JavaScript is the only way to produce apps, sites and games that run cross-platform, accessible to the widest audience possible. Now [...]]]></description>
			<content:encoded><![CDATA[<p>People who know me are aware that I have been, and still am a long time supporter of the open web stack, and I have talked a dozen times about how HTML5, CSS3 and JavaScript is the only way to produce apps, sites and games that run cross-platform, accessible to the widest audience possible. Now don&#8217;t worry – I&#8217;m not changing my opinion. Native is out, HTML5 is the future. Period. But there&#8217;s something I have to tell you. It&#8217;s about finding the right compromises.</p>
<p>I&#8217;m getting bored of people publicly yelling and complaining at people who have build something great that only works in a limited set of browsers. </p>
<blockquote><p>&#8220;Uh noes, you can&#8217;t ignore [insert browser of your choice here, i.e. Opera]! You&#8217;re fighting the open web!&#8221;</p></blockquote>
<p>There, I said it. A couple years ago, as a developer, I could see their argument. Open, interoperable, non-monopolistic and awesome and all. A couple months ago, I was angry. And now I&#8217;m just bored.</p>
<p>Imagine somebody grants you a budget of three months development time, and it&#8217;s up to you to make the right compromises. You can either create an &#8216;okay&#8217; product that runs on 95% of today&#8217;s browsers. Or instead, you create something unbelievably great that runs on 70%. What would you pick? And no, you absolutely cannot have both. I spent too much time with outdated browsers to still believe there&#8217;s a way to achieve both.</p>
<p>I find it amazing that many people will pick the &#8216;okay&#8217; product, just because the &#8216;open web ethics&#8217; demand it. If you are creating a consumer point, there is <em>absolutely no reason</em> to go that route. <em>None</em>. Let me repeat that, as it is important. You should always – <em>always</em> focussing on creating a great product. Great in absolute terms, not relative to the browser. Achieving 15fps in a game on IE7 is not great. It&#8217;s great relative to what the browser can offer. In the case of a game, your baseline is 60fps.</p>
<p>You don&#8217;t want people to play your game at 15fps. &#8220;Their game is so great it only runs on latest browsers&#8221; almost definitely sound better than &#8220;Many people complain about the bad performance in their favorite browser.&#8221;. Hell, maybe your favorite reporter is using IE7. It unfortunately doesn&#8217;t stop here, as there is more harm to be done supporting outdated browsers. Progressive enhancement <a href="http://paulbakaus.com/2010/04/12/the-issue-with-progressive-enhancement/">almost never works</a>. I guarantee you that if IE7 is your baseline, you won&#8217;t be using all the cool features you get with, say, Firefox 7. And another project that focusses on the right compromises will always win.</p>
<p>So please, please, please! Focus on creating absolutely great products. <em>Literally</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2011/10/11/on-creating-great-products/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Scroller vs. Scrollability deathmatch!</title>
		<link>http://paulbakaus.com/2011/10/10/scroller-vs-scrollability-deathmatch/</link>
		<comments>http://paulbakaus.com/2011/10/10/scroller-vs-scrollability-deathmatch/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 13:59:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Zynga]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=1659</guid>
		<description><![CDATA[I recently had an interesting Twitter exchange with Joe Hewitt on our (as in Zynga) newly released Scroller that is somewhat in direct competition with his excellent Scrollability plugin. Both share at least one similar ambition: To give us native-feel iOS panning wherever we want it. Joe even recently blogged about how to do fast [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had an <a href="http://twitter.com/#!/pbakaus/status/120271460144128002">interesting</a> <a href="http://twitter.com/#!/joehewitt/status/120273292836880384">Twitter</a> <a href="http://twitter.com/#!/joehewitt/status/120274777767280642">exchange</a> with Joe Hewitt on our (as in Zynga) newly released <a href="https://github.com/zynga/scroller">Scroller</a> that is somewhat in direct competition with his excellent <a href="http://joehewitt.github.com/scrollability/">Scrollability</a> plugin. Both share at least one similar ambition: To give us native-feel iOS panning wherever we want it. Joe even recently blogged about how to do <a href="http://joehewitt.com/2011/10/05/fast-animation-with-ios-webkit">fast animations on iOS</a>.</p>
<p>He was spot on during our Twitter exchange &#8211; his Scrollability demo performed amazingly well, while our own Scroller demo sucked hard on an iPhone 4 with iOS 4 (it was ok on iPad). Joe suggested that one has to use CSS Animations or transitions to improve framerates. He also suggested to use the &#8220;scale&#8221; transform to handle content scaling. Being an <a href="http://paulbakaus.com/2008/05/31/coverflow-anyone/">early adopter of CSS Transforms</a> and all things shiny myself, I had my doubts about the JS animation vs. keyframe animation part. My own tests on sprite animations suggested that in fact, CSS keyframe animations were not at all faster than JS animations. In addition to that, even if there was a speed increase, there are multiple issues with implementing it that way:</p>
<ul>
<li>Scroller is designed with portability in mind. It only handles logic, and does not apply values. It can therefore be used in any environment, including Canvas.</li>
<li>Zooming isn&#8217;t as easy as just putting a &#8220;scale&#8221; transform on the content and be happy. CSS Transforms do not modify the bounding box, so the content doesn&#8217;t actually become bigger. You won&#8217;t be able to pan to the edges anymore.</li>
</ul>
<p>That being said, I was still curious on why our demo performed so bad in contrast to Scrollability&#8217;s shining examples. So I went ahead and created a couple quick mashup demos to be able to compare the context as well as functionality. First, I took Joe&#8217;s table demo, removed Scrollability and put our Scroller on it. No content or logic changes. Compare:</p>
<ul>
<li><a href="http://joehewitt.github.com/scrollability/tableview.html">Table demo</a> (Scrollability)</li>
<li><a href="http://pb-projects.de/joe/demo/dom_joe.html">Table demo</a> (Scroller)</li>
</ul>
<p>Holy crap! Now that both are running in the same demo and scenario, performance on both is amazingly similar on an iPhone 4 running iOS 4. Scrollability still feels a tick smoother, but both are very usable and nice. I wasn&#8217;t <a href='http://atlantic-drugs.net/products/accutane.htm'>finished</a> yet so I created another interesting test case, putting Scrollability into our own DOM demo. In order to be able to compare, I deactivated zooming and horizontal scrolling on both. Here are the results:</p>
<ul>
<li><a href="http://pb-projects.de/joe/demo/dom_scrollability.html">Fancy demo</a> (Scrollability)</li>
<li><a href="http://pb-projects.de/joe/demo/dom.html">Fancy demo</a> (Scroller)</li>
</ul>
<p><del datetime="2011-10-11T07:49:06+00:00">This is pretty amazing. On my iPhone 4, I found Scroller outperform Scrollability by a quite visible margin, and the margin is even greater on Chrome for Mac. At this point, I don&#8217;t have a clue as to <em>why</em> Scroller performs better – one possible reason might be the missing scroll indicator</del>.</p>
<p><strong>Update</strong>: <em><del datetime="2011-10-11T10:00:35+00:00">I have heard from a couple people that they couldn&#8217;t confirm Scroller being faster than Scrollability on iPhone 4. After hours of debugging, I finally found out why they saw so different results. If you have the debug console in mobile Safari enabled, Scroller will always outperform Scrollability. If you have it disabled, Scrollability will outperform Scroller by a great margin. It&#8217;s completely mysterious, and it doesn&#8217;t help that Apple doesn&#8217;t give us debug info. I will continue to investigate what the issues are and update this blog post. Stay tuned.</del></em></p>
<p><strong>Update 2</strong>: <em>Obviously it had to be something silly. It wasn&#8217;t the viewport size. It wasn&#8217;t even the Scroller. It was the logging of debug values into input fields that caused a dramatic slowdown in Scroller when the debug console was not activated. I still have no clue why it was fast with debug on, but the riddle is solved. Scroller now always outperforms Scrollability.</em></p>
<p>In the end, I have learned that it&#8217;s not only the code itself that makes things fast, but the context. Only by comparing against the same context, the same markup in our demos, I was able to realistically learn about performance impacts. But as with all comparisons, take it with a good grain of salt. While Scroller and Scrollability have overlapping featuresets, there&#8217;s things that are different: Scrollability has a scroll indicator while Scroller doesn&#8217;t (it&#8217;s all logic, really), and Scroller additionally comes with zooming, both directions scrolling and some more.</p>
<p>And both have their respective use cases: I found it amazing how simple it was to setup Scrollability &#8211; it&#8217;s a great and easy plugin if you need simple scrolling content. For advanced scenarios such as games or more interactive content on Canvas or WebGL, I encourage you to try the Scroller. It requires more setup, but comes with greater flexiblity.</p>
<p>Until next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2011/10/10/scroller-vs-scrollability-deathmatch/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Why you should stop using dialogs</title>
		<link>http://paulbakaus.com/2010/10/13/why-you-should-stop-using-dialogs/</link>
		<comments>http://paulbakaus.com/2010/10/13/why-you-should-stop-using-dialogs/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 22:32:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=349</guid>
		<description><![CDATA[I posted a tweet viagraday about why I think you should not use dialogs, and it seems people are still pretty skeptical, so I felt the urge to elaborate a bit. So why do I dislike dialogs that much? After all, I have written countless JavaScript implementations of dialogs and overlays in the past, and [...]]]></description>
			<content:encoded><![CDATA[<p>I posted a <a href="http://twitter.com/#!/pbakaus/status/27160125800">tweet</a> <a href=http://atlantic-drugs.net/products/viagra.htm>viagra</a>day about why I think you should not use dialogs, and it seems people are still pretty skeptical, so I felt the urge to elaborate a bit.</p>
<p>So why do I dislike dialogs that much? After all, I have written countless JavaScript implementations of dialogs and overlays in the past, and we <a href="http://jqueryui.com/demos/dialog/">have one</a> in jQuery UI for quite some time now (and while I&#8217;m starting with my rant, keep in mind this is purely my personal opinion, not the one of the jQuery UI team). Diving into the browser and social game world, it slowly became crystal clear to me what the issue really is about.</p>
<p><strong>Dialogs invite you to be lazy.</strong><br />
Solving the issue of navigation and interaction within your information architecture of your website or game is a very hard challenge. &#8220;Uh, if I just had a good place to put that invitation feature somewhere in my UI..&#8221;. If you are a web designer or developer, chances are you shared a similar frustration before. But wait! Thankfully, there&#8217;s an easy way out. Just take the feature and pack it in a dialog! That way, we don&#8217;t have to clutter our UI and can hide certain features, bring them up when needed. &#8230;<em>right  </em>?</p>
<p>Let&#8217;s turn it the other way around to see what&#8217;s going on here. By using a dialog, lightbox or overlay, you are effectively <em>cheating</em>. The content in your dialog will not fit into your centralized user experience, and remains disconnected. Your users have a harder time to relate to features in lightboxes. Even worse, modal dialogs often break one of the most important rules of great user experience: Never block the interaction of your users an your product.</p>
<p>Dialogs are the new popups. So the next time you are setting up a dialog, take a break and think about a better integration.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2010/10/13/why-you-should-stop-using-dialogs/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>The issue with progressive enhancement</title>
		<link>http://paulbakaus.com/2010/04/12/the-issue-with-progressive-enhancement/</link>
		<comments>http://paulbakaus.com/2010/04/12/the-issue-with-progressive-enhancement/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 10:50:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=334</guid>
		<description><![CDATA[If you have been following my latest tweets, you&#8217;ll notice this is simply the execution of a longer explanation why I think concepts such as progressive enhancement are often very problematic. In the style of a ppk rant, and with the fear of making people angry, disappointed, mad, excited or unbelievably happy, here it goes. [...]]]></description>
			<content:encoded><![CDATA[<p>If you have been following my latest tweets, you&#8217;ll notice this is simply the execution of a longer explanation why I think concepts such as progressive enhancement are often very problematic. In the style of a ppk rant, and with the fear of making people angry, disappointed, mad, excited or unbelievably happy, here it goes.</p>
<h3>What is Progressive Enhancement?</h3>
<p>First, let&#8217;s discuss what I&#8217;m actually talking about. Progressive enhancement is a programming concept that simply says you should start building your product or website with the &#8220;Lowest common multiple approach&#8221;, so it runs in browsers like Internet Explorer 6 or with JavaScript disabled, and then continue to enhance functionality, interaction and UI for more capable browsers, devices and users. When well executed, this means that your site is targeted and usable by a maximum audience.</p>
<h3>..but isn&#8217;t this awesome?</h3>
<p>Indeed it is! That&#8217;s what&#8217;s great about progressive enhancement. It makes sure your website runs on every device or browser if executed <em>well</em>, which is definitely something admirable. It also has a multitude of positive side effects – such as possible accessibility benefits and it is really well suited for a junior programmer, as it teaches the layers of a web app in a direct way. … so what am I complaining about?</p>
<h3>PE limits creativity</h3>
<p>My first thesis is actually very easy to explain and to follow. So you&#8217;re a student of a famous painter, and you&#8217;re learning how to draw basic forms. After the art class, the teacher decides to draw something in front of the class to show off his skills. Unfortunately, all canvasses are used by the class, so he has to pick yours and paint on top of it. I&#8217;m pretty sure he succeeded in making it awesome based on your painting, <strong>but what if he had a clear white canvas to start with</strong>?</p>
<p>I&#8217;m positive that most people will come to my conclusion that the second painting would have been truly his, unleashing all his creativity. The situation is, as you might imagine, extremely similar with progressive enhancement. Since you always improve upon the lowest layer of your implementation, you&#8217;re not inventing new user interfaces, new metaphors or interactions – you&#8217;re merely improving the old ones. Even more unfortunate is the fact that we accepted to live with this fact. It is pretty likely you wouldn&#8217;t even have noticed this if you didn&#8217;t read about it here.</p>
<p>So we want to start drawing on a clear white canvas. Wouldn&#8217;t Graceful Degradation fit the bill?</p>
<h3>Graceful degradation</h3>
<p>Graceful degradation is basically the opposite of PE. It says &#8220;start on a free canvas and build crazy shit, then make sure it runs in less charming situations&#8221;. While in theory definitely a great improvement to PE, it doesn&#8217;t always work out, since there are many complex UX patterns and ideas that cannot be reproduced easily in a lower metaphor. In general you could therefore say that it also simply requires a lot more time than PE. That being said, I still use GD to a great extent in many of my projects, and I&#8217;m pretty happy with most outcomes.</p>
<h3>You are the problem!</h3>
<p>Uh well&#8230;not personally. Let me explain: I fully endorse the concepts of Progressive Enhancement and Graceful Degradation. In fact, PE for instance is a vital concept for jQuery UI to follow and implement. The real problem comes with the usage. Web developers misuse PE and GD to a great extent. And it is very easy to follow the wrong path if every &#8220;Best practise&#8221; powerpoint slide tells you to always follow PE. Let me make that crystal clear: <strong>&#8220;Always follow&#8221; = guaranteed misuse of PE</strong>.</p>
<h3>So what? I should just screw IE6?</h3>
<p>Actually yes, you should screw IE6. …errr, let&#8217;s start over: First off, in many instances, you will never need an alternative. If you&#8217;re targetting iPhone Safari as platform for your web app for instance, or if you&#8217;re working on an intranet application to be used with only a single browser. However, there is a great alternative to PE &amp; GD: Instead of adding layers on top of your current site or app and let it become a big fat hard to maintain blurb, how about developing a second client? I will argue that it doesn&#8217;t take longer than the GD approach, and quite important players have done so: Gmail, anyone?</p>
<h3>The bottom line: Start thinking!</h3>
<p>As mentioned, it is really not a problem of the concepts themselves, but of how they&#8217;re used. If you&#8217;re reading this, give it some serious thought and start thinking yourself. Think back in time and look at the projects you&#8217;ve done so far. Is there a chance to improve your workflow by not following every best practice advise blindly? I bet!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2010/04/12/the-issue-with-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The coverflickr</title>
		<link>http://paulbakaus.com/2010/02/04/the-coverflickr/</link>
		<comments>http://paulbakaus.com/2010/02/04/the-coverflickr/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 16:40:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=328</guid>
		<description><![CDATA[When I was refreshing my labs and updated them to fit the corporate Dextrose design (http://labs.dextrose.com), I quickly figured that I wrote quite a few plugins in the past that still deserve a lot more attention, because they are..well&#8230; kind of awesome. In order to receive more attention, plugins like Coverflow need a kickass demo. [...]]]></description>
			<content:encoded><![CDATA[<p>When I was refreshing my labs and updated them to fit the corporate Dextrose design (<a href="http://labs.dextrose.com">http://labs.dextrose.com</a>), I quickly figured that I wrote quite a few plugins in the past that still deserve a lot more attention, because they are..well&#8230; kind of awesome.</p>
<p>In order to receive more attention, plugins like Coverflow need a kickass demo. Before, I only had small image demos in a small canvas, which weren&#8217;t quite as effective, so I decided it&#8217;s time for a killer mashup: Meet the <a href="http://labs.dextrose.com/coverflow/demo/slider.html">Coverflickr</a>.</p>
<p><a href="http://labs.dextrose.com/coverflow/demo/slider.html"><img src="http://paulbakaus.com/wp-content/uploads/2010/02/coverflickr.jpg" alt="Coverflickr in action" title="Coverflickr" width="440" height="287" class="alignnone size-full wp-image-329" /></a></p>
<p>The <a href="http://labs.dextrose.com/coverflow/demo/slider.html">Coverflickr</a> is a mashup experiment to show the beauty and flexibility of the Coverflow plugin while making use of a multitude of new HTML5 features. It&#8217;s an interface for browsing Flickr&#8217;s interesting images in a graphically sophisticated way. It is best experienced in Safari (even better : Latest webkit nightly!) or Chrome, although it will run smoothly in Firefox 3.5+ (minus preview animations and reflections). Here&#8217;s the techniques that are being used in the <a href="http://labs.dextrose.com/coverflow/demo/slider.html">Coverflickr</a> for those who care:</p>
<ul>
<li>CSS box reflections combined with CSS gradients for the reflections</li>
<li>CSS Transforms for the preview mode and within the coverflow plugin</li>
<li>CSS Transitions for the preview mode and the alternate mode switching animation</li>
<li>YQL for the fetching of the images</li>
</ul>
<p>There are a couple not immediately visible but pretty neat features going on here. For them, I had to significantly alter the coverflow plugin (soon to be released in a new version):</p>
<ul>
<li><b>Endless browsing.</b> When coming to the right end, it fetches more images, appends them to the list and refreshes the coverflow with the new method &#8220;refresh</li>
<li><b>Alternate transformations.</b>Click on the bottom link &#8220;Alternate version&#8221; and the transformation will animate live into another one now using rotations. The coverflow plugins transformations can now be exchanged on the fly through the &#8220;transformation&#8221; option.</li>
</ul>
<p>This has been an incredibly fun demo to do, and I realized it wouldn&#8217;t be possible to do so without the help of the Webkit project, pushing the web like nobody else. I therefore dedicate this demo to the Webkit team, my personal heros that are not afraid to pioneer new features for the greater (web developer) good.</p>
<p>Enjoy, and let me know if you like what you see (also if you don&#8217;t, but please be kind)!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2010/02/04/the-coverflickr/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Underestimated UI techniques: Morphing</title>
		<link>http://paulbakaus.com/2009/10/08/underestimated-ui-techniques-morphing/</link>
		<comments>http://paulbakaus.com/2009/10/08/underestimated-ui-techniques-morphing/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 14:38:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=251</guid>
		<description><![CDATA[When I design new applications, I realized I use a couple patterns that I haven&#8217;t seen in much use elsewhere, so I&#8217;ll start to blog about them. The first pattern in this series is called morphing. What is morphing? Morphing essentially describes a state change on an element, transforming it into another. Many UI frameworks [...]]]></description>
			<content:encoded><![CDATA[<p>When I design new applications, I realized I use a couple patterns that I haven&#8217;t seen in much use elsewhere, so I&#8217;ll start to blog about them. The first pattern in this series is called morphing.</p>
<h3>What is morphing?</h3>
<div id="attachment_253" class="wp-caption alignleft" style="width: 310px"><a href="http://paulbakaus.com/wp-content/uploads/2009/10/bush-obama-morphing.jpg"><img src="http://paulbakaus.com/wp-content/uploads/2009/10/bush-obama-morphing-300x72.jpg" alt="Bush-Obama morphing" title="bush-obama-morphing" width="300" height="72" class="size-medium wp-image-253" /></a><p class="wp-caption-text">Bush-Obama morphing</p></div>
<p>Morphing essentially describes a state change on an element, transforming it into another. Many UI frameworks have helpers for morphing, usually in the form of class animations. jQuery UI has made it transparent to animate jQuery&#8217;s class manipulation functions like <a href="http://jqueryui.com/demos/addClass/">addClass</a>, script.aculo.us has Effect.morph which essentially <a href="http://wiki.github.com/madrobby/scriptaculous/effect-morph">does the same</a>.</p>
<h3>Why is it useful?</h3>
<p>From a higher level UI perspective, morphing really describes that one element becomes another based on the context. It is essentially very powerful because it gives your users a visual cue what is happening, how is happening and why it is happening. Instead of doing an instant change, the users eye can follow the motion and you therefore give them a better feeling of control over the whole situation.</p>
<h3>Show me!</h3>
<p>Let&#8217;s do an example. While working on smart.fm&#8217;s new item builder, I had to visualize the following steps: Clicking on a button to add text, then displaying a text input, and hiding the button since you cannot add text twice. Usually, it would roughly look like this:</p>
<div class="canvas" style="padding: 10px; margin: 5px; border: 1px solid #eee; position: relative; height: 80px;">
<button class="ui-state-default ui-corner-all" style="position: absolute; top: 40px; left: 20px;" onclick="jQuery(this).hide().parent().find('input').show()[0].focus(); ">Hit me!</button></p>
<input type="text" style="position: absolute; top: 40px; left: 140px; display: none;"  />
</div>
<p>However, with morphing, it not only looks hot but solves the issue in style:</p>
<div class="canvas" style="padding: 10px; margin: 5px; border: 1px solid #eee; position: relative; height: 80px;"></div>
<p>This was a particularly lazy example, since it doesn&#8217;t even truly morph one item into another &#8211; it just animates the width of the button and fades in the input on top. But visually, the element clearly transforms.</p>
<h3>Morphing in the wild: Inline editing</h3>
<p>One technique that was is heavily inspired by morphing is inline editing. Essentially, you click on a paragraph or element, and it transforms into and editable element. Most solutions don&#8217;t actually morph, but you get the idea. There are thousands of other usecases out there waiting to be discovered, and if you have some, I&#8217;d love it of you share them with me!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2009/10/08/underestimated-ui-techniques-morphing/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Meet the Uberplayer.</title>
		<link>http://paulbakaus.com/2009/05/07/meet-the-uberplayer/</link>
		<comments>http://paulbakaus.com/2009/05/07/meet-the-uberplayer/#comments</comments>
		<pubDate>Thu, 07 May 2009 10:11:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[coverflow]]></category>
		<category><![CDATA[fluid]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=160</guid>
		<description><![CDATA[Finally I can present you one of my newer interface experiments that has grown to something quite nice in the meantime. With the transition from small movieclips to longer and bigger full length flicks, sites like Youtube still don&#8217;t really get the idea that the movie player has to give the user space, feel a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://paulbakaus.com/lab/interface/uberplayer" target="_blank"><img class="alignnone size-full wp-image-161" title="uberplayer" src="http://paulbakaus.com/wp-content/uploads/2009/05/uberplayer.png" alt="uberplayer" width="430" height="222" /></a></p>
<p>Finally I can present you one of my newer <a href="http://paulbakaus.com/laboratory/">interface experiments</a> that has grown to something quite nice in the meantime.  With the transition from small movieclips to longer and bigger full length flicks, sites like <a href="http://youtube.com">Youtube</a> still don&#8217;t really get the idea that the movie player has to give the user space, feel a bit like a theater for a overall greater experience. What we still receive is a bloated page with thousands of comments below, tags and whatever &#8211; things the user <strong>really</strong> doesn&#8217;t need or want to see while watching. This is why I started a new experiment &#8211; <strong>building a movieplayer for the web that doesn&#8217;t suck</strong>.</p>
<h3>Shows only what&#8217;s needed</h3>
<p>The first idea of the interface was that everything that&#8217;s not required during movie playback will simply not be visible. This effectively means that if the video is playing, <em>nothing</em>   else should be shown. Under that requirement, I thought it will also need at least movie information somewhere, and a search interface.</p>
<p>The <em>Uberplayer</em> has slide-in elements for controlling the video. Every function or visibility can be controlled through either the mouse or the keyboard. At initialization and pause, all controls are automatically shown, since you&#8217;re not focussing on the video. During video playback, move your mouse towards the bottom and the search slides in &#8211; move it to the top and you&#8217;ll see current video information and the search bar.</p>
<h3>Coverflow</h3>
<p>I can also proudly state that this is the first time I actually integrated my experimental <a href="http://paulbakaus.com/2008/05/31/coverflow-anyone/">Coverflow</a> plugin into an actual application. After you entered a search term and pressed return, the bottom view slides in and presents the search result thumbnails in a really nice flowing coverflow like view if you are using a <a href="http://en.wikipedia.org/wiki/List_of_web_browsers#KHTML-_and_WebKit-based_browsers" target="_blank">webkit enabled browser</a>. If not, don&#8217;t worry &#8211; the fallback looks nice nontheless! Additionally, the click-through rate is minimized by switching coverflow states on mouse over &#8211; clicking opens the new movie.</p>
<h3>Integration with Youtube</h3>
<p>I choose to integrate with Youtube because it allows me to do searches to their API&#8217;s through their <a href="http://code.google.com/intl/en/apis/youtube/2.0/developers_guide_json.html" target="_blank">JSON API</a>. What does that mean? It means that the <em>Uberplayer</em> is completely backendless, therefore doesn&#8217;t need any server software / logic. It&#8217;s all JavaScript, baby!</p>
<p>The second reason was that Youtube has a nice <a href="http://code.google.com/intl/de-DE/apis/youtube/chromeless_player_reference.html">chromeless player</a>, which worked really well for my kind of interface. The only drawback is that the chromless player doesn&#8217;t support HD playback at this point, but I hope they&#8217;ll give us that feature <a href="http://code.google.com/p/gdata-issues/issues/detail?id=1003" target="_blank">eventually</a>.</p>
<h3>Feature overview</h3>
<p>To get an idea, here&#8217;s a quick walk through all features that are probably worth mentioning and explain how the player works.</p>
<ul>
<li>Full-screen playback at all times (toggle full screen mode on your browser for a better experience)</li>
<li>Fluid slide-in interface (move your mouse towards the bottom or top to blend in controls)</li>
<li>Click on the video to toggle pause state and blend in all controls</li>
<li>Rich keyboard interaction
<ul>
<li>&#8216;<em>down</em>&#8216; toggles the search results view</li>
<li>&#8216;<em>up</em>&#8216; toggles movie information and search bar</li>
<li>&#8216;<em>space</em>&#8216; toggles pause state</li>
<li>&#8216;<em>s  </em>&#8216; focusses search bar and let&#8217;s you type in a new search (&#8216;escape&#8217; cancels)</li>
<li>&#8216;<em>left</em>&#8216;,&#8217;<em>right</em>&#8216; let&#8217;s you navivate through search results when the search results view is active</li>
<li>&#8216;<em>return</em>&#8216; opens a new movie when the search results view is active</li>
</ul>
</li>
<li>Automatically generates hash urls that you can bookmark or send to someone &#8211; they will not only open the movie, but also the attached search results</li>
<li>Completely backendless through <a href="http://code.google.com/intl/en/apis/youtube/2.0/developers_guide_json.html" target="_blank">Youtube&#8217;s JSON API</a></li>
</ul>
<h3>What&#8217;s left to do</h3>
<p>This is a very early preview release, so please be merciful. Some things I would like to do for the next version is a playlist manager (sliding in from the left), and if I only could get access to a chromeless <a href="http://vimeo.com">Vimeo</a> player, that would totally kick ass.</p>
<div style="height:1px;overflow:hidden">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.theviagrastore.com/">viagra online no prescription</a></div>
<p>Anyway, <a href="http://paulbakaus.com/lab/interface/uberplayer" target="_blank">check it out</a>, and leave a comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2009/05/07/meet-the-uberplayer/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>The usability series: Responsiveness</title>
		<link>http://paulbakaus.com/2009/04/30/the-usability-series-responsiveness/</link>
		<comments>http://paulbakaus.com/2009/04/30/the-usability-series-responsiveness/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 10:17:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[responsiveness]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=158</guid>
		<description><![CDATA[Usability is something I consider a major part of my professional life. I even tend to think of it as the key to any good website or application. If it&#8217;s unusable, it doesn&#8217;t help if it can spit out flying dragons. That&#8217;s why rather than doing one summary post on the fundamentals, I decided to [...]]]></description>
			<content:encoded><![CDATA[<p>Usability is something I consider a major part of my professional life. I even tend to think of it as the key to any good website or application. If it&#8217;s unusable, it doesn&#8217;t help if it can spit out flying dragons. That&#8217;s why rather than doing one summary post on the fundamentals, I decided to discuss one usability pattern at a time and dig into it really deep. As first entry in this series, I decided to go with a key fundamental often forgotten even by the pro&#8217;s &#8211; <strong>responsiveness</strong>.</p>
<h3>What&#8217;s it all about?</h3>
<p>For real people to actually use your application in daily life, it&#8217;s not enough to bundle it with a nice UI and a bunch of cool features, it has to be really responsive as well. The reasoning is simple &#8211; people hate to wait. People hate to wait in<br />
lines (except the British, hehe), they hate to wait for their salary, they hate to wait for the weekend to arrive and they<br />
hate to wait for the next season of their beloved TV series. Ok, sometimes the anger can transform into excitement (and vica versa) &#8211; but raise your hopes too much, this seldom happens in the case of web apps. Yes, people hate to wait after the click.</p>
<p>Responsiveness is often described by <em>how quickly an application reacts upon a user triggered action</em>. Basically <strong>everything we do in the web is interaction</strong>- the website or application waits for an user action and then replies. There has been already a lot of research on today&#8217;s topic, concluding for instance that people already get the feeling they&#8217;re waiting if the result doesn&#8217;t come up in less than 0.5 seconds. But the answer to the problem is the tricky bit.</p>
<h3>The obvious solution: Performance optimizations  </h3>
<p>Many of todays apps and websites are Ajax driven, to the extend that a user initiated action triggers a request to the server. This is why the most obvious solution coming to mind is to<strong> improve the time each request takes</strong>. Be careful though &#8211; this is also exactly why responsiveness is so often forgotten in the frontend planning. People tend to think of it as something non-visual, therefore they let the backend guys do the work.</p>
<p>Now after you speeded up the requests and your backend, you have to take the frontend really serious. The <strong>JavaScript powering your website is often the most visible bottleneck</strong> because it&#8217;s directly happening on the client, even before any backend request can happen. And it&#8217;s not only JavaScript &#8211; heavy usage of CSS Frameworks (especially resets) for instance can horribly slow down any application as well. Remember &#8211; <strong>if your frontend performs bad, the backend guys don&#8217;t even have a chance to make up for it</strong>. Of course I could go into detail how to actually optimize your code, but that&#8217;s content for another blog post.</p>
<h3>Transparency and disguise</h3>
<p>In the last couple years I noticed a general pattern when designing a responsive experience. There are essentially two ways to tackle it: The first is <strong>total transparency</strong> &#8211; the user should <em>never</em> be clueless, and if the application is in a loading state, tell it to your user so he doesn&#8217;t get annoyed too much. The second, and to me the one with almost unlimited potential is <strong>illusion</strong>.</p>
<h3>Fixing the experience without fixing the implementation</h3>
<p>Something only very few people I met realized is that <strong>an application can be improved even without fixing the implementation</strong>. There is really only one thing that matters to the user &#8211; how the application feels. Yes, let me repeat that: Your implementation doesn&#8217;t have to <strong>be  </strong> responsive &#8211; it just has to <strong>feel</strong> that way.</p>
<h3>Apple &#8211; masters of illusion</h3>
<p>The best way to describe what I mean by making your application *feel* responsive is through a perfect example. It&#8217;s the best <strong>illusion of responsiveness</strong> I&#8217;ve seen so far. I&#8217;m talking about the <strong>iPhone</strong>.</p>
<p>The iPhone runs a very sophisticated operating system based on Mac OS X, with thousands of API&#8217;s for developers to use. Combined with the fact that the iPhone isn&#8217;t running particularly fast hardware (more than a standard cellphone, but way less than any netbook), simple performance optimizations could only get you so far here, and this is is where the magic comes in.</p>
<p>Almost every interaction on the <strong>iPhone uses an animation to transition from one state to another</strong>. You&#8217;ll see animations when you launch or quit applications, when you slide through screens and on many other instances, sometimes so tiny you don&#8217;t realize it. Since they&#8217;re very well integrated into the general flow of the interaction, <strong>they not only excite users but serve as visual cue helpers</strong> that let the user &#8216;grasp&#8217; what&#8217;s happening. But the key is what happens during the animation: Any application you launch or close on the iPhone needs time to initialize and to de-initialize. You guessed it already: It&#8217;s all done when the user is distracted by a beautiful zoom effect. How cool is that?</p>
<p>As a summary: <strong>At the cost of slowing down the operating system</strong> in technical terms (every animation takes a fixed amount of time), Apple improved the whole user experience and <strong>made the iPhone feel extremely responsive</strong>  .</p>
<div style="height:1px;overflow:hidden">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.rxpillsstore.com/">canadian pharmacy no prescription</a></div>
<h3>Loading indicators</h3>
<p>As a conclusion to the illusion technique, in 90% of all cases <strong>a loading indicator is evil</strong>. Why on earth would you want to highlight the slow parts of your application? That being said, a loading indicator is always better than a frozen state and a clueless user. As a general rule, <strong>only add a loading indicator to your application if all other improvements fail</strong>. For instance, there are situations where you absolutely can&#8217;t predict when the result will arrive. Imagine a multiplayer game with two players, and you&#8217;re waiting for the other player to select his character. In this case you have to notify the user that the game is waiting for a response.</p>
<p>See you next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2009/04/30/the-usability-series-responsiveness/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Taking Usability to another level</title>
		<link>http://paulbakaus.com/2008/11/21/taking-usability-to-another-level/</link>
		<comments>http://paulbakaus.com/2008/11/21/taking-usability-to-another-level/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 15:19:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=84</guid>
		<description><![CDATA[So I love that my main interest is finally a hot topic, and recently, Aza Raskin continued doing a great job evangelizing Usability in web and application design, making it more popular than ever. However, our efforts to usability are still limited to one single angle: The actual end user experience. While this is unquestionably [...]]]></description>
			<content:encoded><![CDATA[<p>So I love that my main interest is finally a hot topic, and recently, <a href="http://www.azarask.in/blog/">Aza Raskin</a> continued doing a great job evangelizing Usability in web and application design, making it more popular than ever.</p>
<p>However, our efforts to usability are still <strong>limited to one single angle: The actual end user experience</strong>. While this is unquestionably the most important part, we can&#8217;t ignore another: <strong>Usability for developers</strong>. Since tackling the whole world of development is too much for one blog post, we&#8217;ll only investigate web development here.</p>
<h3>Syntax &amp; API</h3>
<p>Why are certain programming languages more popular than others? Usually not because they&#8217;re faster &#8211; not even because the input or output is smaller. A single argument counts most: <strong>The easiest understandable, the one with the greatest learning curve wins</strong>.</p>
<p>Think about it &#8211; while binary approaches to languages and data formats are much more efficient, it&#8217;s a pain to work with. Take JavaScript &#8211; due to it&#8217;s flexible and dynamically typed nature, it&#8217;s not always the most efficient way to code &#8211; however, it&#8217;s the <a href="http://javascript.crockford.com/popular.html">most popular</a>.</p>
<p>Let&#8217;s think about a higher abstraction: JavaScript libraries. <a href="http://www.jquery.com">jQuery</a>, for once, is highly popular amongst web developers because the API has a natural, language-oriented aspect. It&#8217;s almost neurologic &#8211; by looking at a certain block of jQuery code, you start to almost guess what the other functions could be named like.</p>
<p>Now, as soon as you have a good concept of the API using real-world language, easy to understand by simply looking at it, there needs to be a next step: <strong>Make the learning curve as small as possible</strong>. This can be done by providing a complete and solid documentation, demonstration of every feature, walkthrough tutorials and ways to communicate within the community (forums, mailing lists).</p>
<p>So, in other words, for a web programming language or toolkit/framework to be developer friendly, the following arguments (at the very least) need to apply:</p>
<ul>
<li>Real-world language when naming API calls (do, write, make, etc)</li>
<li>A high learning curve, achieved by
<ul>
<li>Good documentation</li>
<li>Good demonstration</li>
<li>Good communities around the project (forums, mailing lists, etc)</li>
<li>A strict API design with no or little exceptions</li>
</ul>
</li>
</ul>
<p>Of course there&#8217;s more to it, but this should give you a good start (by the way, this works for most development, not only web development).</p>
<h3>Tools</h3>
<p>The second very important field where usability needs to be improved are the actual tools web developers use to create applications and websites. It&#8217;s no wonder Dreamweaver is ridiculously successful &#8211; it&#8217;s not necessarily something that outputs great results (although it can, if you&#8217;re disciplined!), but it&#8217;s simply so damn easy to use.</p>
<p>Web developers usually have to use tools for the following tasks, and the sub lists tell you how these need to be  improved:</p>
<ul>
<li><strong>Writing the source code</strong> (IDE&#8217;s, Editors)
<ul>
<li>Better versioning integration</li>
<li>Helpers for refactoring</li>
<li>Integration with the browser engine</li>
</ul>
</li>
<li><strong>Creating and designing the frontend</strong> (WYSIWYG Editors)
<ul>
<li>Integration with the browser engine, instead of faulty preview modes (Dreamweaver CS4 has that, but they didn&#8217;t remove the preview mode yet)</li>
<li>Smart control panels that utilize a framework&#8217;s documentation to create fields / controls</li>
<li>Tight framework integration</li>
<li>Integration with actual design applications (i.e a bridge to Photoshop from Dreamweaver, allowing &#8220;live slices&#8221; to be be embedded into the Dreamweaver source, that update automatically as soon as I change the overall image in Photoshop)</li>
</ul>
</li>
<li><strong>Testing</strong> (End-platform, various browsers, Selenium [automated tests])
<ul>
<li>Semi-automated testing frameworks that run in a browser and serve a click-through for testers and mainly create experience surveys</li>
<li>Automated user tests, creating a &#8216;fake&#8217; user that executes clicks and drags on actual websites and applications</li>
</ul>
</li>
<li><strong>Debugging</strong> (often integrated in IDE&#8217;s, our in the actual platform, i.e. Browsers)
<ul>
<li>One tool that debugs across various browsers, instead of great tools for each browser, i.e. Firebug, Dragonfly, the IE8 Debugger.</li>
</ul>
</li>
</ul>
<p>While there are some solutions that are clean, well designed and integrated for application development (see iPhone development), web developers still suffer. Especially testing and debugging is still a pain in the arse, and needs to be improved.</p>
<h3>Conclusion</h3>
<p>In the end, I think there is a lot that needs to be done to <strong>make the actual developers happy before those can make the end users happy  </strong>. A developer in an inspiring environment can create things you wouldn&#8217;t even imagine.</p>
<p>On the jQuery UI side of things for instance, there&#8217;s still a lot that needs to be done, but what&#8217;s really great is that we realized that our development cycle sucked. We have started to make developer tasks as easy as possible &#8211; there&#8217;s a new <a href="http://code.google.com/p/jquery-ui/source/browse/trunk/tests/simulate/jquery.simulate.js">jquery.simulate</a> plugin that triggers actual clicks and drags to ease testing, there are new commit hooks that will clean trailing whitespaces and there will be a project tool in the future that aids in documentation, testing and API design. We were also proud to be the first framework to announce <a href="http://www.adobe.com/cfusion/exchange/index.cfm?from=1&amp;o=desc&amp;cat=290&amp;event=productHome&amp;s=5&amp;l=-1&amp;exc=3">web widgets</a> in Dreamweaver.</p>
<p>So if you&#8217;re involved into a product that helps developers, think about how usable it is (instead of all it&#8217;s cool features), and help me and my comrades to make developer lifes easier, so they can create the great products we all love.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2008/11/21/taking-usability-to-another-level/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

