<?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; jQuery</title>
	<atom:link href="http://paulbakaus.com/category/jquery/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>The jQuery Foundation</title>
		<link>http://paulbakaus.com/2012/03/07/the-jquery-foundation/</link>
		<comments>http://paulbakaus.com/2012/03/07/the-jquery-foundation/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 09:36:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=1711</guid>
		<description><![CDATA[Today, I&#8217;m incredibly proud and happy to read about the launch of the new jQuery Foundation, and rather than doing a quick tweet, thought I&#8217;d write down a couple words to congratulate all members of the jQuery team, and all jQuery users. I was one of the original six signers of the documents when we [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I&#8217;m incredibly proud and happy to read about the launch of the <a href="http://blog.jquery.com/2012/03/06/announcing-the-jquery-foundation/">new jQuery Foundation</a>, and rather than doing a quick tweet, thought I&#8217;d write down a couple words to congratulate all members of the jQuery team, and all jQuery users.</p>
<p>I was one of the original six signers of the documents when <a href="http://blog.jquery.com/2009/12/03/jquery-joins-the-software-freedom-conservancy/">we joined</a> (guy signing the paper is me) the Software Freedom Conservancy as a project on September 11th, 2009. Back then, the jQuery organization was still a toddler, and we were in real need for legal and administrative support to be able to concentrate what matters most to the jQuery team &#8211; jQuery, its sub projects and its users.</p>
<p>I&#8217;ve been out of the main loop for some time now, but reading about the new foundation gave me a smile today. jQuery as a project has matured to the point where they can pull this off and succeed, and there&#8217;s few open source projects out there who can. The secret sauce to success is an extremely passionate, strong team of developers that make up the jQuery Core team.</p>
<p>It&#8217;s been a hell of a (fun) ride when I&#8217;m looking back at my personal relationship with jQuery. When John and the community in 2007 asked me to start jQuery UI, I didn&#8217;t know what was in front of me. It&#8217;s been an amazing time that taught me many things about software development and working with others. Working on the jQuery UI Team helped many to get their next jobs, including myself, and most importantly, I have made many great friendships during my time at the jQuery project.</p>
<p>Keep on rocking, jQuery!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2012/03/07/the-jquery-foundation/feed/</wfw:commentRss>
		<slash:comments>0</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>A plugin so short it&#8217;s tweetable: Mask</title>
		<link>http://paulbakaus.com/2009/10/02/a-plugin-so-short-its-tweetable-mask/</link>
		<comments>http://paulbakaus.com/2009/10/02/a-plugin-so-short-its-tweetable-mask/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 08:10:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=217</guid>
		<description><![CDATA[I recently found the need to create a utility that helps me to mask a series of elements with a background image that spans across them, so the the picture basically gets masked by the elements selected. I couldn&#8217;t find a sweet reusable solution out there, so I went ahead and created my own little [...]]]></description>
			<content:encoded><![CDATA[<p>I recently found the need to create a utility that helps me to mask a series of elements with a background image that spans across them, so the the picture basically gets masked by the elements selected. I couldn&#8217;t find a sweet reusable solution out there, so I went ahead and created my own little jQuery mask plugin. Here&#8217;s the code:</p>
<pre class="ln-1-hi"><code class="javascript">$.fn.mask = function(u) {
	return $(this).each(function() {
		var p = $(this).position();
		this.style.background = 'url('+u+') -'+p.left+'px -'+p.top+'px';
	});
};
</code></pre>
<p>Here&#8217;s how to use it:</p>
<pre class="ln-1-hi"><code class="javascript">// grab all li's on the page and mask them with a certain image
$('li').mask('http://farm3.static.flickr.com/2075/2509376094_737cce37d4_o.jpg');
</code></pre>
<p>Most interestingly, this was the first actually useful plugin that was tweetable in it&#8217;s entirety: <a href="http://twitter.com/pbakaus/statuses/2492305298">http://twitter.com/pbakaus/statuses/2492305298</a>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2009/10/02/a-plugin-so-short-its-tweetable-mask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The technique behind the jQuery UI demos</title>
		<link>http://paulbakaus.com/2009/01/01/the-technique-behind-the-jquery-ui-demos/</link>
		<comments>http://paulbakaus.com/2009/01/01/the-technique-behind-the-jquery-ui-demos/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 19:14:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[demos]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=135</guid>
		<description><![CDATA[I&#8217;ve decided to start blogging more about the actual things I&#8217;m working on everyday, and in this series, I want to first talk about the updated and improved demos of jQuery UI. The first important thing to understand is that the demos that come with the development package, and that you can browse from the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided to start blogging more about the actual things I&#8217;m working on everyday, and in this series, I want to first talk about the updated and <a href="http://ui.jquery.com/demos">improved demos of jQuery UI</a>. The first important thing to understand is that the <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/index.html">demos that come</a> with the <a href="http://jquery-ui.googlecode.com/files/jquery.ui-1.6rc4.zip">development package</a>, and that you can <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/">browse</a> from the trunk, and the demos you see at the <a href="http://ui.jquery.com/demos">jQuery UI website</a> are the same.</p>
<p><img src="http://ui.jquery.com/images/blog/demos.png" style='width: 90%;' /></p>
<h3>The standalone demos</h3>
<p>To me, the new demos are truly outstanding. Let&#8217;s talk a bit about why. If you download the <a href="http://jquery-ui.googlecode.com/files/jquery.ui-1.6rc4.zip">development package</a>, or browse the <a href="http://jquery-ui.googlecode.com/svn/trunk/">trunk</a>, you&#8217;ll see a demos/ folder, with sub directories for every individual plugin. If you open one of these sub-directories, you&#8217;ll see a index.html, a default.html and named individual demos, i.e. containment.html. Each of these demos:</p>
<ol>
<li>Is a standalone demo</li>
<li>Includes all the files it needs (JavaScript / Theming )</li>
<li>Displays a description of the current demo at the bottom</li>
</ol>
<p>This means that those demos are excellent for learning how to do something &#8211; they come completely uncluttered, so you can copy and paste JavaScript and markup easily. Additionally, the default.html shows you the most simple state of the plugin (usually without any provided options), and the index.html provides a easy named listing to all these sub demos. Even better, if you open demos/index.html, you&#8217;ll see a page that looks very similar to the website demos section, but works like this:</p>
<ol>
<li>If you click on a plugin in the left hand navigation, i.e. &#8216;draggable&#8217;,</li>
<li>it fetches the content of <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/draggable/index.html">demos/draggable/index.html</a> using Ajax and displays it as right hand sub navigation</li>
<li>if you click on one of those links, the created iframe in the middle updates itself</li>
</ol>
<h3>The website demos</h3>
<p>For the website demos, it got a bit more sophisticated. We removed the beautiful but unusable demo carousel, and created a unified demo section that automatically pulls the standalone demo files from the repository, therefore it&#8217;s never out of sync. However, the simple iframe approach couldn&#8217;t be used because of the incredible amount of server requests made that way. Here&#8217;s the technique behind it:</p>
<ol>
<li>include the theme and jQuery UI once</li>
<li>include <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/index.html">demos/index.html</a> using PHP, filter out any script/style tags and the header</li>
<li>now using JavaScript, rewrite all links to plugins to point to /demos/plugin</li>
</ol>
<p>This shows you the index file. Perfect. What happens if you click on a link in the left hand navigation now?</p>
<ol>
<li>A server-side rewrite rule resolves demos/draggable to demos/?load=draggable</li>
<li>in PHP:
<ol>
<li>we export the &#8216;load&#8217; information to Smarty, so we can access it in the template</li>
<li>we then retrieve <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/draggable/default.html">default.html</a> and display it in a div frame, but filter out any script/style tags and header</li>
<li>and we do the same for <a href="http://jquery-ui.googlecode.com/svn/trunk/demos/draggable/default.html">draggable/index.html</a>, to show the right hand sub navigation</li>
</ol>
</li>
<li>in JavaScript:
<ol>
<li>we loop through all demo links in the right hand nav and define click events,so the link isn&#8217;t triggered, but instead, a hash is set (for easy bookmarking) and</li>
<li>the selected file is pulled in via ajax &#8211; again, we filter out any script/style tags with src attributes, and the header/footer, and update the frame div</li>
<li>at last, we pull out the description at bottom of every file, and display it below the &#8216;frame&#8217;</li>
</ol>
</li>
</ol>
<p>So, with a little more work involved, we not only made the demos extremely responsive and fast, but also reduced the requests to the server dramatically. Every time you click on a demo, only one single request is made, to fetch the actual html page.</p>
<p>Pretty cool eh? Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2009/01/01/the-technique-behind-the-jquery-ui-demos/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>The Library Detector</title>
		<link>http://paulbakaus.com/2008/12/20/the-library-detector/</link>
		<comments>http://paulbakaus.com/2008/12/20/the-library-detector/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 13:02:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=114</guid>
		<description><![CDATA[I&#8217;m happy to announce my first Firefox extension called Library Detector. Similar to a greasemonkey script I published to the jQuery mailing lists a couple months ago that showed if jQuery is running (which proved to be pretty useful to extend the Sites using jQuery page), the library detector is able to detect multiple libraries, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce my first Firefox extension called <a href="https://addons.mozilla.org/de/firefox/addon/10083">Library Detector</a>. Similar to a greasemonkey script I published to the jQuery mailing lists a couple months ago that showed if jQuery is running (which proved to be pretty useful to extend the <a href="http://docs.jquery.com/Sites_Using_jQuery">Sites using jQuery</a> page), the library detector is able to detect multiple libraries, currently including the following:</p>
<ul>
<li><a href="http://jquery.com">jQuery</a></li>
<li><a href="http://ui.jquery.com">jQuery UI</a></li>
<li><a href="http://dojotoolkit.org">Dojo</a></li>
<li><a href="http://prototypejs.org">Prototype</a></li>
<li><a href="http://script.aculo.us">Scriptaculous</a></li>
<li><a href="http://mootools.net">MooTools</a></li>
<li><a href="http://labs.adobe.com/technologies/spry/">Spry</a></li>
<li><a href="http://developer.yahoo.com/yui/">YUI</a></li>
<li><a href="http://qooxdoo.org/">Qooxdoo</a></li>
</ul>
<p>If one of these is found on the current page, it displays their favicon in the statusbar, and if you hover it, a tooltip will show with additional information (In most cases the version of the library, in the case of jQuery UI the plugins being used, and for Dojo if Dijit is being used).</p>
<p>Of course, there&#8217;s one catch in some libraries: If the developer renamed the scope of the Library (i.e. window.dojo) to something entirely different, the test fails (however, usually that&#8217;s not the case).</p>
<p>So, if you want to know what websites use your favorite library (or which do not), go ahead and grab the Library Detector from its <a href="https://addons.mozilla.org/de/firefox/addon/10083">download page</a>.</p>
<p>Additionally, I&#8217;d love to see feedback, and if you think there&#8217;s a library missing, or if you have an idea how to improve a test / show additional information, please leave me a comment.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2008/12/20/the-library-detector/feed/</wfw:commentRss>
		<slash:comments>18</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>
		<item>
		<title>Possible jQuery (UI) promotion tour in Japan</title>
		<link>http://paulbakaus.com/2008/11/07/possible-jquery-ui-promotion-tour-in-japan/</link>
		<comments>http://paulbakaus.com/2008/11/07/possible-jquery-ui-promotion-tour-in-japan/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 16:29:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=82</guid>
		<description><![CDATA[After the great success of my trip to Tokyo in May (thanks to my friend Yusuke!), I have been thinking a lot of how to better promote jQuery and jQuery UI over there. Usually, american products have a hard time in Japan because of the language barrier, and the easiest way to overcome this is [...]]]></description>
			<content:encoded><![CDATA[<p>After the great success of my trip to Tokyo in May (thanks to my friend <a href="http://www.kawa.net">Yusuke</a>!), I have been thinking a lot of how to better promote jQuery and jQuery UI over there. Usually, american products have a hard time in Japan because of the language barrier, and the easiest way to overcome this is to simply <strong>be</strong> in Japan!</p>
<p>So here&#8217;s my idea: <strong>To every japanese company interested, I will give free workshops about jQuery and jQuery UI to employees/staff</strong>. In exchange, they will cover a small part of my travel budget.</p>
<p>So,</p>
<ul>
<li>If you live and work in Japan</li>
<li>And your company uses jQuery/jQuery UI or wants to use it</li>
<li>write me an email (paul.bakaus@gmail.com)</li>
</ul>
<p>and we&#8217;ll discuss everything. I&#8217;m really excited about this idea, and it would be awesome if it works out. The same might happen in Brasil soon for another jQuery UI developer, which brang me the idea again.</p>
<p>Mata ne!</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2008/11/07/possible-jquery-ui-promotion-tour-in-japan/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How library developers help defining standards</title>
		<link>http://paulbakaus.com/2008/09/02/how-library-developers-help-defining-standards/</link>
		<comments>http://paulbakaus.com/2008/09/02/how-library-developers-help-defining-standards/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 10:13:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://paulbakaus.com/?p=60</guid>
		<description><![CDATA[For the last couple of months, many people have been frightened that the Browser Wars are beginning to happen once again. It&#8217;s easy to come to such a conclusion if you see all these new standards in today&#8217;s browsers: Even only in CSS, Mozilla added a &#8220;-moz&#8221; scope for new CSS syntax, Webkit a &#8220;-webkit&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>For the last couple of months, many people have been frightened that the Browser Wars are beginning to happen once again. It&#8217;s easy to come to such a conclusion if you see all these new standards in today&#8217;s browsers: Even only in CSS, Mozilla added a &#8220;-moz&#8221; scope for new CSS syntax, Webkit a &#8220;-webkit&#8221; one &#8211; and let&#8217;s not even talk about Internet Explorer.</p>
<p>We&#8217;re seeing a lot of move recently &#8211; Mozilla pushes their JavaScript API, Webkit adds <a href="http://webkit.org/blog/130/css-transforms/">CSS coolness</a>, Opera comes up with <a href="http://my.opera.com/timjoh/blog/2007/11/13/taking-the-canvas-to-another-dimension">Canvas 3D</a> and Internet Explorer with awesome new events like recently featured <a href="http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx">hashchange</a>. Now even Google comes up with <a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html">their own browser</a> and Gears is therefore becoming a own standard for that very own browser.</p>
<p>If you look at all that development however, it&#8217;s becoming very clear that it&#8217;s NOT the same than 10 years ago. I believe the overall idea behind it is different: Browser vendors are not actively trying to lure people to exclusively use their browser, but they&#8217;re trying to push the standards for the first time in 10 years &#8211; <strong>they want to push the web  </strong>.</p>
<p>As a web developer, one might think it&#8217;s all a big mess now, and it does help nothing to their very own situation, because they cannot use the new standards of one browser in their new product &#8211; what about the other 75% of their target audience? And then, I&#8217;m not even sure if that feature survives in 2009!</p>
<p>Here is the point where I come in, as a JavaScript library developer. What we library developers can do is smoothen the path for these poor web devs. There are two ways of doing so:</p>
<ol>
<li><strong>The Copy approach</strong>: Replicate an existing standard on other platform with the help of JavaScript</li>
<li><strong>The &#8220;Lowest common multiple&#8221; approach</strong>: Take a couple of different standards across browsers and create a subset that can be used across browsers</li>
</ol>
<p>Let me show you one example for each approach to better show you pros and cons:</p>
<ol>
<li><strong>The Copy approach: Google&#8217;s <a href="http://excanvas.sourceforge.net/">excanvas</a></strong><br />
<em>excanvas</em> tries to bring the <em>&lt;canvas&gt;</em> element to Internet Explorer by using VML. While I think it&#8217;s a great project, it has some fundamental flaws: <em>excanvas</em> is not able to replicate the whole canvas API using VML. Although they&#8217;ve done a fair job of porting most of the features, some are missing simply because it&#8217;s not possible/too slow/too much work to port them.This makes developing for it fairly difficult, because you never now exactly what behaves how.</li>
<li><strong>The &#8220;Lowest common multiple&#8221; approach: <a href="http://api.dojotoolkit.org/jsdoc/dojox/HEAD/dojox.gfx">Dojox GFX</a></strong><br />
The Graphics engine of Dojo creates a own API and uses several different standards to render the exact same result. The advantage here is pretty clear: By defining what to support and what not in a limited subset, a web developer can be sure that whatever he uses here, even the most awesome, cutting-edge features, will work on every platform.</li>
</ol>
<p>In my personal option, the second approach is the one that helps defining new standards. It&#8217;s the library developer in the end that reviews all standards and tries out what&#8217;s possible and what&#8217;s not, and therefore, the library developers opinion weights a lot. The library developers are the ones that have the power to bring new features to web devs as early as possible &#8211; not the browser vendors.</p>
<p>Cheers!<br />
Paul</p>
<p>(What I talked about in this post is something i will feature again in <a href="http://ajaxexperience.techtarget.com/east/html/effects.html#PBakausJS">my session for the Ajax Experience</a>. If you have a change, I invite to check it out!)</p>
]]></content:encoded>
			<wfw:commentRss>http://paulbakaus.com/2008/09/02/how-library-developers-help-defining-standards/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

