<?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; developers</title>
	<atom:link href="http://paulbakaus.com/tag/developers/feed/" rel="self" type="application/rss+xml" />
	<link>http://paulbakaus.com</link>
	<description>Capturing the thoughts of Paul Bakaus</description>
	<lastBuildDate>Sat, 19 May 2012 08:36:09 +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>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>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>

