<?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>Ubelly &#187; thebeebs</title>
	<atom:link href="http://www.ubelly.com/author/thebeebs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubelly.com</link>
	<description></description>
	<lastBuildDate>Mon, 20 May 2013 13:45:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Create a great app in 10 minutes</title>
		<link>http://www.ubelly.com/2013/04/create-a-great-app-in-10-minutes/</link>
		<comments>http://www.ubelly.com/2013/04/create-a-great-app-in-10-minutes/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 12:30:28 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[app building]]></category>
		<category><![CDATA[windows 8 app development]]></category>
		<category><![CDATA[windows 8 apps]]></category>
		<category><![CDATA[zipapp]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=17805</guid>
		<description><![CDATA[<div><img width="312" height="158" src="http://www.ubelly.com/wp-content/uploads/2013/04/zipapp.png" class="attachment-type-photo wp-post-image" alt="zipapp" title="zipapp" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2013/04/zipapp-100x100.png" class="attachment-thumbnail wp-post-image" alt="zipapp" title="zipapp" style="float:left; margin:0 15px 15px 0;" />While working on a number of early Windows 8 projects I noticed companies often had a base set of features  <a href="http://www.ubelly.com/2013/04/create-a-great-app-in-10-minutes/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="312" height="158" src="http://www.ubelly.com/wp-content/uploads/2013/04/zipapp.png" class="attachment-type-photo wp-post-image" alt="zipapp" title="zipapp" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2013/04/zipapp-100x100.png" class="attachment-thumbnail wp-post-image" alt="zipapp" title="zipapp" style="float:left; margin:0 15px 15px 0;" /><p>While working on a number of early Windows 8 projects I noticed companies often had a base set of features that they were trying to implement. It seemed to me that you could build a tool that could generate a decent base app that would comply with the store rules and give developers a head start to making their apps a reality&#8230; so I kicked off development at the end of last year and have released <a href="http://www.zipapp.co.uk/">ZipApp</a>, a web based platform that lets you do just that.</p>
<p><strong>Getting Started: <small>from Zero to Hero in 10 minutes</small></strong></p>
<p><a href="http://zipapp.co.uk">ZipApp</a> gives you the ability to enter some data, hook up some of your existing online content and create a Minimum Viable Product which you can then extend and add functionality too if you wish.</p>
<p>So here is a simple guide to building your first app in 10 minutes:</p>
<p>Firstly, Go to ZipApp.co.uk and <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200206182&amp;CR_EAC=300090985">sign in with a Twitter, Google, Facebook or Microsoft Account</a>. Once you are signed in you will be able to create a new app. It will ask for some basic information such as the App Name, and a description.</p>
<p>You can then choose a template, these templates are simply colour variations, in my opinion the &#8220;ZipApp&#8221; Template looks the best. Next choose an icon. The icon will be used to create all of the Windows 8 tiles and store icons.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2013/04/image1.png"><img style="margin-right: auto; margin-left: auto; display: block; background-image: none; border: 0px;" title="image" src="http://www.ubelly.com/wp-content/uploads/2013/04/image_thumb1.png" alt="image" width="534" height="300" border="0" /></a></p>
<p>First add some groups to the application. We are going to add a YouTube playlist, a Twitter stream and an introduction page to our app. In ZipApp a group is a collection of Articles, Videos or Tweets. You can get your Videos from a YouTube playlist, your Tweets from a Twitter Hashtag and/or a Twitter Screen Name and your articles from either an RSS feed or you can manually add them via a simple Content Management system on ZipApp.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2013/04/image2.png"><img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" src="http://www.ubelly.com/wp-content/uploads/2013/04/image_thumb2.png" alt="image" width="692" height="231" border="0" /></a></p>
<p>To add a group edit your newly created application, navigate to the &#8220;Create New Group&#8221; button in the sidebar navigation. You will need to enter a group name and a description. For my YouTube group I added the title &#8220;How-to build Videos&#8221; and the description &#8220;A selection of videos that show you, step-by-step how to build Windows 8 applications from scratch&#8221; Finally I need to fill the group with my videos from YouTube.</p>
<p>To do this go down to the Plugin Configuration section and choose the YouTube Plugin. In the username box enter a YouTube username. It will then show you all of the playlists from that user. I am getting my videos from the user &#8220;windowsvideos&#8221; find the playlist you wish to add and press the &#8220;Create&#8221; button.</p>
<p>To add a twitter Group navigate to the &#8220;Create New Group&#8221; button in the side bar navigation. Enter a title for the Group such as &#8220;Tweets from the Team&#8221; add a description like &#8220;All the latest tweets from our friendly Team&#8221; go down to the plugin configuration section and choose the Twitter plugin. Enter a Twitter Username or hash tag such as &#8220;BuildWindows8&#8243; then press the &#8220;Create&#8221; button.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2013/04/image3.png"><img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" src="http://www.ubelly.com/wp-content/uploads/2013/04/image_thumb3.png" alt="image" width="679" height="439" border="0" /></a></p>
<p>To add our introduction page navigate to the &#8220;Create New Group&#8221; button in the sidebar navigation. Enter a Title for the Group such as &#8220;About&#8221; and a description such &#8220;This group contains articles about the application&#8221;. In the Plugin Configuration make sure that &#8220;Static Content&#8221; is selected. Press the &#8220;Create Button&#8221;.</p>
<p>Now we have a group called &#8220;About&#8221; we can add an article to this group. On the sidebar navigation expand the article section, find the group called &#8220;About&#8221; and click on it. This will load all of the Articles for that group.</p>
<p>Since we haven&#8217;t added any yet you will see a message telling you to add an article and a button saying create new, press this button. Enter a name for the article such as &#8220;An introduction to this app&#8221;, enter the Subtitle, this is used on the hub page just underneath the image. I often use it to describe the image or the article. It should be just one line, around 20-30 characters.</p>
<p>Enter a description of the article, this text appears next to the image on the hub page. You should use this text to get users intrigued about the content. It’s only a couple of lines but it should encourage the user to click on the article. If you have an image add it by clicking the small picture icon, this will give you an image dialog box. You can choose from your existing pictures or upload new ones to the system. Finally you will need to add some content. You can type the content directly into the text box and use the various formatting tools to get the text looking how you want it. Finally press the Create button.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2013/04/image4.png"><img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" src="http://www.ubelly.com/wp-content/uploads/2013/04/image_thumb4.png" alt="image" width="593" height="711" border="0" /></a></p>
<p>You now have an app and it&#8217;s ready to download. At the top of the page press the download button. A Zip file containing all of the source code for the application will be downloaded to your system.</p>
<p>Now you have a working app, you can submit to the store, or use Visual Studio to refine it, add new features and functionality. It generally takes a couple of days to get past certification. If you need any help I’ve detailed the <a href="http://zipapp.co.uk/help/download/">submission process here</a>.</p>
<p>Once your app has launched, your job isn&#8217;t over. As you gather more users, improvements will suggest themselves. You can start adding features and improve your content based upon feedback.</p>
<p><a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200206182&amp;CR_EAC=300090985">&gt;&gt; Register for ZipApp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2013/04/create-a-great-app-in-10-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 things you should know about developing Windows 8 Apps with HTML5</title>
		<link>http://www.ubelly.com/2012/08/5-things-you-should-know-about-developing-windows-8-apps-with-html5/</link>
		<comments>http://www.ubelly.com/2012/08/5-things-you-should-know-about-developing-windows-8-apps-with-html5/#comments</comments>
		<pubDate>Tue, 21 Aug 2012 13:28:52 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[Views]]></category>
		<category><![CDATA[Windows8]]></category>
		<category><![CDATA[WinJS]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=14837</guid>
		<description><![CDATA[<div><img width="312" height="280" src="http://www.ubelly.com/wp-content/uploads/2012/08/win8start-312px.jpg" class="attachment-type-photo wp-post-image" alt="win8start-312px" title="win8start-312px" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/08/win8start-312px-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="win8start-312px" title="win8start-312px" style="float:left; margin:0 15px 15px 0;" />Now that the Windows 8 release preview is out, a lot of developers are beginning to experiment with what they can do  <a href="http://www.ubelly.com/2012/08/5-things-you-should-know-about-developing-windows-8-apps-with-html5/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="312" height="280" src="http://www.ubelly.com/wp-content/uploads/2012/08/win8start-312px.jpg" class="attachment-type-photo wp-post-image" alt="win8start-312px" title="win8start-312px" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/08/win8start-312px-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="win8start-312px" title="win8start-312px" style="float:left; margin:0 15px 15px 0;" /><p><img class="alignnone size-full wp-image-14841" title="win8start-700px" src="http://www.ubelly.com/wp-content/uploads/2012/08/win8start-700px.jpg" alt="" width="700" height="100" /></p>
<p>Now that the <a href="http://preview.windows.com/" target="_blank">Windows 8 release</a> preview is out, a lot of developers are beginning to experiment with what they can do with Windows 8.</p>
<p>Unsurprisingly the focus for many is on Metro-style apps that can run across everything from desktop to slate. There are a number of ways to develop these apps but HTML5 is a good place to start if your background is Web Development.  While Metro offers fantastic flexibility, it does require that we get our heads around some new concepts. So for this post I thought I’d cover some of the areas I talk about at events and point you towards some useful resources to get you started.</p>
<p>I’ve selected 5 things that I think you should start exploring:</p>
<h2>Views</h2>
<p>When you’re producing an operating system without a specific device in mind, you need to make sure it’s flexible. After all you don’t know whether the user will be viewing the app on a PC with a large 27inch screen or a tablet with a 11.6 inch screen and a high pixel density. This can be a challenge for developers as they need to consider how there application will look across multiple devices in various orientations and in specific states (like when your app is snapped alongside another application).</p>
<p>The basic approach to solving this is by using adaptive controls, CSS3 Media Quires and CSS Grids. The following articles will help you understand how to make sure your app looks great whatever device it’s used on:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465386.aspx" target="_blank">Designing flexible layouts</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465343.aspx" target="_blank">Defining layouts and views</a></li>
</ul>
<h2>Search Contract</h2>
<p>There’s lots of common functionality built into Windows 8 that you can take advantage of as a developer. You take advantage of this functionality by using Contracts. If you use the Search contract then a user will be able to search your app by swiping their finger over the right hand side of the screen and bringing up the search charm (the charms are a set of buttons that are always available to the user regardless of what app they have open that provide common functionality) As you’d expect, this allows users to search within your app. However, it doesn’t end there. Because of the way contracts glue everything together, it will also allow people to search within other apps too – or across the web for that matter.</p>
<p>Users can search from one single place, regardless of the app they are using or where they are in the system.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465238.aspx" target="_blank">Adding search to a Metro style app</a></li>
</ul>
<h2>Share Contract</h2>
<p>Traditionally, when you’re looking to add sharing functionality to an app, you need to choose up front which other services you want to use. So you might decide that you really need to let users share with Facebook and Twitter and then code that in. Of course things change over time – who knows what kinds of sharing will be popular in future? (An obvious example right now is <a href="http://blogs.msdn.com/b/thebeebs/archive/2012/02/21/is-pinterest-s-html5-app-short-changing-users.aspx" target="_blank">Pinterest</a>.)</p>
<p>The <strong>share contract</strong> is a pretty cool way round this issue. If your app in a <strong>Share Source</strong> then it will be able to share specific content types with any app on the system that supports accepting those content Types. Apps that accept specific content are called <strong>Share Targets</strong>.</p>
<p>So you could share an image from your app with any app that is capable of accepting image files. As a developer you don’t need to know what app you are sharing with, you just code to a contract and Windows 8 becomes the middle man that manages the sharing.</p>
<p>You can share specific content types, however it is also extensible so you can define your own content types to.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh758314.aspx" target="_blank">Adding share</a></li>
</ul>
<h2>Default controls</h2>
<p>A lot of research has gone into Windows 8. Specifically, how people like to interact with an operating system on various devices. So the team has looked at desktops, laptops and tablets, and how people work with a mouse or pen or touch. In fact every which way someone might use any individual element.</p>
<p>All this learning has then been bundled up into the default set of controls that are included in the SDK. It means that developers don’t have to face the complexity of re-learning everything to make their apps more user-friendly. They simply get best practice elements right from the start.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh465393.aspx" target="_blank">Adding controls and content</a> shows a whole bunch of resources around controls.</li>
<li><a href="http://bit.ly/win8touchguidance" target="_blank">Some of the research and guidance around Windows 8 and Touch</a></li>
</ul>
<h2>WinJS</h2>
<p>I’ve talked before about where HTML5 excels and where it can struggle. As good as it is, there are still <a href="http://blogs.msdn.com/b/thebeebs/archive/2011/12/04/five-things-you-can-t-do-with-html5-yet.aspx" target="_blank">some things HTML5 can’t do yet</a>. But when it comes to Windows 8, the answer is the Windows JavaScript Library.</p>
<p>WinJS provides a bridge between HTML and Windows APIs. It means you don’t have to limit what your apps can do to just what HTML5 can do.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh967792.aspx" target="_blank">Writing code using the WinJS library</a></li>
</ul>
<p>So that’s it. My starters for beginning to develop for Windows 8. I hope you find the resources useful and I’d love to hear from you if you are currently planning or developing a Windows 8 Metro app.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/08/5-things-you-should-know-about-developing-windows-8-apps-with-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To: Converting CSV to JSON</title>
		<link>http://www.ubelly.com/2012/05/tutorial-converting-csv-to-json/</link>
		<comments>http://www.ubelly.com/2012/05/tutorial-converting-csv-to-json/#comments</comments>
		<pubDate>Tue, 08 May 2012 09:24:22 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[challenge]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=13968</guid>
		<description><![CDATA[<div><img width="312" height="230" src="http://www.ubelly.com/wp-content/uploads/2012/04/Kevin2_featured.jpg" class="attachment-type-photo wp-post-image" alt="Kevin2_featured" title="Kevin2_featured" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/04/Kevin2_featured-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="Kevin2_featured" title="Kevin2_featured" style="float:left; margin:0 15px 15px 0;" />Last week when I launched the HTML5 Sports Challenge we gave you a CSV file full of data. I thought  <a href="http://www.ubelly.com/2012/05/tutorial-converting-csv-to-json/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="312" height="230" src="http://www.ubelly.com/wp-content/uploads/2012/04/Kevin2_featured.jpg" class="attachment-type-photo wp-post-image" alt="Kevin2_featured" title="Kevin2_featured" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/04/Kevin2_featured-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="Kevin2_featured" title="Kevin2_featured" style="float:left; margin:0 15px 15px 0;" /><p>Last week when I launched the <a href="http://www.ubelly.com/2012/04/html5-sports-challenge/">HTML5 Sports Challenge</a> we gave you a CSV file full of data. I thought I would take some time out and show you how to convert that CSV data into JSON (without using any server side code) and then use that JSON in an application. Here is the video:</p>
<p><iframe src="http://www.youtube.com/embed/_ZvkQT1TCOM" frameborder="0" width="560" height="315"></iframe></p>
<p>In the Above video I showed you how to convert a CSV file to JSON, in the video below I look at how you can process that JSON and print some data from it on screen.</p>
<p><iframe src="http://www.youtube.com/embed/cl97ThZpSRQ" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/05/tutorial-converting-csv-to-json/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Hunger Games website &#8211; behind the scenes</title>
		<link>http://www.ubelly.com/2012/03/the-hunger-games-website-behind-the-scenes/</link>
		<comments>http://www.ubelly.com/2012/03/the-hunger-games-website-behind-the-scenes/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 07:59:42 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=13415</guid>
		<description><![CDATA[<div><img width="383" height="260" src="http://www.ubelly.com/wp-content/uploads/2012/03/hungerGames.png" class="attachment-type-photo wp-post-image" alt="hungerGames" title="hungerGames" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/03/hungerGames-100x100.png" class="attachment-thumbnail wp-post-image" alt="hungerGames" title="hungerGames" style="float:left; margin:0 15px 15px 0;" />So among the other, more serious stuff we do at Microsoft, we also get to play on some really cool  <a href="http://www.ubelly.com/2012/03/the-hunger-games-website-behind-the-scenes/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="383" height="260" src="http://www.ubelly.com/wp-content/uploads/2012/03/hungerGames.png" class="attachment-type-photo wp-post-image" alt="hungerGames" title="hungerGames" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2012/03/hungerGames-100x100.png" class="attachment-thumbnail wp-post-image" alt="hungerGames" title="hungerGames" style="float:left; margin:0 15px 15px 0;" /><p>So among the other, more serious stuff we do at Microsoft, we also get to play on some really cool projects too. Half the time I can’t talk about them (if I told you I’d have to kill you and all that) but now and then one surfaces that we have more free reign on. And this is one of those times.</p>
<p><a href="http://www.imdb.com/title/tt1392170/">The Hunger Games</a> is a new film directed by Gary Ross set in a not-too-distant future where teens fight to the death on live TV (as you would). The production company, Lionsgate, wanted to bring the world of the film to life on the web and turned to development house <a href="http://ignitioncreative.net/#/Interactive">Ignition Creative</a>, HTML5 specialists at <a href="http://www.nerdery.com/">The Nerdery</a> and the Microsoft Internet Explorer team to make it happen.</p>
<p><span style="text-decoration: underline;"><a href="http://thecapitoltour.pn/explore/">You can check out the site here.</a></span></p>
<p>Trust me, there is some very cool stuff going on under the hood. We have actually produced a full <a href="http://thecapitoltour.pn/dev/">developer tear-down</a> which goes into details about how it was all done. The first instalments can bee <a href="http://thecapitoltour.pn/dev/">seen here</a> which looks into how they dynamically displayed skewed 2D images on a 3D surface.</p>
<p>Over the coming weeks the site will discuss a number of other topics too so make sure you head back and dig into the details.</p>
<ul>
<li>Part 2 – Leveraging Developer Tools</li>
<li>Part 3 – Event Model</li>
<li>Part 4 – Sprite Animations</li>
<li>Part 5 – Text Curvature</li>
</ul>
<p>Plus there’s a bunch of other stuff too. If you want to geek out, you can find the details (plus some code examples) <span style="text-decoration: underline;"><a href="http://thecapitoltour.pn/dev/">on the tear-down itself</a></span>. And please do <span style="text-decoration: underline;"><a href="http://thecapitoltour.pn/explore/">check out the site</a></span>. I’d love to know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/03/the-hunger-games-website-behind-the-scenes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5 standardisation and Facebook</title>
		<link>http://www.ubelly.com/2012/03/html5-standardisation-and-facebook/</link>
		<comments>http://www.ubelly.com/2012/03/html5-standardisation-and-facebook/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 07:47:31 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=13266</guid>
		<description><![CDATA[<div><img width="450" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/03/facebook.jpeg" class="attachment-type-photo wp-post-image" alt="facebook" title="facebook" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/03/facebook-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="facebook" title="facebook" style="float:left; margin:0 15px 15px 0;" />I recently stumbled across an article on ITworld: Facebook pushes for HTML5 standardization, mobile payments. It did a good job  <a href="http://www.ubelly.com/2012/03/html5-standardisation-and-facebook/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="450" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/03/facebook.jpeg" class="attachment-type-photo wp-post-image" alt="facebook" title="facebook" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/03/facebook-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="facebook" title="facebook" style="float:left; margin:0 15px 15px 0;" /><p>I recently stumbled across an article on ITworld: <a href="http://www.itworld.com/networking/253512/facebook-pushes-html5-standardization-mobile-payments">Facebook pushes for HTML5 standardization, mobile payments</a>. It did a good job of hanging some thoughts off the back of an attention-grabbing headline but, IMHO, missed the point.</p>
<p>Let’s get this straight: standardisation is a wholly good thing. It gives us all confidence that the sites and apps we build will be accessible by the widest number of users. Likewise, the extension of this standardisation into the area of mobile payments will mean that people will be able to shop on their mobiles and be sure that it’s safe, secure and effective to do so. All good stuff.</p>
<p>What the article neglects to mention is that the <a href="http://www.w3.org/community/coremob/">W3C Mobile Web Platform Community Group</a> currently has 83 participants including people from Nokia, Zynga, Opera, Intel and Facebook (among many others). And it has a much wider remit than simply mobile payments – <a href="http://www.w3.org/community/coremob/charter/">check out the group’s charter here</a>.</p>
<p>It’s in the charter you’ll find the really important part of the group’s work – it will deliver specifications, guidance and, crucially, <strong>test suites</strong>.</p>
<p>It’s these test suites (such as Facebook’s own <a href="http://developers.facebook.com/html5/blog/post/2012/02/27/announcing-ringmark--a-mobile-browser-test-suite/">Ringmark</a>) that will make or break any resulting standardisation. The more people who can supply robust, effective testing the better. (And just to blow our own trumpet for a moment, when it comes to HTML5 and related specifications Microsoft has added over <a href="http://samples.msdn.microsoft.com/ietestcenter/">7548 tests</a>.)</p>
<p>In the final analysis, the development of the mobile web will be less about specifications and more about implementation. The work done by the W3C and its community groups is a vital step forward. But it’s within the test suites that these initiatives will be won or lost.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/03/html5-standardisation-and-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Responsive web design in 3 minutes 42 seconds</title>
		<link>http://www.ubelly.com/2012/03/responsive-web-design-in-3-minutes-42-seconds/</link>
		<comments>http://www.ubelly.com/2012/03/responsive-web-design-in-3-minutes-42-seconds/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 09:51:54 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Web development]]></category>
		<category><![CDATA[responsive design]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=13237</guid>
		<description><![CDATA[<div><img width="480" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign.jpeg" class="attachment-type-photo wp-post-image" alt="webdesign" title="webdesign" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="webdesign" title="webdesign" style="float:left; margin:0 15px 15px 0;" />How many screens do you create your sites for? For many designers and developers the answer is one, perhaps two  <a href="http://www.ubelly.com/2012/03/responsive-web-design-in-3-minutes-42-seconds/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="480" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign.jpeg" class="attachment-type-photo wp-post-image" alt="webdesign" title="webdesign" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="webdesign" title="webdesign" style="float:left; margin:0 15px 15px 0;" /><p>How many screens do you create your sites for? </p>
<p>For many designers and developers the answer is one, perhaps two – a traditional desktop/laptop and, maybe, a smartphone. Chances are these will be two separate sites – the www.main-site-that-most-effort-goes-into.co.uk and m.mobile-version-with-bigger-buttons-and-some-stuff-taken-out.co.uk. But, just between you and me, the real world isn’t nearly so simple. </p>
<p>Today, there is a huge range of devices to think about. Some users will be basking in a state of the art 30” LED screen, others on a 15” laptop, some will be on netbooks, a bunch will be on tablets (in various sizes) and a load more will be on differently spec’d smartphones. So whatever your site was originally designed for (eg the ubiquitous 960px grid), every other format will be, to a greater or lesser extent, a compromise.</p>
<p>The thing is, it really doesn’t have to be this way.</p>
<p>The answer is responsive web design. It’s not new – and wasn’t when <a href="http://ethanmarcotte.com/">Ethan Marcotte</a> came up with the name in 2010 (as he’d be the first to admit). But there has never been a better time for designers and developers to get their heads round it. </p>
<p>Last week I hosted the <a href="http://responsivesummit.com/">Responsive Summit</a> in London. It was set up by <a href="https://twitter.com/#!/jbrewer">Josh Brewer</a> at Twitter, <a href="https://twitter.com/#!/aexmo">Alex Morris</a> of Mark Boulton Design and <a href="https://twitter.com/#!/armstrong">Chris Armstrong</a> of Front and got a number of leading designers round a table to discuss the state of responsive web design and what they want to see in future. It was fantastic to see so much passion so well articulated. I came away truly inspired. I have tons of content that I will publish later on in the week, you can <u><a href="http://lanyrd.com/2012/responsive-summit/writeups/">check out the coverage over on Lanyrd</a></u></p>
<p>In this post, however, I simply want to give a short primer on responsive web design for the uninitiated together with some links for those who want to know more.</p>
<h2>What is responsive web design?</h2>
<p>There are a range of definitions available, but for the purposes of this primer I’m going to define responsive web design as:</p>
<p><i>The creation of a site that is able to adapt to the context <br />in which it is being viewed. </i></p>
<p>To flesh this out a little, it means creating a site that will dynamically adapt to different screen sizes by resizing and reformatting its constituent elements. So it might be a 3-column site with large images and detailed navigation on a big screen and a 1-column scrolling site with simple navigation and smaller, lighter images on a smartphone.</p>
<p>Importantly, it can be all these things employing a single set of code and will use CSS3 to achieve the right effects.</p>
<h2>The three core elements to responsive web design</h2>
<p>In Ethan Marcotte’s book, <a href="http://www.abookapart.com/products/responsive-web-design">Responsive Web Design</a> (which you simply must go and buy right now) he sets out the three elements you need to play with to create a responsive design:</p>
<ol>
<li>A flexible, grid-based layout,
<li>Flexible images and media
<li>Media queries </li>
</ol>
<p>Fundamental to the first two is to stop thinking in terms of fixed pixel widths. At best fixed widths will simply cause a small device to scale everything, making it unreadable and un-navigable. At worst, your site will simply look broken.</p>
<p>Instead, in responsive web design, all elements become proportional to the whole. So rather than a column being 331px within a 960px site, it becomes a percentage of the overall width of an individual display (no matter what that is). The same applies to padding and images. Ultimately, this allows the design to adapt to different screen sizes.</p>
<p>Now, as Ethan points out, at a certain point, when you scale down really small, everything breaks. That’s where media queries come in.</p>
<p>Media queries allow you to determine the type of media the viewer has access to and the physical characteristics of their device and browser. It means you can set parameters for what gets shown, how and under what circumstances. So you can serve up the 3-column extravaganza on a big screen and the 1-column mobile version on a smartphone.</p>
<p>I am, of course, massively over-simplifying the topic here. Do check out Ethan’s book, it’s a great read. And take a look at the sample site he set up at <a href="http://responsivewebdesign.com/robot/">http:// responsivewebdesign.com/robot/</a> – resize to your heart’s content to see what he means. Finally, further reading can be found at the links below.</p>
<h2>Further reading</h2>
<ul>
<li><a href="http://www.alistapart.com/articles/responsive-web-design/">Responsive web design</a> (the original A List Apart article by Ethan Marcotte himself)
<li><a href="http://blog.responsivenews.co.uk/post/13925578846/fluid-grids-orientation-resolution-independence">Fluid grids, orientation and resolution independence</a>
<li><a href="http://thinkvitamin.com/design/beginners-guide-to-responsive-web-design/">Beginner’s guide to responsive web design</a>
<li><a href="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/">Responsive web design techniques, tools and design strategies</a>
<li><a href="http://designmodo.com/responsive-design-examples/">Responsive web design: 50 examples and best practices</a>
<li><a href="http://www.netmagazine.com/features/21-top-tools-responsive-web-design">21 top tools for responsive web design</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/03/responsive-web-design-in-3-minutes-42-seconds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning HTML5 &amp; CSS3</title>
		<link>http://www.ubelly.com/2012/02/learning-html5-css3/</link>
		<comments>http://www.ubelly.com/2012/02/learning-html5-css3/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 09:00:00 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=13057</guid>
		<description><![CDATA[<div><img width="480" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign.jpeg" class="attachment-type-photo wp-post-image" alt="webdesign" title="webdesign" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="webdesign" title="webdesign" style="float:left; margin:0 15px 15px 0;" />How did you learn to code? I ask because a couple of recent chance encounters have got me thinking that  <a href="http://www.ubelly.com/2012/02/learning-html5-css3/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="480" height="300" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign.jpeg" class="attachment-type-photo wp-post-image" alt="webdesign" title="webdesign" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/12/webdesign-100x100.jpg" class="attachment-thumbnail wp-post-image" alt="webdesign" title="webdesign" style="float:left; margin:0 15px 15px 0;" /><p>How did you learn to code?</p>
<p>I ask because a couple of recent chance encounters have got me thinking that there are some pretty big gaps in people’s knowledge of HTML5 and CSS3.</p>
<p>For example, I was chatting to a student who approached me at an event last Saturday. He asked me where he could go to learn HTML5. I suggested a few books and started explaining how HTML5 differs from HTML4. He interrupted and said, &#8220;Sorry you don&#8217;t understand… I have no idea about HTML 4 either.&#8221;</p>
<p>Is it me or is there a real problem here? After all, the guy was enthusiastic, he wanted to learn but was struggling to find the right resources for him. The problem seems to be that too many of the current books and sites assume that you’re simply moving up from an earlier version. So they spend a lot of time putting HTML5 into context by making exactly the same mistake as I did – explaining how it was different from HTML4 (or 3 for that matter).</p>
<p>When I started web development back in the late 90&#8242;s (when dinosaurs ruled the world) I remember starting with <a href="http://webmonkey.com/">WebMonkey.com</a>. Then I moved on to learn DHTML from <a href="http://dhtmlcentral.com/">DHTMLcentral.com</a>. And then on to <a href="http://4guysfromrolla.com/">4guysfromrolla.com</a>to learn server-side programming.</p>
<p>Is there a modern day equivalent? A resource that guides people from complete beginner to web developer. Or do we simply expect all new developers to find their own way?</p>
<p>What site, book, course etc would you recommend to people that are just beginning in web design and development?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2012/02/learning-html5-css3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Rocking out at the .net Magazine Awards 2011</title>
		<link>http://www.ubelly.com/2011/11/net2011/</link>
		<comments>http://www.ubelly.com/2011/11/net2011/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 13:20:12 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[.net awards]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=12214</guid>
		<description><![CDATA[<div><img width="312" height="167" src="http://www.ubelly.com/wp-content/uploads/2011/11/rockingOut.png" class="attachment-type-photo wp-post-image" alt="rockingOut" title="rockingOut" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/rockingOut-100x100.png" class="attachment-thumbnail wp-post-image" alt="rockingOut" title="rockingOut" style="float:left; margin:0 15px 15px 0;" />The .net awards are over for another year, but fear not, we have posted the video and photosfrom the night  <a href="http://www.ubelly.com/2011/11/net2011/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="312" height="167" src="http://www.ubelly.com/wp-content/uploads/2011/11/rockingOut.png" class="attachment-type-photo wp-post-image" alt="rockingOut" title="rockingOut" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/rockingOut-100x100.png" class="attachment-thumbnail wp-post-image" alt="rockingOut" title="rockingOut" style="float:left; margin:0 15px 15px 0;" /><p>The .net awards are over for another year, but fear not, we have posted the <a href="http://ubel.ly/dotnet11">video and photos</a>from the night so you can relive the memories of guy-liner, tight leather and screaming guitar solos.</p>
<p>I caught up with a few of the winners including <a href="http://www.youtube.com/watch?v=SC-dIQhZ9h0&amp;t=5m53s">Paul Irish</a>who collected two Awards for  Open Source App of the year and Developer of the year . I asked him how he found the time to work on so many projects, “For me, it’s just like a matter of passion… I’m just excited about pushing the web forward”.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2011/11/Presenting.png"><img style="background-image: none; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="Interviewing Sarah Parmenter" src="http://www.ubelly.com/wp-content/uploads/2011/11/Presenting_thumb.png" alt="Interviewing Sarah Parmenter" width="177" height="119" align="left" border="0" /></a>I also managed to chat to <a href="http://www.youtube.com/watch?v=SC-dIQhZ9h0&amp;t=5m25s">Sarah Parmenter</a>who was ecstatic to win Designer of the year, she went on to say that the awards ceremony was a great chance to meet up with friends from twitter and the industry in general.</p>
<p>The Master of Ceremonies <a href="http://www.youtube.com/watch?v=SC-dIQhZ9h0&amp;t=6m58s">Paul Boag</a> said the event was “brilliant” and it was really great to see all of the superb winners, his highlight was <a href="http://jackdrawsanything.com/">Jack Henderson</a>a 6 year old boy from Scotland winning the Social Campaign of the Year.</p>
<p>I personally had a great night chatting to tons of fascinating people, my highlight however, was being stopped in my Freddie Mercury outfit by two American tourists who asked if they could have a picture taken with Queen. The list of winners can be seen below, for more in-depth interviews, with all the winners, head on over to the <a href="http://www.netmagazine.com/features/net-awards-2011-winners">.net magazine awards site</a>.</p>
<ul>
<li>Online Game of the Year: <strong>Angry Birds Chrome</strong></li>
<li>Web App of the Year: <strong>GitHub</strong></li>
<li>Best API Use: <strong>Instagram</strong></li>
<li>Podcast of the Year: <strong>The Big Web Show</strong></li>
<li>Social Campaign of the Year:<strong> Jack Draws Anything</strong></li>
<li>Innovation of the Year:<strong> jQuery Mobile</strong></li>
<li>Open Source App of the Year: <strong>Modernizr 2.0</strong></li>
<li>Mobile App of the Year: <strong>Reeder</strong></li>
<li>Mobile Site of the Year: <strong>Facebook</strong></li>
<li>Site of the Year: <strong>BeerCamp SXSW 2011</strong></li>
<li>Redesign of the Year: <strong>Mailchimp</strong></li>
<li>Brilliant newcomer of the Year: <strong>Rob Hawkes</strong></li>
<li>Young designer of the Year: <strong>Janna Hagan</strong></li>
<li>Young developer of the Year: <strong>Paul Davis</strong></li>
<li>Designer of the Year: <strong>Sarah Parmenter</strong></li>
<li>Developer of the Year: <strong>Paul Irish</strong></li>
<li>Agency of the Year: <strong>Clearleft</strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2011/11/net2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalable JavaScript Application Architecture</title>
		<link>http://www.ubelly.com/2011/11/scalablejs/</link>
		<comments>http://www.ubelly.com/2011/11/scalablejs/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 00:35:18 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[full frontal 2011]]></category>
		<category><![CDATA[fullfrontalconf]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/?p=12072</guid>
		<description><![CDATA[<div><img width="407" height="262" src="http://www.ubelly.com/wp-content/uploads/2011/11/NicholasZakas.png" class="attachment-type-photo wp-post-image" alt="Nicholas Zakas" title="Nicholas Zakas" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/NicholasZakas-100x100.png" class="attachment-thumbnail wp-post-image" alt="Nicholas Zakas" title="Nicholas Zakas" style="float:left; margin:0 15px 15px 0;" />My Summary: Nicholas showed a technique to build large scale applications, one which he used during his time as an  <a href="http://www.ubelly.com/2011/11/scalablejs/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="407" height="262" src="http://www.ubelly.com/wp-content/uploads/2011/11/NicholasZakas.png" class="attachment-type-photo wp-post-image" alt="Nicholas Zakas" title="Nicholas Zakas" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/NicholasZakas-100x100.png" class="attachment-thumbnail wp-post-image" alt="Nicholas Zakas" title="Nicholas Zakas" style="float:left; margin:0 15px 15px 0;" /><p><strong>My Summary: Nicholas showed a technique to build large scale applications, one which he used during his time as an engineer at Yahoo. The technique had specific relevance to single page applications all though could be employed on Multiple page applications as well. The architecture he described split an application into multiple tiers with each tier having specific roles and responsibilities and loosely coupled so that elements could be removed, replaced or updated.</strong> Slides from the talk are over on <a href="http://www.slideshare.net/nzakas/scalable-javascript-application-architecture">slide share</a>.</p>
<p>Nicholas Zakas is a regular speaker on the JavaScript circuit but for some reason I’d always missed his talks at other conferences. So when I saw his name on the Full Frontal 2011 speaker list I knew I was in for a treat. His talk absolutely delivered the promise of the abstract, a solid talk that gave practical advice on how to build large JavaScript applications.</p>
<p><a href="http://www.ubelly.com/wp-content/uploads/2011/11/image9.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://www.ubelly.com/wp-content/uploads/2011/11/image_thumb4.png" width="260" height="155"></a><em><strong>The Abstract:</strong> Building large web applications with dozens of developers is a difficult task. Organising the engineers around a common goal is one thing, but organising your code so that people can work efficiently is another. Many large applications suffer from growing pains after just a few months in production due to poorly designed JavaScript with unclear upgrade and extension paths. Learn the tips, tricks, and techniques that allowed large sites such as My Yahoo! and the Yahoo! homepage to continue to grow, scale, and change over time without throwing away previous work. This talk isn’t specific to any JavaScript library, rather, it gives you new ways to apply the libraries you’re already using. The principles of good, loosely-coupled design apply to any system, and you’ll learn how this can help your application today.</em></p>
<p>Nicholas took the stage and asked “How many people are building single page JavaScript applications?” over half the audience raised their hands. Well, he continued, lots of people are working on single page apps but what I’m going to talk about works for multi page apps as well.</p>
<p>Many people are using Application frameworks like <a href="http://documentcloud.github.com/backbone/">backbone.js</a>, but many don’t realise it’s actually pretty easy to build your own. According to Nicholas, frameworks are like a playground, there are a bunch of things happening and the framework ties them all together. He was quick to add that a framework was not a replacement for <a href="http://jquery.com/">jQuery</a> or <a href="http://developer.yahoo.com/yui/">YUI</a> but rather it sits on top of those base libraries.</p>
<p>Everything on a webpage is a Module, explained Nicholas, he then drew an analogy between web development and building the international space station by saying different people from different locations can build small parts and they go to create a much larger thing. He defined a module as:</p>
<blockquote><p><strong>web application module (n)</strong><br />1 : an independent unit of functionality that is part of the total structure of a web application</p>
</blockquote>
<p>All modules should be able to live on their own and this is achieved using loose coupling. Each module has it’s own sandbox. A sandbox sits on top of the application core. It acts like a gate keeper. Modules know about the sandbox but are unaware of other modules.</p>
<p>In total the Application Architecture consists of:</p>
<ul>
<li>Modules
<li>Sandbox
<li>Application Core
<li>Base Library </li>
</ul>
<p>Each part of the architecture is like a puzzle piece, no single piece needs to know what the completed puzzle looks like, all that matters is that the piece does its own job correctly. Nicholas then went on to explain each of the sections in turn.</p>
<h2>Modules</h2>
<p>It’s the modules job to create a meaningful user experience. These modules are made up of JS, HTML and CSS. The web application is what is created when all the modules work together.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:04a09317-112a-49b4-92a9-43654dfc75fd" class="wlWriterEditableSmartContent">
<pre class="brush: php;">Core.register("module-name", function(sandbox){
	return {
		init: function(){
		//constructor
		},
		destroy: function(){
		//destructor
		}
	};
});</pre>
</div>
<p>Modules are like little kids. They need rules:</p>
<ul>
<li>Hands to yourself
<ul>
<li>Only call your own methods or those on the sandbox
<li>Don&#8217;t access DOM elements outside of your box
<li>Don&#8217;t access non-native global objects </li>
</ul>
<li>Ask, don&#8217;t take
<ul>
<li>Anything else you need, ask the sandbox </li>
</ul>
<li>Don&#8217;t leave your toys around
<ul>
<li>Don&#8217;t create global objects </li>
</ul>
<li>Don&#8217;t talk to strangers
<ul>
<li>Don&#8217;t directly reference other modules </li>
</ul>
</li>
</ul>
<p>Modules must stay within their sandboxes, this can be uncomfortable as developer just want to use YUI or jQuery directly, but by using modules you can build things quicker.</p>
<h2>Sandbox</h2>
<p>The sandbox ensures a consistent interface, each module only understand the sandbox. The sandbox acts like a security guard, you may not, for example, want the module to set cookies without going through a sandbox.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:fea5dc3b-b8c3-4242-9187-aa691a5ade11" class="wlWriterEditableSmartContent">
<pre class="brush: javascript;">Core.register("module-name", function(sandbox){
	return {
		init: function(){
		//not sure if I'm allowed...
			if (sandbox.iCanHazCheezburger()){
				alert("thx u");
			}
		},
		destroy: function(){
		//destructor
		}
	};
});</pre>
</div>
<p>Sandbox Jobs</p>
<ol>
<ol>
<li>It provides consistency
<li>It provides security &#8211; Determine which parts of the framework a module can access
<li>It provides communication &#8211; Translate module requests into core actions </li>
</ol>
</ol>
<p>Nicholas made the point that you should take time to design the sandbox as it’s very difficult to change it later.</p>
<h2>Application Core</h2>
<p>The application core is the gut of the application,&nbsp; it controls the application. It will start modules and also will destroy modules. So a module might look something like this:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:00a22a3d-a58a-4172-b1ec-04f17d8dace6" class="wlWriterEditableSmartContent">
<pre class="brush: javascript;">Core = function () {
    var moduleData = {};
    return {
        register: function (moduleId, creator) {
            moduleData[moduleId] = {
                creator: creator,
                instance: null
            };
        },
        start: function (moduleId) {
            moduleData[moduleId].instance =
			moduleData[moduleId].creator(new Sandbox(this));
            moduleData[moduleId].instance.init();
        },
        stop: function (moduleId) {
            var data = moduleData[moduleId];
            if (data.instance) {
                data.instance.destroy();
                data.instance = null;
            }
        }
    }
} ();</pre>
</div>
<p>And the sandbox might look something like this:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:5239079c-243e-431c-8fa3-c3d009035ce6" class="wlWriterEditableSmartContent">
<pre class="brush: javascript;">Core = function(){
    return {
        //more code here...
        startAll: function(){
            for (var moduleId in moduleData){
                if (moduleData.hasOwnProperty(moduleId)){
                    this.start(moduleId);
                };
        }
        },
        stopAll: function(){
            for (var moduleId in moduleData){
                if (moduleData.hasOwnProperty(moduleId)){
                this.stop(moduleId);
                }
            }
        },
    //more code here...
    };
}();</pre>
</div>
<p>You’d then register the modules like this:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:e5364662-6256-46cc-91d2-d7fc0c7727da" class="wlWriterEditableSmartContent">
<pre class="brush: text;">//register modules
Core.register("module1", function(sandbox){ /*...*/ });
Core.register("module2", function(sandbox){ /*...*/ });
Core.register("module3", function(sandbox){ /*...*/ });
Core.register("module4", function(sandbox){ /*...*/ });
//start the application by starting all modules
Core.startAll();</pre>
</div>
<p>The application core controls the communication between modules. Nicholas used the example of twitter (circa 2009) as a good example of a modularised application, where the different modules need to communicate. When you update your status, the <strong>status module</strong> needs to let the <strong>timeline module</strong> know a change has happened.</p>
<p>Nicolas went on to show an example of tight coupling where one module called another module. Explaining that tightly coupled modules were difficult to maintain.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8ab02026-279e-4d8f-8be3-0100bce070ec" class="wlWriterEditableSmartContent">
<pre class="brush: javascript;">TimelineFilter = {
    changeFilter: function (filter) {
        Timeline.applyFilter(filter);
    }
};
StatusPoster = {
    postStatus: function (status) {
        Timeline.post(status);
    }
};</pre>
</div>
<p>Creating modules that notified the sandbox that something had changed was a better approach, since the sandbox could then choose if it should do something. Loose coupling ensures your code has longevity, Nicholas stated that the code you write should last 5 years &#8211; taking a long term outlook on the code you write ensures you take care of it and that it is extensible.</p>
<p>Nicholas recommended that the application core should handle errors and pointed the audience to another of his presentations <a href="http://www.slideshare.net/nzakas/enterprise-javascript-error-handling-presentation">Enterprise JavaScript Error handling</a> for further information.</p>
<p>In summary the Applications Core’s Jobs are:</p>
<ul>
<li>Manage module lifecycle
<ul>
<li>Tell modules when to start and stop doing their job </li>
</ul>
<li>Enable inter-module communication
<ul>
<li>Allow loose coupling between modules that are related to one another </li>
</ul>
<li>General error handling
<ul>
<li>Detect, trap, and report errors in the system </li>
</ul>
<li>Be extensible
<ul>
<li>The first three jobs are not enough </li>
</ul>
</li>
</ul>
<p>According to Nicholas planning for extension is extremely important, since anything built for extension can never be obsolete. You should plan for common extension scenarios such as Error Handling, Ajax Communication, New module capabilities and General Utilities. If you use a sandbox and make all your AJAX communications through it, to a single point in your application core, you can switch the AJAX communication out for another type in just one place. It will then be changed for your entire application.</p>
<h2>Base Libraries</h2>
<p>According to to Nicholas most applications are too tightly coupled to their base library, he pointed to a presentation by <a href="http://josephsmarr.com/">Joseph Smarr</a> called <a href="http://josephsmarr.com/2007/07/25/high-performance-javascript-oscon-2007/">High Performance JavaScript</a>&nbsp; which suggests you should use libraries like jQuery as a scaffolding; only the application core should know what base library is being used. This approach ensures that you can swap out your base library at anytime.</p>
<p>In general a base library should do the following jobs:</p>
<ul>
<li>Browser normalization
<ul>
<li>Abstract away differences in browsers with common interface </li>
</ul>
<li>General-purpose utilities
<ul>
<li>Parsers/serialises for XML, JSON, etc.
<li>Object manipulation
<li>DOM manipulation
<li>Ajax communication </li>
</ul>
<li>Provide low-level extensibility </li>
</ul>
<p>If you follow Nicholas’s advice then you will end up with an architecture where:</p>
<ul>
<li>Only the base library knows which browser is being used
<li>Only the application core knows which base library is being used
<li>Only the sandbox knows which application core is being used.
<li>Each module knows nothing except that the sandbox exists.
<li>And finally no single part of the web application knows about the web application. </li>
</ul>
<p>By structuring your application this way Nicolas suggested that you could reuse your framework across multiple applications. Also because each piece had it’s own unique job it could be tested individually.</p>
<p>The real benefit, according to Nicolas, was the ability to build highly scalable web applications where pieces could be removed at will.</p>
<p>The talk provided a great introduction to design patterns, Nicolas’s delivery was clear and well paced, and made for a great talk that left me thinking that I should probably apply the same architectural rigor that I apply on the servers side to my frontend development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2011/11/scalablejs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Excessive Enhancement &#8211; Are we taking proper care of the web?</title>
		<link>http://www.ubelly.com/2011/11/careoftheweb/</link>
		<comments>http://www.ubelly.com/2011/11/careoftheweb/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 11:11:16 +0000</pubDate>
		<dc:creator>thebeebs</dc:creator>
				<category><![CDATA[Event]]></category>
		<category><![CDATA[full frontal 2011]]></category>
		<category><![CDATA[fullfrontalconf]]></category>

		<guid isPermaLink="false">http://www.ubelly.com/2011/11/excessive-enhancement-are-we-taking-proper-care-of-the-web/</guid>
		<description><![CDATA[<div><img width="768" height="494" src="http://www.ubelly.com/wp-content/uploads/2011/11/philHawksworth1.png" class="attachment-type-photo wp-post-image" alt="philHawksworth" title="philHawksworth" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/philHawksworth1-100x100.png" class="attachment-thumbnail wp-post-image" alt="philHawksworth" title="philHawksworth" style="float:left; margin:0 15px 15px 0;" />My Summary: Web developers are being seduced by modern web techniques to the extent that they sometimes forget the fundamental  <a href="http://www.ubelly.com/2011/11/careoftheweb/" class="more-link"><span class="more-icon"></span><span class="screen-reader-text">Continue Reading</span></a>]]></description>
			<content:encoded><![CDATA[<div><img width="768" height="494" src="http://www.ubelly.com/wp-content/uploads/2011/11/philHawksworth1.png" class="attachment-type-photo wp-post-image" alt="philHawksworth" title="philHawksworth" /></div><img width="100" height="100" src="http://www.ubelly.com/wp-content/uploads/2011/11/philHawksworth1-100x100.png" class="attachment-thumbnail wp-post-image" alt="philHawksworth" title="philHawksworth" style="float:left; margin:0 15px 15px 0;" /><p><strong>My Summary: Web developers are being seduced by modern web techniques to the extent that they sometimes forget the fundamental lessons that have been learnt over the past 20 years. It’s every web developers responsibility, as a professional, to use cutting edge techniques responsibly and take that little extra time to make sure our applications respect the web.</strong>
<p>In the packed auditorium at the <a href="http://www.ubelly.com/2011/11/going-full-frontal-in-brighton/">Full Frontal JavaScript conference</a> in Brighton <a href="http://www.twitter.com/philhawksworth">Phil Hawksworth</a> took the stage to question if Modern Web Developers are taking care of our beloved web. The abstract, listed below, peeked my interest as it sounded like some controversy was in store… I wasn’t disappointed.
<p><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Phil Hawksworth" border="0" alt="Phil Hawksworth" align="left" src="http://www.ubelly.com/wp-content/uploads/2011/11/philHawksworth.png" width="240" height="154"><em>The Abstract: “We all love to see exciting and innovative &#8220;interface shizzle&#8221; driven by JavaScript and the ever increasing rendering capabilities of modern browsers, but are we getting these at the expense of the Web? This talk will explore the good, the bad, and the fugly of rich interfaces, while examining how and why we should take care not to damage the Web.”</em>
<p>We now have the whole pantomime cow. JavaScript on the frontend and JavaScript on the backend, said Hawksworth, Whilst this was exciting it also reminded him of some thing Jeff Goldblum once said.&nbsp;
<p align="left"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Jeff Goldblum" border="0" alt="Jeff Goldblum" align="left" src="http://www.ubelly.com/wp-content/uploads/2011/11/image2.png" width="240" height="135">“Your scientists were so preoccupied with whether or not they could, they didn&#8217;t stop to think if they <i>should.”</i> </p>
<p>Phil noted that developers were so seduced by the shizzle and the possibilities that they often forgot about the foundations on which the web were built.
<p>Many of the things that JavaScript developers sneer or look down on Flash developers for &#8211; Lack of Copy-Paste, No bookmarks, making content inaccessible or unsearchable. Are being repeated by developers today who are using standards based technologies.
<p>In the past, whenever Phil would speak to flash developers, about those sorts of shortcomings, they’d always come back with the same response. Flash *can* do it, and with a little extra care and attention to detail those sorts of problems can be overcome.
<p>The problem is when developers care more about the pixels rather than the web or to put it another way<strong> pixels &gt; the web</strong>. People care more about the look rather than the web.
<p>In many respects the choice between Pixels or the Web comes down to what is valued by the developer. In the flash world, developers often go through a journey of Photoshop &gt; Adobe suite &gt; Flash and therefore care more about the sex appeal than the web or the seductive power of what is possible.
<p>If we look at how websites were, we now have increased sophistication in the features and users expectations.Take for example the McDonalds website 15 years ago:
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="McDonalds" border="0" alt="McDonalds" src="http://www.ubelly.com/wp-content/uploads/2011/11/image3.png" width="240" height="175">
<p>With the site on screen Phil pointed out some of the sites deficiencies, such as the way they used a loading screen, how much instruction was required and how it catered for a less sophisticated audience.
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Beetle.de" border="0" alt="Beetle.de" src="http://www.ubelly.com/wp-content/uploads/2011/11/image4.png" width="240" height="182">
<p>He then loaded <a href="http://beetle.de" rel="nofollow">beetle.de</a> and went on to explain that although it has a richer experience, it takes 13 seconds to load, the user journey is different to the point that it also requires instructions and it seems like we haven’t come along way from the McDonalds website built 15 years ago. The beetle site has over 11mg images, with 251 http requests and is missing cache expiration on many of the elements.
<p>Rather than using image sprites, all of the elements are separate images. Phil remarked “We know better than this” and went on to say it reminds him of a quote:
<p><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Jeff Goldblum " border="0" alt="Jeff Goldblum " align="left" src="http://www.ubelly.com/wp-content/uploads/2011/11/image7.png" width="240" height="135">Jeff Goldblum &#8211; “Your scientists were so preoccupied with whether or not they could, they didn&#8217;t stop to think if they <i>should.”</i>
<p>Or if you really pushed Jeff he’d probably say:
<p>Jeff Goldblum – “That’s really a lot of http requests for a site about a car&#8221;
<p>The mobile experience was also used by by Phil to make another point “If you need a separate version of your site for mobile, it’s time to think, maybe the way we approached this website was wrong. “
<p>Also the site doesn&#8217;t use the URL bar so elements of the website are not discoverable.
<p>With all things considered, Hawksworth remarked, maybe it would have been better if it was built in flash. Phil then went on to demonstrate his rule of thumb to determine if a website respects the web: switch off JavaScript. If a site has no fall back content or just vomits a warning with a noscript tag then things aren’t great.
<p>Phil used the example of twitter.com as a site that doesn&#8217;t work at all if you switch off JavaScript.
<p>Phil was keen to point out that it’s not that he’s against new client side technologies but just that as professional developers we should take more care to be respectful of the web.
<p>Things like <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URIs</a> are what make the web the web.
<p>Phil went on to talk about the usage of <a href="http://www.w3.org/QA/2011/05/hash_uris.html">Hash Bangs</a> # in URLs pointing out that these complicated hacks are making crawling the web really hard raising the question “When did it get so hard to crawl the web?”
<p>All this client side shizzle doesn&#8217;t have to break the URL. Phil was keen to point out the great work GitHub have done to utilise the History API and pointed to the work that Google Advocate Paul Kinlan (and Michael Mahemoff incidentally) did on <a href="https://github.com/PaulKinlan/LeviRoutes">Levi Routes</a> a routes framework for JS that hooks in to HTML5 history API.
<p><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Adobe Website" border="0" alt="Adobe Website" align="left" src="http://www.ubelly.com/wp-content/uploads/2011/11/image8.png" width="240" height="169">Phil also showed <a href="http://beta.theexpressiveweb.com/">Adobe expressive web</a> (which rather oddly was removed from the internet last night. <strong>UPDATE:</strong> it was a temp DNS issue which Adobe fixed and the site is now online.) and showed that without JavaScript it was a whole lot less expressive.&nbsp; The problem that Phil was articulating was he said well summed up by Bruce Lawson “The real worry is when the demo mentality sneaks into the production site”. </p>
<p>Phil admits that on occasion he’d have spent a little more time refining his own work so that it better respects the fundamentals of the web. </p>
<p>Phil spoke about his worry around tools like Adobe edge saying that by Automating things for us, they can sometime make it too easy for us to forget about the web. He showed an image of <a href="http://en.wikipedia.org/wiki/Office_Assistant">Microsoft Clippy</a> suggesting that having a tool that&#8217;s always willing to help isn’t a great thing.
<p>Fundamentally Phil’s talk could be reduced to this: As professional Developers and designers we should all look after the web a little more. It was a fantastic, well researched and insightful talk and if you get the chance to see Phil speak in future you should absolutely go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubelly.com/2011/11/careoftheweb/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic
Database Caching 1/10 queries in 0.046 seconds using disk: basic
Object Caching 2481/2628 objects using disk: basic

Served from: www.ubelly.com @ 2013-05-20 20:20:44 -->