<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Position Absolute</title>
	
	<link>http://www.position-absolute.com</link>
	<description>Waves of front-end development and entrepreneurship articles</description>
	<lastBuildDate>Mon, 13 May 2013 17:54:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/position-absolute/nyJv" /><feedburner:info uri="position-absolute/nyjv" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The weird state of mobile web apps</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/AVDNDbD3GZM/</link>
		<comments>http://www.position-absolute.com/news/the-weird-state-of-mobile-web-apps/#comments</comments>
		<pubDate>Mon, 13 May 2013 01:43:22 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Random news]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4498</guid>
		<description><![CDATA[<p><img src="http://mobilehtml5.org/img/232x321xlogo.png.pagespeed.ic.CB96-XanN6.png" style="float:right; width:150px;"/>There are countless of articles debating going native or HTML5 for your next mobile app. But with Linkedin recently deciding to going back to native I am really starting to ask myself if HTML5 is still part of the equation&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://mobilehtml5.org/img/232x321xlogo.png.pagespeed.ic.CB96-XanN6.png" style="float:right; width:150px;">There are countless of articles debating going native or HTML5 for your next mobile app. But with Linkedin recently deciding to going back to native I am really starting to ask myself if HTML5 is still part of the equation for mobile apps at the current moment. Let&#8217;s look at a small retrospective &#038; see what conclusions we can extract of the mobile web current state.</p>
<h2>Linkedin reverting to native app = broken heart</h2>
<p>Linkedin had one of the most polish html5 iPad app in the market but they recently decided to kill it off after countless of articles describing HTML5 as a viable solution for mobile. What triggered that 180 on their position? Well contrary to popular believes (that all html5 apps are slow), it&#8217;s not speed &#038; animations that made them rollback, but.. memory management. Here&#8217;s how Kiran,  LinkedIn’s senior director for mobile engineering puts it:</p>
<p>&#8220;The primary reason for that is, we’re seeing that more and more people are spending more time in the app, and the app is running out of memory. It’s not performance issues, like speed or rendering, but it’s still a big problem.&#8221;<br />
Read more at <a href="http://venturebeat.com/2013/04/17/linkedin-mobile-web-breakup/#TOVdbZOq5ZjZB0AY.99">VentureBeat</a></p>
<p>Unfortunately they never really explain what tools they use to bake a native apps from their html5 counterpart, so without more informations it&#8217;s pretty hard to make anything of this. One unfortunate truth is that dev tools for mobile web apps are in it&#8217;s infancy, and there is not quite anything like what native apps can provide.</p>
<p>So with Facebook and LinkedIn quitting the HTML5 boat where does that put us? Well pretty much in limbo, that tells us that most publicly listed companies do not think that HTML5 is ready for primetime and could be associated as a risk for still quite some times.</p>
<h2>Looking further</h2>
<p>When Zuck rolled back to native, a small company called Sencha decided to push back a little and released a video showing one of their html5 app running against the current native iphone app. Sencha has a framework called Sencha Touch, that is pretty much everything you need to make a mobile web apps that looks native. So let&#8217;s check that video:</p>
<p><iframe src="http://player.vimeo.com/video/55486684" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><em><a href="http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story">The Making of Fastbook: An HTML5 Love Story</a></em>.</p>
<p>Pretty impressive, I personally tested Sencha touch a long time ago and there was a lot of problems on Android, that being said Android versions 3.0 and less were a problem in themselves, the hardware quality was bad and there were lots of bugs and missing implementation in the webkit browser. The situation with Android &#038; Sencha touch seems to have much improved.</p>
<h2>Okay, so you are telling me I can make a mobile web app, but other big companies are rolling back but it&#8217;s possible but I probably need a big framework to do it?</h2>
<p>Well&#8230;. not exactly. Like anything else doing an html5 app has advantages &#038; disavantages, and it is sometime appropriate. The principal advantage is you get an app that works on Android, iPhone &#038; Blackberry with minimal efforts with technologies you already know. You made websites when IE6 was around? Well it&#8217;s much easier getting something to work on 3 webkit based browsers.</p>
<h2>When should I consider doing a mobile web app?</h2>
<p>Here a few pointers:</p>
<ul>
<li>You have no budget to hire android, ios &#038; blackberry devs but want big market penetration</li>
<li>You are not reinventing a whole new navigation system full of animations</li>
<li>Your app is principally text based</li>
<li>You are still in the prototype stage where you need to iterate quickly</li>
</ul>
<h2>What about CakeMail?</h2>
<p>If you looked around this blog recently you probably know hat I am currently working on the first iteration of the CakeMail mobile app. Our current strategy is to release a web version first, iterate a second version (ameliorations) and then integrate this app into PhoneGap and package it for app stores if all goes well.</p>
<p>For that to becomes to fruition I had to build quite a few components for backbone.js that handle different states in the pages(animations, topbar, menu, popin &#038; etc). My plan was to release those components at Js-Montreal this month but life got in the way and I won&#8217;t be doing that.</p>
<h2>Building a mobile web apps from scratch</h2>
<p>It&#8217;s not that it is particularly hard, it is just fucking html &#038; javascript in the end, but you definitely need to work out some issues you don&#8217;t generally encounter. I probably invested about 80 hours for now in my backbone.js mobile components, and probably need to invest a bit more to make then really solid on ios and android(4.0+).</p>
<p>Why not use jQuery mobile or Sencha? Well I don&#8217;t like to stand on top of the next guy, not really understanding what&#8217;s happening in the background. Plus the Cake app is pretty small &#038; I did not see the advantage, specially performance wise, of using a big framework. One interesting thing with backbone is that you can really &#8220;bend it&#8221; any way you want and it&#8217;s something I appreciate a lot, my components try to follow the same philosophy.</p>
<p>I plan to do a presentation (<em>probably next month</em>) at js-montreal, if your interested at getting started in mobile web development and you don&#8217;t want to be dependant of Sencha or jQuery , you should difinately check that out, I got tons of tips &#038; tricks. Here a small taste of my <strong>very unfinished</strong> slides:</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/21061545" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/AVDNDbD3GZM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/news/the-weird-state-of-mobile-web-apps/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/news/the-weird-state-of-mobile-web-apps/</feedburner:origLink></item>
		<item>
		<title>iPresent, mobile mockups presenter</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/NbnsXtMDDo8/</link>
		<comments>http://www.position-absolute.com/our-projects/presenting-mobile-mockups/#comments</comments>
		<pubDate>Mon, 06 May 2013 00:52:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Small Projects & plugins]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4473</guid>
		<description><![CDATA[<p>At <a target="_blank" href="http://www.cakemail.com">CakeMail</a> we are ramping up our mobile effort with a new mobile web app, recently we hit a milestone &#038; completed most of the interface design. It got me wondering what could be the best way to get my coworkers&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>At <a target="_blank" href="http://www.cakemail.com">CakeMail</a> we are ramping up our mobile effort with a new mobile web app, recently we hit a milestone &#038; completed most of the interface design. It got me wondering what could be the best way to get my coworkers to experience <strong>on their phone</strong> what this was going to be all about.</p>
<p>Turns out, about 3 years ago I asked myself the same question. How can I effectively present mockups for mobile beside just trowing them in basecamp or powerpoint. So I prototyped a project to do just that using jQtouch.</p>
<p>A video will probably explain  better than words what this is all about, see below.</p>
<p><iframe src="http://player.vimeo.com/video/14049400" width="600" height="450" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>A <strong><a target="_blank" href="http://www.position-absolute.com/creation/cherry">live example</a></strong> helps too (better experienced on a phone). <a target="_blank" href="http://www.cakemail.com">CakeMail</a> let me use our first design iteration for the demo, so you have a sneak peak at that too!</p>
<p>The idea was to sell the app but that never concretized, I still think that there would be a market for this, specially with agencies wanting to impress their clients in a presentation. I&#8217;m kind of surprised there is nothing like it 3 years later.</p>
<h2>Open sourcing</h2>
<p>Head to github to <a href="https://github.com/posabsolute/ipresent">download the code</a>.</p>
<p>The code is not exactly pretty (I refactored it a bit, but it still 3 years old), it&#8217;s based on a old, modified jqtouch version and an old jquery version, but it works pretty darn well.</p>
<h2>Usage</h2>
<p>Everything is controlled by an xml that is given at the plugin extentiation, we can say what we want about xml, it&#8217;s pretty nice in terms of readability, here an example that creates a complete app:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;debug</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/debug<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #808080; font-style: italic;">&lt;!-- Your dock icon on the iphone --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dockIcon</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;jqtouch.png&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/dockIcon<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>	
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;size</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;320px&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/size<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>	
&nbsp;
	<span style="color: #808080; font-style: italic;">&lt;!-- Your Startup Screen when your presentation is loading --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;startupScreen</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;loader.jpg&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/startupScreen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>	
&nbsp;
	<span style="color: #808080; font-style: italic;">&lt;!--Do you have images for the horizontal mode? --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;screenOrientationChange</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/screenOrientationChange<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #808080; font-style: italic;">&lt;!--This is how you include a mockup --&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;interface</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;main&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;cherry/login.png&quot;</span> <span style="color: #000066;">horizontal</span>=<span style="color: #ff0000;">&quot;cherry/login.png&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #808080; font-style: italic;">&lt;!--This is how you include links --&gt;</span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;links</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;reports&quot;</span> <span style="color: #000066;">animation</span>=<span style="color: #ff0000;">&quot;slide&quot;</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;top: 387px; left:10px; width: 300px; height: 50px;&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/links<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/interface<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/NbnsXtMDDo8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/our-projects/presenting-mobile-mockups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/our-projects/presenting-mobile-mockups/</feedburner:origLink></item>
		<item>
		<title>jQuery Engage, a plugin taking a stab at better engaging blog readers</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/MsAc1K-00oo/</link>
		<comments>http://www.position-absolute.com/articles/jquery-engage-a-plugin-taking-a-stab-at-engaging-better-blog-readers/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 02:55:17 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4449</guid>
		<description><![CDATA[<p>Optimizing user interactions is a never ending quest in software development. Fortunately in our time and age innovative ideas are rapidly incorporated and improved by other developers.</p>
<p>In that mindset I present today <strong><a target="_blank" href="https://github.com/posabsolute/jquery-engage">jQuery Engage</a></strong>, a plugin that helps you optimize&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Optimizing user interactions is a never ending quest in software development. Fortunately in our time and age innovative ideas are rapidly incorporated and improved by other developers.</p>
<p>In that mindset I present today <strong><a target="_blank" href="https://github.com/posabsolute/jquery-engage">jQuery Engage</a></strong>, a plugin that helps you optimize user interaction with blogs &#038; articles. This plugin adds a social toolbar when the reader finishes reading an article. This toolbar contains customizable zones (comments, subscribe newsletter &#038; share social) that help better convert your readers.</p>
<p>You can test the plugin by scrolling down this page! There is currently 3 content zones on this page. That&#8217;s a bit crowded and create quite a lot of noise but that&#8217;s customizable and you can have 2 zones instead if you like that better.</p>
<h2>The idea</h2>
<p>One of the first to incorporate this kind of toolbar was The New York Times. They show a small box at the bottom right of the screen with related content to the article. Not a lot of readers will finish an article and it usually means an interest in the content, at that moment he will likely quit the page or search for more content, the perfect time to show sharing options &#038; related content to keep it interesting.</p>
<p>People are lazy and unfortunately a reader will rarely interact by himself if not pushed a little. That is exactly what this plugin aims at, pushing readers a little.</p>
<h3>Make it more personal</h3>
<p>jQuery-Engage gives you options to customize the texts depending of the period of the day. Better connecting with a user is one of the tools to optimize your conversion rate, for example talking about coffee in the morning, helps connecting with readers as they take a coffee, that&#8217;s the kind of thinking you want.</p>
<h3>Highly customizable</h3>
<p>The plugin has been created with the idea that there is a lot more content types that could be used in there. The architecture enables you to easily add your own content type into the toolbar. See the github readme for more information on this subject.</p>
<h2>The unfortunate ugly</h2>
<p>Like when using an infinite scroll the footer is rarely seen by the users. I added an option to close the popup but that is only going to help a bit. Personally, I don&#8217;t consider blog footers good converters and I much prefer using my plugin. But nonetheless you should be aware of this limitation. </p>
<h2>The future</h2>
<p>Related articles, ads, there is much more content types that could be integrated and I hope to add one from time to time. </p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/MsAc1K-00oo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/jquery-engage-a-plugin-taking-a-stab-at-engaging-better-blog-readers/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/jquery-engage-a-plugin-taking-a-stab-at-engaging-better-blog-readers/</feedburner:origLink></item>
		<item>
		<title>Data mining user behaviors in web apps</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/MW_9ArFNoSs/</link>
		<comments>http://www.position-absolute.com/articles/data-mining-user-behaviors-in-web-apps/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 14:24:23 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Small Projects & plugins]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4387</guid>
		<description><![CDATA[<p><em style="font-size:12px;">tl;dr I got a <a href="https://github.com/posabsolute/jquery-behavior-miner">jquery plugin</a> that track agitated user behaviors. </em></p>
<p>Do you currently track user behaviours? Most people would say yes, if you have google analytics installed you do track behaviors, at least a form of it. But do you&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><em style="font-size:12px;">tl;dr I got a <a href="https://github.com/posabsolute/jquery-behavior-miner">jquery plugin</a> that track agitated user behaviors. </em></p>
<p>Do you currently track user behaviours? Most people would say yes, if you have google analytics installed you do track behaviors, at least a form of it. But do you do the extra mile to understand your users? That&#8217;s a question that could be really interesting to ask to a room full of product owners.</p>
<p>Let&#8217;s take an example of a behavior that most people do not track: <em>a user that made the extra mile and finished reading an article</em>. GA track how much time a user passes on a page, but we never track how much of our users really finish reading articles. Can you do something interesting with that information? Well let&#8217;s check what Shopify does.</p>
<h2>Acting on behaviors</h2>
<p><em>When a user finishes scrolling through a <a target="blank" href="http://www.shopify.ca/blog/7412852-10-must-know-image-optimization-tips#axzz2MgqzlaJF">Shopify&#8217;s blog article</a>, the &#8220;Subscribe to newsletter&#8221; box gets highlighted.</em> </p>
<p>The user is interested by an article and just finished reading it, if he went that far you better give him a hint that he can subscribe to more content easily, so Shopify acts on that. Knowing how long a user stayed on your page is nice, that however does not tell you if he really finished reading your article, logging that data is also useful.</p>
<p>Another interesting situation is a checkout system. When a user puts something into his cart and continues shopping, making the checkout button more prominent is a good idea, reminding the user they already got something to buy. If he quits the website sending a reminder email with the items in its cart is a nice touch too.</p>
<p>Understanding how our users react is essential for the long term longevity of our apps. It&#8217;s important to log that information but you also must act on different behaviors. It will help you make smarter apps, giving more context to a user where he normally would miss something, and you are probably going to make more money too.</p>
<h2>What about agitated behaviors?</h2>
<p>While looking at normal behaviors is good, it&#8217;s not as important as knowing when our users become frustrated. When a user is frustrated he is more prone at making harsh decisions like deleting his account or abandoning his current task (shopping, using a wysiwyg &#038; etc).</p>
<p>Do you currently know when and why your users get frustrated? Can you even log such a thing? There are signs that we can track in javascript:</p>
<ul>
<li>Does he hit frantically a key?</li>
<li>Maintains multiple keys at the same time?</li>
<li>Clicks multiple times on a button?</li>
<li>Maintain a mouse down a long time on a button?</li>
<li>Highlight text?</li>
</ul>
<p>And that&#8217;s just a start, there other trackable behaviors too. </p>
<p>Still acting on it is difficult. Deciding if a behavior is serious enough to warrant showing a popover help box, a chat box, or sending an email is hard. In any case, just logging that information helps you understand where your app is maybe failing the users.</p>
<p>Now that you are convince that you must track agitated behaviors, is there even a script that does that currently? Well there is now the jquery plugin below.</p>
<h2>A jQuery plugin to mine agitated behaviours</h2>
<p>I decided to open source a jQuery plugin I created to help me track those behaviors. <strong><a href="https://github.com/posabsolute/jquery-behavior-miner">You can download it right here</a></strong>. </p>
<p>As the current version (0.1.x) might tell, this is a beta, and it&#8217;s never been tested on a big site. So please use with caution. Also, I would really appreciate if you guys add/suggest behaviours into the mix.</p>
<h2>Want more?</h2>
<p>Please check this <strong><a href="http://textiles.online.ncsu.edu/online/Play/e61fd5e55ee6488a82a5b2442e0383a11d">awesome presentation</a></strong> on emotional design by Jonathan LeBlanc (Principal Developer Evangelist &#8211; PayPal). It covers behaviors and also the color theory.</p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/MW_9ArFNoSs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/data-mining-user-behaviors-in-web-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/data-mining-user-behaviors-in-web-apps/</feedburner:origLink></item>
		<item>
		<title>Scaffolding backbone.js generators with grunt.js</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/3EaIO3YhkPE/</link>
		<comments>http://www.position-absolute.com/articles/scaffolding-backbone-js-generators-with-grunt-js/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 14:26:40 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4368</guid>
		<description><![CDATA[<p>Following my encounter with yeoman, I wanted to see if I could easily create my own generators with Grunt. Not because yeoman ones were bads, they are in fact pretty good, but I just do not work exactly like Yeoman&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Following my encounter with yeoman, I wanted to see if I could easily create my own generators with Grunt. Not because yeoman ones were bads, they are in fact pretty good, but I just do not work exactly like Yeoman wants me too. </p>
<p>Another thing is that I wanted easily modifiable generators that could be used in any projects, not just with backbone.</p>
<p>While it&#8217;s not really hard to create that kind of functionality with Grunt once you know your way, i&#8221;m still pretty new to this and it was my first try at creating a plugin with &#8220;advanced&#8221; tasks. Still, I am happy to present my last project: <strong><a href="https://github.com/posabsolute/backbone_generate">grunt-bb-generate</a></strong>. </p>
<p>The idea behind this project is, yes, to provide backbone generators, but my real goal with this project is to have a base for scaffolding projects easily. </p>
<h2>Usage Examples</h2>
<p>The typical command would be:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">  grunt bb_generate<span style="color: #339933;">:</span>router<span style="color: #339933;">:</span><span style="color: #000066;">name</span></pre></div></div>

<p>With the detault options that would generate a router (name.js) in the folder &#8220;app/scripts/routers&#8221;</p>
<p>Because apps do not always folder standards you can overwrite the path on the fly like this:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">  grunt bb_generate<span style="color: #339933;">:</span>router<span style="color: #339933;">:</span><span style="color: #000066;">name</span><span style="color: #339933;">:</span>mypath<span style="color: #339933;">/</span>to<span style="color: #339933;">/</span>router</pre></div></div>

<p>For more information on how to install it, please check the <a href="https://github.com/posabsolute/backbone_generate">github repo</a>.</p>
<h3>Bending it to your will</h3>
<p>Just go into the templates folder and add/change the generators to fit your style. After that go into tasks to bb_generate.js and add your new generators. There is a very easy pattern to follow, you should get the gist pretty easily.</p>
<h2>The future</h2>
<p>The plugin is currently in a very rough state, I am just getting started with grunt and I really want to re-architecture the plugin a bit (contributions are welcome). I also want to add a default app structure. That&#8217;s pretty much it for now.</p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/3EaIO3YhkPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/scaffolding-backbone-js-generators-with-grunt-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/scaffolding-backbone-js-generators-with-grunt-js/</feedburner:origLink></item>
		<item>
		<title>Yeoman and friends</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/nuz7swQJ4uo/</link>
		<comments>http://www.position-absolute.com/articles/yeoman-and-friends/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 03:22:11 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4361</guid>
		<description><![CDATA[<p>Isn&#8217;t it every developer dream to have his own command line &#038; scaffolding tool? Do we really save time by creating and using those? I&#8217;m not quite sure but I certainly feel fancy when I use them.</p>
<p>Enter <a href="http://yeoman.io/">Yeoman</a>, a tool&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Isn&#8217;t it every developer dream to have his own command line &#038; scaffolding tool? Do we really save time by creating and using those? I&#8217;m not quite sure but I certainly feel fancy when I use them.</p>
<p>Enter <a href="http://yeoman.io/">Yeoman</a>, a tool that streamline your front-end development. or so it seems. </p>
<p><img src="http://yeoman.io/assets/img/yeoman-logo.png"></p>
<p>Frankly while I now &#8220;get&#8221; <a href="http://gruntjs.com/">grunt.js</a> and <a href="https://github.com/twitter/bower">bower</a>, I&#8217;m  not sure I completely get Yeoman. The idea behind yeoman is to give you the best boilerplate possible to get started with your app development. In some way, yeoman is awesome, from the get go you get a css preprocessor compiler, js compiler, folder watchers, test server and much much more. </p>
<p>But that just how <strong>grunt</strong> work (pure awesomeness), that&#8217;s just one gruntFile.js that you can steal, integrate and modify pretty easily. Other than that Yeoman will enable you to scaffold projects with generators, and that&#8217;s where it start to get awkward. Yeoman assume a lot of stuff about how you work (giving you a better workflow as they say), and integrating it in a well under-development project seems impossible or too long to be worth it in my opinion.</p>
<p>My advice? At least have a look at yeoman, maybe it is for you. If it&#8217;s not, absolutely save their grunt config somewhere, that is worth a lot of time and money.</p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/nuz7swQJ4uo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/yeoman-and-friends/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/yeoman-and-friends/</feedburner:origLink></item>
		<item>
		<title>Death to monolithic libraries</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/jM_YkYQ63-o/</link>
		<comments>http://www.position-absolute.com/articles/death-to-monolithic-libraries/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 17:55:17 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4315</guid>
		<description><![CDATA[<p>If you write code for the web you have dealt with them, gigantic libraries that does everything for you in one nice package. I&#8217;m not talking about utilities libs &#038; frameworks like jQuery and backbone. I&#8217;m talking about Lightboxes, sliders,&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>If you write code for the web you have dealt with them, gigantic libraries that does everything for you in one nice package. I&#8217;m not talking about utilities libs &#038; frameworks like jQuery and backbone. I&#8217;m talking about Lightboxes, sliders, form validators, file uploaders, wysiwygs, and etc. They offer you tons of features, a big code base, a big following and well, they generally come with a ton of bugs too.</p>
<p><img src="http://blog.graphisoftus.com/wp-content/uploads/2012-blog-bim-too-big.jpg"></p>
<p>I find myself guilty of writing one of those too, my validation engine got from 400 to 2000+ LOC in 3 years. Adding features, one by one, it has becomes overweight, and it has becomes harder and harder to debug.</p>
<h2>A long time ago..</h2>
<p>Ask me 4 years ago if you should delve into doing a lightbox yourself and I would tell you that you are a fool. Ask me that now? My answer would be a lot more nuanced. Before integrating any 3rd party code I ask myself a couple of questions (roughly in that order):</p>
<ul>
<li>Can I code it myself easily?</li>
<li>Do I have time?</li>
<li>What browsers is this supporting?</li>
<li>Number of open issues?</li>
<li>What&#8217;s the code size?</li>
<li>Do I trust this guy (or team)?</li>
</ul>
<p>Sometimes I can&#8217;t code it myself, I would not code something like Highchart, so I need to use it (or some alternative) &amp; sometimes I just do not have the time. But in my experience, big libraries call for trouble in the long term. You will hit bugs that you will have to deal with, and in that big codebase that&#8217;s probably not going to be easy.</p>
<h2>How I came to this mentality</h2>
<p>Over the years I used multiple big libraries, they all got 2 things in common (mostly), they have multiple bugs &amp; they are hard to debug. Even if you get to debug it, you are now stuck with your version, forget about updates. You can if course create a pull request  to get your fix in, but in most &#8220;hobby&#8221; libs your pull request will sit there for a long time, and often be rejected for multiple reasons, then you have to make a better pull request or just abandon that.</p>
<p>You also have to consider that you get a lot of dead code, I never use the ajax functionality of my validation engine, but I got that code in every app I make.</p>
<h2>An example?</h2>
<p>First example, Colorbox, a jQuery plugin that do lightboxes in every ways imaginable. Well all those features have a cost, there is currently 128 open issues on github. Colorbox have 1000 loc &amp; the thing is, a minimal lightbox script it&#8217;s about 100 loc. The one I coded for CakeMail does 130 and I&#8217;m not even trying to optimize the size, that include options, passing variables and integrating a templating engine. It&#8217;s consistent, it&#8217;s very small, and it&#8217;s easy to build upon if needed by anybody.</p>
<p>Obviously I don&#8217;t have all the features Colorbox have, but really, I do not need them.</p>
<p>Let&#8217;s take another example, chosen, a very known lib that change your select box into a more friendly usable box. If you go to the chosen github repo you will see that the project is very popular, but you will also see it got 2 versions, one using jQuery and an other using prototype. Most importantly there is about 300 issues and 50 pull requests pending. That&#8217;s certainly not extraordinary.</p>
<p>Even better, you can replicate some of chosen features like skinning the select using only some css tricks, and it&#8217;s valid up to ie7. Talk about performance enhancements.</p>
<h2>An exception, the agency developer</h2>
<p>Having work in multiple web agencies I can see how big libraries becomes handy. You work on multiple websites or apps at once, on tight budget &amp; tight delays. Creating a ton of different products makes for a ton of requirements, and that&#8217;s where these libraries comes in, you don&#8217;t want to code yourself an image sliders in a lightbox, it&#8217;s much faster taking one that does everything for you and hope for the best.</p>
<p>Also theoretically, it  makes it easier on the long run for your team to collaborate always using and fixing the same plugins, even if there are big.</p>
<h2>The Validation Engine future</h2>
<p>Like I said, I am in this boat. I am currently looking at making a much, much lighter version of my validation engine, I want to get back to that swift and more manageable first version of 400 loc.  I&#8217;m not saying I&#8217;m killing the big one of course, it&#8217;s just that I am currently lacking a light validator in my day to day work and I want it, badly.</p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/jM_YkYQ63-o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/death-to-monolithic-libraries/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/death-to-monolithic-libraries/</feedburner:origLink></item>
		<item>
		<title>The jQuery 1.9 &amp; 2.0 upgrade awkwardness</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/v4V-rUQRIpw/</link>
		<comments>http://www.position-absolute.com/articles/the-jquery-1-9-2-0-upgrade-akwardness/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 02:08:18 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4337</guid>
		<description><![CDATA[<p>In a recent study it has been said that about 50% of major websites use jQuery. It has become omnipresent and you can actually find job listings that does not list javascript as a skill but list jQuery. </p>
<p>You don&#8217;t&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>In a recent study it has been said that about 50% of major websites use jQuery. It has become omnipresent and you can actually find job listings that does not list javascript as a skill but list jQuery. </p>
<p>You don&#8217;t have to search far to understand why. Using jQuery is the easiest way to add interactions to a website. The api is intuitive, easy to use, the documentation is solid, it works cross-browser &#038; that api very rarely changes.</p>
<p><strong>Or was.</strong></p>
<p>2.0 will be a major rewrite removing support for ie8 and earlier releases, it also removes a bunch of deprecated methods. 1.9 already started the ball removing a lot of stuff in preparation of 2.0, including the live api, and that made <a href="http://bugs.jquery.com/ticket/13220">a bit of drama</a>. Of course they created tools to make it has painless has possible to migrate but the facts remains, jQuery will change a lot in 2013.</p>
<p>One of the heartbreaker for me is how they now handle HTML strings vs selectors in 1.9. I won&#8217;t go in details but here&#8217;s how I need to handle underscore templates now because some of my templates start with a space or tab:</p>
<p>$( $.parseHTML( _.template($(&#8220;#content&#8221;).html(),{})));</p>
<h2>A small anecdote</h2>
<p>Less than one year ago I had to take a skill test in a major firm in Montreal. In it, some jQuery tidbits, one of those asked me which of these methods I should use in certain conditions, between live(), delegate() and bind(). Nothing on the unified on() method. Trying not to be an ass I added some explications on the on() api instead of the choices I had.</p>
<p>But that made me think about decapreated jQuery methods and the users expectations of support from the jQuery team. Most web devs I know that are <strong>not</strong> passionate about front-end still have a very good knowledge of jQuery, and most of them expect two things. First is it&#8217;s not going to change and secondly it&#8217;s compatible cross-browser.</p>
<h2>In the end..</h2>
<p>The biggest reason why jQuery became popular was that it had an unified way to make work complex solutions on ie6, ie7 &#038; firefox.</p>
<p>We are losing a bit of both those points that the average user expects from jQuery and that makes me feel awkward about the new releases. Not to say jQuery should not move forward, my feeling is probably wrong but it&#8217;s still the feeling I got right now.</p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/v4V-rUQRIpw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/the-jquery-1-9-2-0-upgrade-akwardness/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/the-jquery-1-9-2-0-upgrade-akwardness/</feedburner:origLink></item>
		<item>
		<title>Another year in review</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/fylvJnyVINI/</link>
		<comments>http://www.position-absolute.com/articles/another-year-in-review/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 02:01:22 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4269</guid>
		<description><![CDATA[<p>Each year I try to do a small review of what has been going on in my dev life, but first I wanted to get out a couple of articles I written a long time ago that I particularly found&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Each year I try to do a small review of what has been going on in my dev life, but first I wanted to get out a couple of articles I written a long time ago that I particularly found interesting or just funny, let&#8217;s get started:</p>
<p><strong>2011</strong><br />
<a href="http://www.position-absolute.com/articles/another-year-ending/">Year in review</a></p>
<p><strong>2010</strong><br />
<a href="http://www.position-absolute.com/news/overtime-and-web-developers/">Overtime and web developers</a></p>
<p><strong>Early 2009 (Predictions &#038; random thoughts) </strong><br />
<a href="http://www.position-absolute.com/articles/where-front-end-web-development-will-be-in-5-years/">Where front-end web development will be in 5 years?</a> <em>(Chuckle&#8230;)</em><br />
<a href="http://www.position-absolute.com/articles/the-next-generation-of-web-developers-and-designers/">The next generation of web developers and designers</a></p>
<p><strong>2008, from my old blog</strong><br />
<a href="http://www.position-absolute.com/articles/the-front-end-developers-burden/">The front-end developers burden</a> (First article ever)</p>
<h2>Less and Sass changed everything again</h2>
<p>CSS preprocessor got an hard time at first and lots of devs were against it, myself included. Just thinking about debugging this mess was telling me it would never be worth it. Boy was I wrong. Where CSS standards failed, CSS preprocessor flourished, and it&#8217;s now the way CSS should be build. It also helps that big projects like Twitter Bootstrap really jumpstarted popularity and tools to build upon.</p>
<p>Working with Less is just a joy, using mixins feels natural and not adding 3 times border-radius for old browsers is magic. Throw <a href="http://csshat.com/">CSS Hat</a> into the mix and you get auto-generating LESS code for Photoshop effects that <strong>works</strong>. </p>
<p>You will no longer hate your designer and your designer will love you back thinking you are the fucking best front-end developer he never saw in his life (<em>just don&#8217;t tell him the trick</em>).</p>
<h2>Twitter Bootstrap</h2>
<p>In 5 years, looking at old web internal tools much of them we be built on Twitter Bootstrap.</p>
<p><a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> launched in 2011 but really picked up this year. It&#8217;s the perfect boilerplate to any web project, with multiple JS components, perfect CSS &#038; HTML, LESS mixins, all tested on IE8, oh yeah and it looks pretty impressive.</p>
<p>If you have an internal tool to build on a tight budget and you do not use this project you are probably missing out a great opportunity to give a great default UI to your project and improve the general quality so it can last longer.</p>
<h2>Web tooling frameworks have multiplied</h2>
<p>If I base myself on how earlier technologies have blossomed like JS file loaders, 2013 will be the year of shell tooling frameworks. With <a href="https://github.com/zynga/jasy">Jazy</a>, <a href="http://gruntjs.com/">grunt.js</a>, <a href="http://yeoman.io/">Yeoman</a> we already got some serious quality projects starting to get some steam.</p>
<p>I took a look at Yeoman and even created a small script to automate my build process in node but I&#8217;m not completely ready to jump into the boat yet, pretty sure I will come around in time, like I did for JS file loaders and CSS preprocessor!</p>
<h2>Mobile web apps have taken over native, NOT</h2>
<p>Yeah, yeah Zuck dumped it&#8217;s HTML5 app for a native one, I can&#8217;t blame him. Facebook MUST give native performance to their users at the scale they are, <strong>that makes sense</strong>. But if you got a small product, a small web team, you can really get 95% there with good old CSS3 and HTML5 if your good at it (and if you only support iOS5+ and Android 4+). </p>
<p>Hell Linkedin created an amazing iPad app using HTML5, if it&#8217;s not a proof that it&#8217;s coming along, I don&#8217;t know what is. Their <a href="http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5">engineering blog</a> is full of information about how they created it too.</p>
<p>Also please check the demo of <a href="http://www.sencha.com/blog/the-making-of-fastbook-an-html5-love-story">fastbook</a> from sencha, it&#8217;s pretty good.</p>
<h2>More and more front-end MVC</h2>
<p>With angular.js, ember, spine and backbone.js you got some hot action in the MVC front. I don&#8217;t believe detractors that says javascript is not powerful or fast enough to handle a complete stack and says things like it won&#8217;t handle big datagrids or won&#8217;t cache properly. It&#8217;s ready, already a lot of companies likes grooveshark use the front-end stack, and you also got Google investing some big bucks into Angular.</p>
<p>Earlier this year I launched <a href="http://www.backbonefu.com">backbonefu.com</a> because we were cruelly missing a place where you could delve in multiple backbone articles (Unfortunately I let that website a bit driftting).  Obviously I  throwed  myself into backbone, and with some good success&#8217;s launching WeddingDeck, and currently working on the Cakemail mobile web app and making very good progress. I really like how easy it is to modify the code base to my wish, and it was in fact built in a certain way that allow encourage you to bend it like this. Compare that to angular you need to be a lot more careful if you decide to dabble into its core.</p>
<p>I&#8217;m not saying Backbone is better than everything else (because it really doesn&#8217;t), angular and ember look pretty awesome but currently I try to stick to what I can work with.</p>
<p><em><strong>Here we go, that&#8217;s what got my attention this year, see you next year!</strong></em></p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/fylvJnyVINI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/another-year-in-review/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/another-year-in-review/</feedburner:origLink></item>
		<item>
		<title>Html5 drag’n drop file upload, shenanigans used only by developers?</title>
		<link>http://feedproxy.google.com/~r/position-absolute/nyJv/~3/kiloHZICm-4/</link>
		<comments>http://www.position-absolute.com/articles/html5-dragn-drop-file-upload-shenanigans-used-only-by-developers/#comments</comments>
		<pubDate>Mon, 17 Dec 2012 14:33:25 +0000</pubDate>
		<dc:creator>Cedric Dugas</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Javascript / jQuery]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://www.position-absolute.com/?p=4248</guid>
		<description><![CDATA[<p>Uploading files has been done since the ice age of web development. In fact uploading a file using Html4 and an iFrame is pretty easy and does not even require a page refresh and about 0 line of code on&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Uploading files has been done since the ice age of web development. In fact uploading a file using Html4 and an iFrame is pretty easy and does not even require a page refresh and about 0 line of code on the front-end, obviously you won&#8217;t get a progress bar but does it really matter?</p>
<p>Uploading in a nutshell:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;form method=&quot;POST&quot; id=&quot;frm_upload_logo&quot; action=&quot;/ui/settings/logo&quot; target=&quot;upload_logo_iframe&quot; enctype=&quot;multipart/form-data&quot;&gt;
 &lt;input type=&quot;file&quot; name=&quot;logo&quot;&gt;
&lt;/form&gt;
&lt;iframe src=&quot;/blank.html&quot; name=&quot;upload_logo_iframe&quot; class=&quot;upload_frame&quot;&gt;&lt;/iframe&gt;
&nbsp;
&lt;script&gt;
        $(&quot;iframe[name='upload_logo_iframe']&quot;).load(function(){
            if ($(this).contents()[0].URL.indexOf('/blank.html') == -1)
            {
                // Upload is complete, do something
            }
        });
&lt;/script&gt;</pre></div></div>

<h2>So&#8230; Html5</h2>
<p>Looking for a easy way of implementing desktop drop file upload for CakeMail I was confronted to 2 issues. One, I&#8217;m not sure anyone is using drop file uploading beside web developers using Gmail. And also, my current implementation require 0 lines of code &#038; is stable in every browser. Should I even think about implementing a point of failure with a different behaviour in older browsers  when I got this solid solution?</p>
<h2>Dragging, really?</h2>
<p>Trying to look for articles on the usefulness of the drag and drop file api is futile, you will be greeted only by articles talking about implementation  in 50 ways possible. Only thing left to do? Asking friends if they ever dragged a file in their browser. The response is overwhelming, 0 ever tried it. </p>
<p>Frankly even me when I do it I don&#8217;t find it&#8217;s a great experience even if, I agree, that it is sometimes convenient. It always involve bringing my finder window at the forefront, closing the multiple finders I had open, moving the finder so I can see at least a part of the upload box, and finally dragging it in a partially shown box. Not what I would consider a great user experience.<br />
<img src="http://osxdaily.com/wp-content/uploads/2012/12/drag-drop-gmail-attachments.jpg"></p>
<p>Really not sure this is helping normal users navigating your app, finding that file in their folder in another window also gets them completely out of your app. Personally I think we just like it because we drool at the fact we are dragging files in our web apps and it works, not because it&#8217;s really useful.</p>
<h2>The Html5 file api</h2>
<p>Then there is when you need to upload big files, now you get a bit of trouble with html4 upload. There is no api giving you progress on your upload and that arguably can be pretty useful. But in this day an age, you need to really think what a big file is when most people upload at 300k per seconds I rarely see a use case for that (beside for video and big archived files).</p>
<p>I&#8217;m I saying that you should absolutely not implement those api&#8217;s? I&#8217;m not, if you have time on your hand and want to add some alternative paths in your app great, or if you are uploading big files then you need a progress bar instead of just a gif loader. But I think you should really think about the usefulness of those integration. </p>
<p>In the end you still have to default to HTML4 form uploading for IE users and having 2 implementations for the same functionality always add complexity, testing time and bugs.  </p>
<p><em>Got any articles or paper on uploading files user experience design? Please post them in the comments, I would be more than happy to read them!</em></p>
<img src="http://feeds.feedburner.com/~r/position-absolute/nyJv/~4/kiloHZICm-4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.position-absolute.com/articles/html5-dragn-drop-file-upload-shenanigans-used-only-by-developers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.position-absolute.com/articles/html5-dragn-drop-file-upload-shenanigans-used-only-by-developers/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 6.158 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-18 17:26:52 --><!-- Compression = gzip -->
