<?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>RAAK &#124; Digital &#38; Social Media Agency London &#187; web development</title>
	<atom:link href="http://wewillraakyou.com/tag/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://wewillraakyou.com</link>
	<description>Putting you in touch with your crowds</description>
	<lastBuildDate>Tue, 22 May 2012 20:01:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The HTML5 canvas, without tears</title>
		<link>http://wewillraakyou.com/2011/06/paper-js-html5-canvas/</link>
		<comments>http://wewillraakyou.com/2011/06/paper-js-html5-canvas/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 15:01:23 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[graphics programming]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[paper.js]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://wewillraakyou.com/?p=4755</guid>
		<description><![CDATA[Working with the HTML5 canvas requires quite a bit of getting used to. It's proper graphics programming - pixel manipulation at the lowest level. Paper.js makes it a lot less daunting.]]></description>
			<content:encoded><![CDATA[<p>The HTML5 canvas turns web pages into games consoles, renders Flash practically useless and archaic and leaves web developers with goosebumps, both in excitement and in fear. Because face it, canvas programming is low-level stuff (devspeak for: <em>here lurks tigers</em>).</p>
<p>And exactly that is why every attempt at taming the wild wilderness hiding in the blank canvas is met with ample shoulder-carrying by ululating tribes of eager developers.</p>
<p><img src="http://wewillraakyou.com/wp-content/uploads/2011/06/html5_canvas_paper_js.jpg" alt="HTML5 Canvas with Paper.js" title="HTML5 Canvas with Paper.js" width="360" height="232" class="alignnone size-full wp-image-4768" /></p>
<p>This type of programming environment, where doing fairly basic stuff requires you to write a fair amount of repetitive code and where every line of code requires you to desperately draw pictures and scribble calculations in an attempt to try and visualize what exactly is going to be drawn on the canvas &#8211; this is the ideal breeding ground for frameworks and utility libraries.</p>
<p>And that&#8217;s where <a href="http://paperjs.org/">Paper.js</a> steps in. Quite successfully, I might add.</p>
<p><iframe width="360px" height="360px" src="http://wewillraakyou.com/paper01.html" scrolling="no" frameBorder="0"><br />
<a href="http://wewillraakyou.com/paper01.html"><img src="" alt="paper.js demo 1" title="Paper.js demo 1" width="360" height="360" class="alignnone size-full wp-image-4349" /></a><br />
</iframe></p>
<p>Paper.js is not just a utility library. It is actually an entire document object model for vector graphics.</p>
<p>What does this mean?</p>
<p>Similar to the way <strong>html</strong> has defined <strong>document objects</strong>, which define common behaviours for text, Paper.js has defined sets of objects that simplify working with <strong>vector graphics</strong>, especially if you&#8217;re used to working in a typical vector graphics editor like Adobe Illustrator.</p>
<p><iframe width="360px" height="360px" src="http://wewillraakyou.com/paper02.html" scrolling="no" frameBorder="0"><br />
<a href="http://wewillraakyou.com/paper02.html"><img src="" alt="paper.js demo 2" title="Paper.js demo 2" width="360" height="360" class="alignnone size-full wp-image-4349" /></a><br />
</iframe></p>
<p>Animation is built on top of this in a very simple way by providing a hook into the frame renderer in the form of a user-definable function that executes every time a frame is rendered.</p>
<p>In normal language this means that every time Paper.js draws a frame in the canvas, it gives the programmer the ability to tell it what to draw.<br />
The actual drawing of the frame is not triggered or controlled by the programmer; Paper.js just keeps drawing frames as fast as possible, executing the right functions at the right time.</p>
<p>User interaction is done in the same way. The programmer has the ability to define pieces of code that get executed when the mouse is clicked, the mouse is moved, a key is pressed on the keyboard, etc.</p>
<p><iframe width="360px" height="220px" src="http://wewillraakyou.com/paper03.html" scrolling="no" frameBorder="0"><br />
<a href="http://wewillraakyou.com/paper03.html"><img src="" alt="paper.js demo 3" title="Paper.js demo 3" width="360" height="220" class="alignnone size-full wp-image-4349" /></a><br />
</iframe></p>
<p>At this point, I could go into more detail about using Paper.js and it will all become very technical. But that&#8217;s not really necessary, because the <a href="http://paperjs.org/tutorials/">Paper.js tutorials</a> are simply brilliant and very concise.</p>
<p>If you&#8217;re at all so inclined, dive in and start playing &#8211; that&#8217;s where I&#8217;m going to be for the next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/06/paper-js-html5-canvas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery Mobile and the Fall of the Native App</title>
		<link>http://wewillraakyou.com/2011/04/jquery-mobile-fall-of-native-app/</link>
		<comments>http://wewillraakyou.com/2011/04/jquery-mobile-fall-of-native-app/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 09:10:50 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile content]]></category>
		<category><![CDATA[mobile web]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web standards]]></category>
		<category><![CDATA[windows mobile]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=4202</guid>
		<description><![CDATA[Ever since Apple's <em>hugely unpopular</em> announcement that they're going to claim 30 percent of all developers' in-app revenue, <em>alternative platform</em> talk has been more rife than ever before. jQuery Mobile might just provide the right means to and end for such a platform.]]></description>
			<content:encoded><![CDATA[<p>Ever since Apple&#8217;s <em>hugely unpopular</em> announcement that they&#8217;re going to <a href="http://www.themusicnetwork.com/music-features/industry/2011/03/08/apple-apps-biting-off-more-than-it-should-chew/">claim 30 percent</a> of all developers&#8217; in-app revenue, <em>alternative platform</em> talk has been more rife than ever before.</p>
<p>It certainly looks like Apple has cooked the goose that lays the golden eggs for dinner.</p>
<p><img class="alignnone size-full wp-image-4208" title="jQuery Mobile" src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/jquery_mobile.jpg" alt="jQuery Mobile" width="360" height="232" /></p>
<p>So, what is this <em>alternative platform</em>, exactly?</p>
<p>I mean, you don&#8217;t want users to have to <a href="http://en.wikipedia.org/wiki/IOS_jailbreaking">jailbreak</a> their iDevices to be able to install the <a href="http://woos.at">next big serendipity app</a>, right?</p>
<p><em>Let&#8217;s take one step back.</em></p>
<p>In the blue corner, we have native frameworks and languages. These are vastly different from platform to platform &#8211; in other words, once you&#8217;ve finished coding an iPhone application, you still have to code a version for Android from scratch, as well as a version for Blackberry, a version for Windows Mobile, and every single update you release, has to be ported to all these platforms.</p>
<p>In the red corner, we have good old HTML5, CSS3 and Javascript. It works the same in all browsers on all devices, with minimal styling adjustments between different platforms. In other words, a mobile web app is easier to build than a traditional desktop website.</p>
<p><em>This is mainly due to the fact that, on mobile, there is no equivalent to Internet Explorer version 6, 7 and 8. Hallelujah!.</em></p>
<p>The main trade-off here is <em>native app styling</em>, which is quite design-heavy, and has had a lot of thought and development put into it.</p>
<p>And here <a href="http://jquerymobile.com/">jQuery Mobile</a> provides us with a true Silver Bullet.</p>
<h2 class="subTitle">The jQuery legacy</h2>
<p><a href="http://jquery.com/">jQuery</a>, self-branded as the <em>write less, do more javascript library</em>, has all but re-invented Javascript in the past six years. <a href="http://ejohn.org/blog/selectors-in-javascript/">Based on</a>, and improving on a discontinued library called <a href="http://bennolan.com/behaviour/">Behaviour</a>, jQuery treats Javascript development as a bag of functions tied to HTML elements. This results in a much more organic development paradigm for the web.</p>
<p>This all sounds pretty technical, but all you need to know is, once you&#8217;re used to jQuery, it makes previously complicated things very simple. <strong>In a very big way.</strong></p>
<h2 class="subTitle">jQuery goes mobile</h2>
<p>In August 2010, jQuery <a href="http://blog.jquery.com/2010/08/13/the-jquery-project-is-proud-to-announce-the-jquery-mobile-project/">announced</a> an alpha version of their new library, jQuery Mobile.</p>
<p>Everything jQuery does for the desktop also applies to mobile, so what does jQuery mobile add to the mix?</p>
<p><em>Styling and behaviour.</em> With some Javascript and CSS magic, jQuery Mobile turns this:<br />
<img class="alignnone size-full wp-image-4205" style="border: 1px solid black;" title="Woos.at unstyled" src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/woosat_unstyled.jpg" alt="Woos.at unstyled" width="360" height="384" /></p>
<p>into this:<br />
<img class="alignnone size-full wp-image-4206" style="border: 1px solid black;" title="Woos.at with jQuery Mobile" src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/woosat_jquery_mobile.jpg" alt="Woos.at with jQuery Mobile" width="360" height="335" /></p>
<p>without any work on the developer&#8217;s part.</p>
<p>Pretty nifty eh?</p>
<h2 class="subTitle">In the Interim &#8230;</h2>
<p>While the app store is still alive and well, HTML5, CSS3 and jQuery Mobile can be used in conjunction with platforms like <a href="http://www.phonegap.com/">Phonegap</a> or <a href="http://www.appcelerator.com/">Appcelerator Titanium</a> to actually compile HTML5/jQuery apps down to native apps on most of the main mobile platforms.</p>
<p>Hopefully, before too long, one of these will happen:</p>
<ul>
<li>Someone will start an alternative, hugely adopted HTML5 app store (quite likely)</li>
<li>Apple will come to their senses and try and save the app store by including HTML5 apps (less likely)</li>
<li>The entire app store paradigm will die, and people will install apps from a variety of third party providers (not very likely at all)</li>
</ul>
<p>So &#8230; while we keep on building HTML5 apps and mincing them into apps through Phonegap, won&#8217;t someone please go ahead and start up an HTML5 app store, please? (and make it hugely popular, of course &#8230; )</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/04/jquery-mobile-fall-of-native-app/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Node.js: The death of PHP</title>
		<link>http://wewillraakyou.com/2011/03/nodejs-death-of-php/</link>
		<comments>http://wewillraakyou.com/2011/03/nodejs-death-of-php/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 13:42:01 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=4158</guid>
		<description><![CDATA[The use of PHP as server-side language in AJAX communication might eventually come to an end, thanks to a server-side Javascript engine like Node.js]]></description>
			<content:encoded><![CDATA[<p>With the rise of AJAX on the web, <a href="http://www.wewillraakyou.com/2011/01/javascript-brilliant-future/">javascript rose</a> from being an obscure, client side language mainly used for gimmicky animations and popup ads, to a proper web programming language used for sophisticated network comms between browser and server.</p>
<p>The server side of AJAX is still in most cases handled by PHP, causing most web developers to, apart from markup languages HTML and CSS, <strong>having to code in both Javascript and PHP</strong>. (PHP could be replaced here by Python, Perl, or any other server-side language).</p>
<p>Well, <strong>those days might be over</strong>, thanks to a nifty little (and I mean <em>litte</em>, as in extremely lightweight) engine called <a href="http://nodejs.org/">node.js</a>, which not only runs javascript on the server, but actually uses javascript <em>as the server</em>.</p>
<p><img src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/nodejs.jpg" alt="Node.js" title="Node.js" width="360" height="232" class="alignnone size-full wp-image-4168" /><br />
<!--image--></p>
<h2 class="subTitle">A Javascript webserver? What are they smoking?</h2>
<p>My initial rection to this is a bit similar to seeing someone building a <em>palace out of ice</em>, or a <em>steam locomotive out of sand</em>. Amazement at the amount of effort and creativity that&#8217;s being put into the idea, but very little for its actual usefulness.</p>
<p><em>Wake up and smell the future.</em></p>
<p>If <a href="http://www.google.com/trends?q=node.js&#038;ctab=0&#038;geo=all&#038;date=2010&#038;sort=0">this google trends graph</a> is anything to go by, I&#8217;ll have to rethink my attitude a bit:</p>
<p><img src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/nodejs_trend.jpg" alt="Node.js Google trend" title="Node.js Google trend" width="360" height="137" class="alignnone size-full wp-image-4163" /></p>
<p>Let&#8217;s have a look at the Javascript engine under node&#8217;s hood: an engine written by Google, called <a href="http://code.google.com/p/v8/">V8</a>.</p>
<h2 class="subTitle">Why did Google write their own Javascript engine?</h2>
<p>When Javascript was first integrated into the Netscape Navigator browser in the mid 1990&#8242;s, it&#8217;s main goal was to provide access to an HTML document&#8217;s elements (called the DOM tree), after the document has been rendered by the browser. Its use was mainly to make small alterations in content based on user interaction, like changing the colour of a button when the mouse hovered over it, or popping up small browser windows (annoyingly so).</p>
<p>Performance was not a big issue.</p>
<p>Later, people started using Javascript to, after the document has been rendered in the browser, pull more content from the server to update into the browser, thus making web pages <em>active</em>. A good example of this is GMail, which, without having to reload the page in your browser, adds new mail messages in your inbox. This technique is called AJAX.</p>
<p>Javascript is an integral part of the AJAX revolution, which was largely driven by Google. They quickly realized the severe shortcomings of most Javascript engines, and wrote their own: the V8 engine, highly optimized for <a href="http://code.google.com/apis/v8/design.html">speed and memory consumption</a>.</p>
<p>Given the way the V8 engine was written, and the <em>asynchronous</em> nature of Javascript (which basically means Javascript <strong>multitasks</strong> by default), It suddenly becomes clear that Javascript, given the right implementation, could be better suited to the server side of AJAX than PHP, Python or Perl. That means, in the GMail example, that both the part that reads the new mail on the server, and the part that shows you your new mail in your inbox, could written in Javascript.</p>
<h2 class="subTitle">Seeing the light</h2>
<p>Node.js extends the V8 engine with a set of libraries that makes building a simple web server as simple as this:</p>
<p><code style="font-size: 10px;"><br />
var http = require('http');<br />
http.createServer(function (req, res) {<br />
    res.writeHead(200, {'Content-Type': 'text/plain'});<br />
    res.end('Hello Worldn');<br />
}).listen(8124, "127.0.0.1");<br />
</code></p>
<p>You don&#8217;t have to understand Javascript to see that <em>that is <strong>really</strong> simple</em>. Given that Node is installed on your server, you simply have to run a .js file with the above content with Node, to have a working (though basic) webserver.</p>
<p>On top of that, as highlighted in this <a href="http://mashable.com/2011/03/10/node-js/">article on Mashable</a>, node&#8217;s footprint on the web server is extremely small, up to 1000 times smaller per connection, compared to Apache (the most commonly used web server on the Internet). This means, as your site accumulates concurrent users, your server could take 1000 times longer to run out of memory.</p>
<p>Apart from this, users are more likely to experience a smooth, fast user journey, because of the fact that so much less <em>server oomph</em> is needed to process and deliver the same data.</p>
<p>Node is not the be-all and end-all of server solutions &#8211; it has a very specific use, which happens to fit a common trend today: <em>providing a lightweight server infrastructure to serve up large amounts of small chunks of data to large numbers of users</em>.</p>
<p>This makes node a perfect match for the <strong>realtime web</strong>, for <strong>gaming apps</strong>, for <strong>collaboration</strong>: basically all applications where <em>speed and concurrency</em> of data transfer matters.</p>
<h2 class="subTitle">Where does this leave PHP, Python, and their counterparts?</h2>
<p>PHP will remain to be the best Hypertext Preprocessor there is, until further notice (which is what it was built for &#8211; generating and manipulating HTML). Python will remain the language of choice for building very complex server applications quickly. Perl will remain &#8230; well, Perl.</p>
<p>I do think, however, that PHP, Python or Perl&#8217;s role as server-side language in AJAX communications could diminish into obscurity. <em>Let&#8217;s wait and see</em>.</p>
<p>Meanwhile, if you like to dive into Node, check these out:</p>
<ul>
<li><a href="https://github.com/joyent/node/wiki/Installation">Node Installation Instructions</a></li>
<li><a href="http://rsms.me/2011/03/23/ec2-wep-app-template.html">How to get Node running on an Amazon EC2 instance</a></li>
<li><a href="http://jobs.nodejs.org/a/jobs/find-jobs">Find a Node.js job</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/03/nodejs-death-of-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Foursquare&#039;s new &quot;venues on steroids&quot;</title>
		<link>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/</link>
		<comments>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 18:44:35 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[api development]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[social network]]></category>
		<category><![CDATA[tech insight]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=4125</guid>
		<description><![CDATA[In a very inspiring announcement, Foursquare unveiled their brand new client, containing an impressive list of new functionality. As it turns out, a lot more than that was happening in the engine room.]]></description>
			<content:encoded><![CDATA[<p>In a very inspiring <a href="http://blog.foursquare.com/2011/03/08/foursquare-3/">announcement</a> that reads like a <em>rags to riches</em> classic, <strong>Foursquare</strong> got on the <strong>SxSW</strong> train this year with a brand new client, containing an impressive list of functionality that has the potential to boost it from mere <strong>Social Game</strong> status to the <a href="http://www.youtube.com/watch?v=S80hf4kp25c#t=9m10s">Serendipity Platform</a> that everyone&#8217;s waiting for.</p>
<p>This is what happened in their shop window. As it turns out, a lot more was happening <a href="http://developer.foursquare.com/venues/">in the engine room</a>.</p>
<p><img src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/foursquare_venues_api.jpg" alt="Foursquare venues API" title="Foursquare venues API" width="360" height="232" class="alignnone size-full wp-image-4126" /></p>
<h2 class="subTitle">Foursquare BC</h2>
<p>Before launching their new <a href="http://developer.foursquare.com/venues/">venues API</a> (beta), finding something useful to do with Foursquare&#8217;s data was notoriously difficult.</p>
<p>Let&#8217;s take, for example, the problem of finding only venues with lots of checkins, in real time. <em>This proved to be a major problem for us while building <a href="http://woos.at">WOOS.at</a> (mobile only)</em></p>
<p>These are the limitations:</p>
<ul>
<li>Foursquare&#8217;s normal API calls are <a href="http://developer.foursquare.com/docs/overview.html">rate limited</a> to 500 calls an hour.</li>
<li>Because of the low barrier to creating venues, the checkin-to-venue ratio is ridiculously low.</li>
<li>A maximum of 50 venues can be queried from Foursquare per venue search on the API.</li>
<li>There is no control over which venues are returned. If a venue is not in the 50 returned by a venue search, there&#8217;s no definite way of getting it.</li>
<li>The search radius for venue searches on the API is 40km.</li>
</ul>
<p>Given these limitations, it is possible to process 50 venues, 500 times an hour. This sounds like a lot, but 25000 venues an hour is not that much when you&#8217;re trying to discover trending venues in real time. Especially if you&#8217;re firing shots in the dark, and hoping for the best (hitting the same empty venues over and over).</p>
<p>In steps the new venues API.</p>
<h2 class="subTitle">Foursquare AD</h2>
<p>At face level, it doesn&#8217;t look like much, until you give it a second look, and read the fine print:</p>
<ul>
<li>The new API is meant for <em>userless access</em>. This means it is built for bot usage, as opposed to front end usage. Ideal for determining venue trends in real time.</li>
<li>The new API is rate limited at &#8230; <em>5000 calls an hour!</em></li>
<li>There is a new API call, <a href="http://developer.foursquare.com/docs/venues/trending.html"><em>venues/trending</em></a>, which automatically returns only the trending venues within a configurable radius (up to 2km)</li>
</ul>
<p>Suddenly, even 500 calls an hour would&#8217;ve been enough.</p>
<h2 class="subTitle">Foursquare Beyond</h2>
<p>Foursquare has a very vast location database. They have achieved this by making it extremely easy to create venues, and by being the first to do so. That is a very valuable resource, if dealt with correctly.</p>
<p>Up to now, Foursquare&#8217;s venues database was kind of proprietary, in the sense that its usability did not allow it to easily get a life of its own outside of Foursquare itself. <em>It was mainly used for checkins</em>.</p>
<p>By making their venue database accessible and usable, Foursquare have increased the value of the database by an immense amount. Add to this their <a href="http://mashable.com/2011/03/14/foursquare-venue-project/">actual reason</a> for launching the new venues API: <strong>Mapping</strong> Foursquares venue data to <strong>other venue databases</strong>, like Facebook, Twitter and Google places.</p>
<p>Suddenly the future looks a lot brighter for Foursquare (and its API consumers)!</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Gospel according to Javascript</title>
		<link>http://wewillraakyou.com/2011/01/javascript-brilliant-future/</link>
		<comments>http://wewillraakyou.com/2011/01/javascript-brilliant-future/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 16:41:27 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tech insight]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=3651</guid>
		<description><![CDATA[In the beginning, when the web was created, <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> was a language scoffed at by 'real' developers. It was the domain of <a href="http://en.wikipedia.org/wiki/Pop-up_ad">pop-ups</a>, <a href="http://en.wikipedia.org/wiki/Banner_ad">banner ads</a> and <a href="http://www.javascriptkit.com/script/script2/cursortrail.shtml">tacky cursor effects</a>. This is not at all the case anymore.]]></description>
			<content:encoded><![CDATA[<p>In the beginning, when the web was created, <a href="http://en.wikipedia.org/wiki/JavaScript">Javascript</a> was a language scoffed at by &#8216;real&#8217; developers. It was the domain of <a href="http://en.wikipedia.org/wiki/Pop-up_ad">pop-ups</a>, <a href="http://en.wikipedia.org/wiki/Banner_ad">banner ads</a> and <a href="http://www.javascriptkit.com/script/script2/cursortrail.shtml">tacky cursor effects</a>.</p>
<p>Many users, especially power users, would rather have been seen at work browsing weird <a href="http://www.furnitureporn.com/">furniture porn</a> than with a royal flush of colourful flashing pop-ups all over their desktop. Thus, they preferred to disable javascript in their browsers.</p>
<p>Well, no more, brother. Today is a new day.</p>
<p>Javascript is right now poised to become the <em>status quo</em> programming language of the future.</p>
<p><em>What!? How did this happen?</em></p>
<p><img class="alignnone size-full wp-image-3664" title="Javascript's brilliant future" src="http://www.wewillraakyou.com/wp-content/uploads/2011/01/javascript.jpg" alt="Javascript's brilliant future" width="360" height="232" /></p>
<p>Consider the following stats, plotting by date how many users had <strong>Javascript switched off</strong> in their browsers. This comes from W3schools, a web development howto and reference site boasting mostly web developers as users (ie power users):</p>
<table>
<tbody>
<tr>
<th>Date</th>
<th>JavaScript On</th>
<th>JavaScript Off</th>
</tr>
<tr>
<td>January 2000</td>
<td>80%</td>
<td>20%</td>
</tr>
<tr>
<td>January 2001</td>
<td>81%</td>
<td>19%</td>
</tr>
<tr>
<td>January 2002</td>
<td>88%</td>
<td>12%</td>
</tr>
<tr>
<td>January 2003</td>
<td>89%</td>
<td>11%</td>
</tr>
<tr>
<td>January 2004</td>
<td>92%</td>
<td>8%</td>
</tr>
<tr>
<td>January 2005</td>
<td>89%</td>
<td>11%</td>
</tr>
<tr>
<td>January 2006</td>
<td>90%</td>
<td>10%</td>
</tr>
<tr>
<td>January 2007</td>
<td>94%</td>
<td>6%</td>
</tr>
<tr>
<td>January 2008</td>
<td>95%</td>
<td>5%</td>
</tr>
</tbody>
</table>
<h2 class="subTitle">Genesis</h2>
<p><img class="alignnone size-full wp-image-3678" title="Genesis" src="http://www.wewillraakyou.com/wp-content/uploads/2011/01/genesis.jpg" alt="Genesis" width="360" height="160" /></p>
<p><em>And the web was created out of pure, static, marked up text, in the likeness of printed media. And it was called HTML.</em></p>
<p>Way back when the web started, all web content was static. In other words:</p>
<ol>
<li>The browser asks the server for a page.</li>
<li>The server generates the page.</li>
<li>The server sends the page to the browser.</li>
<li>The browser displays the page.</li>
</ol>
<p>This process is repeated every time the user clicks on a link or browses to a new page, even if some of the page content stays the same. The browser compensates for that by storing certain resources locally, like pictures, scripts and even pages.</p>
<p>It was this scenario that gave Javascript its bad name. The only place for Javascript in this setup was to attempt to create eye candy, or to show the user stuff they did not want to see, like pop-up ads.</p>
<p>Then, between 2002 and 2005, this scenario changed dramatically &#8230;</p>
<h2 class="subTitle">Exodus</h2>
<p><img class="alignnone size-full wp-image-3679" title="Exodus" src="http://www.wewillraakyou.com/wp-content/uploads/2011/01/exodus.jpg" alt="Exodus" width="360" height="160" /></p>
<p><em>And the web longed to be freed from the bounds of the browser. It longed to reach out to the Source, the Server. It was the dawn of the age of <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a>.</em></p>
<p>By using Javascript as a network client running in the browser and using PHP as a network server, the web became dynamic. The typical browser/server interaction changed as follows:</p>
<ol>
<li>The browser asks the server for a page.</li>
<li>The server generates the page, plus some Javascript client code.</li>
<li>The server sends the page to the browser.</li>
<li>The browser displays the page and runs the Javascript client code.</li>
<li>The Javascript client code connects to PHP server code, on user interaction, or periodically, to fetch new bits of content from the server as it becomes available</li>
<li>The new bits of content is inserted where appropriate, and the display is updated, without having to reload the parts of the page that didn&#8217;t change</li>
</ol>
<p>This move changed the web paradigm quite a bit. The web page became more of an application. Links became buttons, firing off locally stored pieces of Javascript instead of requests for entire pages to the server. The browser became a more of a platform, for applications to run on.</p>
<p>This tendency is about to be taken to an entirely new level, though &#8230;</p>
<h2 class="subTitle">Revelations</h2>
<p><img class="alignnone size-full wp-image-3680" title="Revelations" src="http://www.wewillraakyou.com/wp-content/uploads/2011/01/revelations.jpg" alt="Revelations" width="360" height="160" /></p>
<p><em>And behold, the apocalypse of the web was upon us, and it was called HTML5. Content became function, reader became platform, and the New Web rose from the dark depths, driven by Javascript, with a crown on its head, called CSS3.</em></p>
<p>In a <a href="http://www.wewillraakyou.com/2010/12/html5-browser-becomes-operating-system/">previous post</a> I explained how HTML5 is changing the browser into a fully capable application platform, replacing the Operating System, capable of running any application thinkable. This is a change that Google fully acknowledges by investing a huge amount of development and marketing effort in <a href="http://en.wikipedia.org/wiki/Google_Chrome_OS">ChromeOS</a>.</p>
<p>So, if HTML5 turns the browser into the OS, what language does it speak?</p>
<p><em>Javascript</em>.</p>
<p>Javascript is to the HTML5 capable browser what <a href="http://en.wikipedia.org/wiki/Machine_code">Machine Code</a> is to computer hardware, with the added benefit that it is <a href="http://en.wikipedia.org/wiki/Human-readable_medium">human readable</a>. HTML5 provides the containers to do amazing stuff in, but Javascript will do that amazing stuff.</p>
<p>All of a sudden, Javascript is becoming the language of the future. Any <a href="http://www.ruby-lang.org/en/about/">contenders</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/01/javascript-brilliant-future/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Death of RSS? Or death of XML?</title>
		<link>http://wewillraakyou.com/2010/09/death-of-rss-or-death-of-xml/</link>
		<comments>http://wewillraakyou.com/2010/09/death-of-rss-or-death-of-xml/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 10:59:08 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[tech insight]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://test.wewillraakyou.com/?p=2433</guid>
		<description><![CDATA[This week saw a <a href="http://www.subtraction.com/2010/09/11/the-death-of-the-rss-reader">flood</a> of <a href="http://stephentall.org/2010/09/12/bloglines-to-close-will-this-mark-the-death-of-rss-and-of-murdochs-paywall-experiment/"><em>Death of RSS</em></a> posts, tweets, and statuses. Most of these came in the wake of the <a href="http://www.theregister.co.uk/2010/09/13/bloglines_bye/">announcement</a> that Bloglines, the web-based RSS reader, will be shutting down on the 1st of October.]]></description>
			<content:encoded><![CDATA[<p>This week saw a <a href="http://www.subtraction.com/2010/09/11/the-death-of-the-rss-reader">flood</a> of <a href="http://stephentall.org/2010/09/12/bloglines-to-close-will-this-mark-the-death-of-rss-and-of-murdochs-paywall-experiment/"><em>Death of RSS</em></a> posts, tweets, and statuses. Most of these came in the wake of the <a href="http://www.theregister.co.uk/2010/09/13/bloglines_bye/">announcement</a> that Bloglines, the web-based RSS reader, will be shutting down on the 1st of October. There was more than one <a href="http://stateofthefourthestate.com/2010/09/13/reports-of-the-death-of-rss-readers-may-be-greatly-exaggerated/">well founded criticism</a> of all this doom and gloom, one of them a short, angry post, consisting of almost nothing but a chart depicting <a href="http://www.marketingpilgrim.com/2010/09/rss-dead.html">Google Reader&#8217;s obviously exponential growth</a> to date.</p>
<p>So &#8211; what&#8217;s all this then?</p>
<p>Unfortunately I cannot, and do not want to, make anything of the fact that Blogline is shutting down. A supermarket in my hometown once shut down when I was small, but somehow groceries just didn&#8217;t seem to go out of fashion. This debacle, along with the fact that <a href="http://en.wikipedia.org/wiki/RSS">RSS</a> is built upon <a href="http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html">XML</a>, did make me think about an entirely different issue though: the <a href="http://codebetter.com/blogs/jeremy.miller/archive/2009/03/14/can-we-declare-programming-in-xml-to-be-dead-yet.aspx">death of XML</a>.</p>
<p><a href="http://test.wewillraakyou.com/wp-content/uploads/2010/09/xml.jpg"><img src="http://test.wewillraakyou.com/wp-content/uploads/2010/09/xml.jpg" alt="Death of XML" title="Death of XML" width="360" height="232" class="alignnone size-full wp-image-2538" /></a></p>
<p>To be fair, I should rephrase it as <em>The probable death of XML as communications protocol, possibly leading to the timely demise of XML altogether, sometime in the next 50 years</em>. But that would&#8217;ve been just too long and awkward for a title.</p>
<p>I&#8217;ve been in love with XML ever since I started using it. Mostly because I&#8217;m an engineer, and XML is a complicated solution to a simple problem. XML is beautiful. XML is well formed, it&#8217;s extendable. You can use it to fill an entire page with a single tag, and thousands of nuances of attributes which might or might not be used in future. Many a late night we spent around the whiteboard, arguing over the exact schema to design for a specific problem &#8211; all of them being right, fo course, but each person believing in the superior beauty of their own schema.</p>
<p>I have wasted months, if not years, of my life on XML. It was months well spent.</p>
<p>Then came <a href="http://en.wikipedia.org/wiki/JSON">JSON</a>.</p>
<p>JSON still makes me think of an <a href="http://en.wikipedia.org/wiki/Array">array</a> written a bit differently. There&#8217;s no design to it, and most arrays and objects can be converted to JSON by a three year old doodling on a piece of paper. The conversion algorithm is so simple, it can be implemented on dried leave.</p>
<p>This is why, shortly after <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">AJAX</a> became big in web development, even though the <em>X</em> in AJAX stands for XML, programmers started <a href="http://www.developer.com/lang/jscript/article.php/3596836/Speeding-Up-AJAX-with-JSON.htm">using JSON to replace XML</a> as the communications protocol in AJAX.</p>
<p>The <a href="http://dev.twitter.com">Twitter API</a> supports both XML and JSON formats, with the JSON format being listed on top on all pages of their API documentation, a decision based on format popularity. The <a href="http://graph.facebook.com">Facebook Graph API</a> returns JSON only. The <a href="http://code.google.com/p/bitly-api/wiki/ApiDocumentation">bit.ly API</a> has the following sentence in their API documentation:</p>
<p><em>&#8221; &#8230; note that json is the default response format. but xml is also available &#8230; &#8220;</em></p>
<p>All of this makes me believe, as a communication protocol, XML is in the process of <a href="http://www.ibm.com/developerworks/library/x-xml2008prevw.html">making way</a> for a <a href="http://www.codestore.net/store.nsf/unid/BLOG-20060612">more agile successor</a>. It will be missed.</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2010/09/death-of-rss-or-death-of-xml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error Message Design: When things go wrong</title>
		<link>http://wewillraakyou.com/2010/08/error-message-design-when-things-go-wrong/</link>
		<comments>http://wewillraakyou.com/2010/08/error-message-design-when-things-go-wrong/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 16:02:55 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://test.wewillraakyou.com/?p=2260</guid>
		<description><![CDATA[This week one of the hot topics on Twitter was 404 pages. This immediately struck a chord with an issue I encounter way too often: Error messages are almost never designed]]></description>
			<content:encoded><![CDATA[<p>This week one of the hot topics in my Twitter feed was <a href="http://www.smashingmagazine.com/2007/08/17/404-error-pages-reloaded/">404 pages</a>, <a href="http://blippy.com/404">how to design them</a>, and <a href="http://webdesign.about.com/od/http/a/aa031306.htm">how not to design them</a>. This immediately struck a chord with an issue I encounter way too often: <strong>Error messages</strong> are almost never <strong>designed</strong>, and I have yet to see a single website brief which includes <strong>error message copy</strong>. There are <a href="http://www.readwriteweb.com/archives/the_story_of_the_fail_whale.php">exceptions</a>, but they are so few &amp; far between that, when they happen, they attract <a href="http://failwhale.com/">enormous support</a>.</p>
<p>And that&#8217;s the whole point.</p>
<p><img class="alignnone size-large wp-image-2100" title="Error Message: When things go wrong" src="http://www.wewillraakyou.com/wp-content/uploads/2010/08/C64-505x319.jpg" alt="Error Message: When things go wrong" width="360" height="227" /></p>
<p>In the retail and service sector, there&#8217;s a <a href="http://www.emeraldinsight.com/journals.htm?articleid=1811310&amp;show=html">well-known, yet unexpected way</a> in which new customers are turned into loyal customers. It works as follows:</p>
<ul>
<li>A <strong>customer</strong> has a <strong>complaint</strong>. They see someone at <strong>customer support</strong>.</li>
<li>The person at customer support <strong>solves their problem</strong> as well as possible, but above all, treat them with the highest of <strong>respect and dignity</strong>. The customer support officer needs to be a senior employee with advanced people&#8217;s skills.</li>
<li>The customer leaves, not only with their <strong>problem solved</strong>, but with an unbreakable mental association between your business and the person who treated them so well. This instantly turns them into a <strong>loyal customer</strong>. They feel that they have seen the <em>guts</em> of your business, and not just the carefully manicured face. And they liked it.</li>
</ul>
<p>How does this apply to websites?</p>
<p><strong>Error message copy</strong></p>
<p>When something goes wrong, like your website&#8217;s database server crashing, your pages getting corrupted, or even just when the user forgets to fill out a required field in a form, they are put in a situation where they see something different than the carefully designed front end of your website.</p>
<p>They see some kind of error message. How do these error messages treat them?</p>
<ul>
<li>Error message should not contain <strong>detailed technical information</strong> (<a href="http://en.wikipedia.org/wiki/PC_LOAD_LETTER">or some cryptic phrase</a>) that the developer used to debug the site, none of which makes any sense to the user. This is intuitively <strong>wrong</strong>, but so often the case. This is what happens if no copy is written for error messages, and it&#8217;s left up to the developer.</li>
<li>Error messages <a href="http://www.smileycat.com/design_elements/error_messages/#a001402">could be <strong>funny</strong></a> (do <a href="http://en.wikipedia.org/wiki/Not_a_typewriter">resist the temptation</a> to crack an <a href="http://en.wikipedia.org/wiki/Lp0_on_fire">in-joke</a>, though).</li>
<li>If at all possible error messages should go as far as providing an <strong>alternative</strong> way of leading the user to that which they have looked for in the first place. This is ideal, and this is what every error message should strive to achieve.</li>
</ul>
<p><strong>Error Message Design</strong></p>
<p>Error messages should <a href="http://www.smileycat.com/design_elements/error_messages/index.php">stand out</a> (maybe even <a href="http://www.smileycat.com/design_elements/error_messages/index.php?page=2#a001394">jump out</a>), especially in the case where the user is required to fix some input errors (like on html forms). It&#8217;s not necessary to make it too ugly or out of step with the rest of the design, but do make it the <strong>most obvious item</strong> on the page.</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2010/08/error-message-design-when-things-go-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internal network &amp; comms site for Cow PR</title>
		<link>http://wewillraakyou.com/2010/01/internal-comms-site-for-cow-pr/</link>
		<comments>http://wewillraakyou.com/2010/01/internal-comms-site-for-cow-pr/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 12:59:11 +0000</pubDate>
		<dc:creator>Gerrie Smits</dc:creator>
				<category><![CDATA[impact projects]]></category>
		<category><![CDATA[RAAK projects]]></category>
		<category><![CDATA[bespoke social networks]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=1344</guid>
		<description><![CDATA[&#8230;]]></description>
			<content:encoded><![CDATA[
<div class="ngg-galleryoverview" id="ngg-gallery-12-1344">


	
	<!-- Thumbnails -->
		
	<div id="ngg-image-49" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://wewillraakyou.com/wp-content/gallery/lipton-temper/lipton-temper-test-2.png" title=" "  >
								<img title="lipton-temper-test-2" alt="lipton-temper-test-2" src="http://wewillraakyou.com/wp-content/gallery/lipton-temper/thumbs/thumbs_lipton-temper-test-2.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-48" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://wewillraakyou.com/wp-content/gallery/lipton-temper/lipton-temper-test-1.png" title=" "  >
								<img title="lipton-temper-test-1" alt="lipton-temper-test-1" src="http://wewillraakyou.com/wp-content/gallery/lipton-temper/thumbs/thumbs_lipton-temper-test-1.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-50" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://wewillraakyou.com/wp-content/gallery/lipton-temper/lipton-temper-test-3.png" title=" "  >
								<img title="lipton-temper-test-3" alt="lipton-temper-test-3" src="http://wewillraakyou.com/wp-content/gallery/lipton-temper/thumbs/thumbs_lipton-temper-test-3.png" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2010/01/internal-comms-site-for-cow-pr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: basic
Object Caching 718/821 objects using disk: basic

Served from: wewillraakyou.com @ 2012-05-24 02:52:27 -->
