<?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>Edwin Webb</title>
	<atom:link href="http://edwinwebb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://edwinwebb.com</link>
	<description>HTLM5 Developer // Spitalfields</description>
	<lastBuildDate>Fri, 18 Nov 2011 16:18:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Human Readable HTML5 Media Time</title>
		<link>http://edwinwebb.com/2011/html5-media-times/</link>
		<comments>http://edwinwebb.com/2011/html5-media-times/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 16:12:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=283</guid>
		<description><![CDATA[This function takes a time string from HTML Media Items (Video/audio) and returns it in the format MM:SS:MS. secondsToTimeString(123.456789) // &#8220;02:03:45&#8243; secondsToTimeString = function (seconds) { var ms = Math.floor((seconds*1000) % 1000); var s = Math.floor(seconds%60); var m = Math.floor((seconds*1000/(1000*60))%60); var strFormat = "MM:SS:XX"; if(s < 10) s = "0" + s; if(m < 10) [...]]]></description>
			<content:encoded><![CDATA[<p>This function takes a time string from HTML Media Items (Video/audio) and returns it in the format MM:SS:MS.</p>
<p>secondsToTimeString(123.456789) // &#8220;02:03:45&#8243;</p>
<pre>
 secondsToTimeString = function (seconds) {

    var ms = Math.floor((seconds*1000) % 1000);
    var s = Math.floor(seconds%60);
    var m = Math.floor((seconds*1000/(1000*60))%60);
    var strFormat = "MM:SS:XX";

    if(s < 10) s = "0" + s;
    if(m < 10) m = "0" + m;
    if(ms < 10) ms = "0" + ms;

    strFormat = strFormat.replace(/MM/, m);
    strFormat = strFormat.replace(/SS/, s);
    strFormat = strFormat.replace(/XX/, ms.toString().slice(0,2));

    return strFormat;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/html5-media-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Centring block level content in Webkit</title>
		<link>http://edwinwebb.com/2011/centring-block-level-content-in-webkit/</link>
		<comments>http://edwinwebb.com/2011/centring-block-level-content-in-webkit/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 16:29:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=280</guid>
		<description><![CDATA[This will centre block level content on both the vertical and horizontal axis. #overlay { width:480px; height:320px; position:absolute; -webkit-box-align: center; -webkit-box-pack: center; display: -webkit-box; } #overlay .centred-content { position:relative; }]]></description>
			<content:encoded><![CDATA[<p>This will centre block level content on both the vertical and horizontal axis.</p>
<pre>
#overlay {
 width:480px;
 height:320px;
 position:absolute;
 -webkit-box-align: center;
 -webkit-box-pack: center;
 display: -webkit-box;
}

#overlay .centred-content {
 position:relative;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/centring-block-level-content-in-webkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting more performance out of chrome</title>
		<link>http://edwinwebb.com/2011/getting-more-performance-out-of-crome/</link>
		<comments>http://edwinwebb.com/2011/getting-more-performance-out-of-crome/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 13:52:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=276</guid>
		<description><![CDATA[There are two useful command-line flags for Chrome to help debugging GPU acceleration: &#8211;show-composited-layer-borders shows a red border around elements that are being manipulated at the GPU level. Good for confirming your manipulations occur within the GPU layer. &#8211;show-paint-rects all non-GPU changes are painted and this throws a light border around all areas that are [...]]]></description>
			<content:encoded><![CDATA[<p>There are two useful command-line flags for Chrome to help debugging GPU acceleration:</p>
<p>
&#8211;show-composited-layer-borders shows a red border around elements that are being manipulated at the GPU level. Good for confirming your manipulations occur within the GPU layer.<br />
&#8211;show-paint-rects all non-GPU changes are painted and this throws a light border around all areas that are repainted. You can see the browser optimizing paint areas in action.
</p>
<p>From : http://www.html5rocks.com/en/tutorials/speed/html5/</p>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/getting-more-performance-out-of-crome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extending events in backbone.js</title>
		<link>http://edwinwebb.com/2011/extending-events-in-backbone-js/</link>
		<comments>http://edwinwebb.com/2011/extending-events-in-backbone-js/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 11:08:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=273</guid>
		<description><![CDATA[This is pretty straightforward but took a moments thought. Perhaps I can spare your brain a few cycles. Here I&#8217;m extending MediaControls view to MovieControls and adding a settings button. events: _.extend(aura.view.MediaControls.prototype.events , { "click #settings-button" : "settingsHandler" }),]]></description>
			<content:encoded><![CDATA[<p>This is pretty straightforward but took a moments thought. Perhaps I can spare your brain a few cycles.</p>
<p>Here I&#8217;m extending MediaControls view to MovieControls<br />
and adding a settings button.</p>
<pre>
events: _.extend(aura.view.MediaControls.prototype.events , {
	"click #settings-button" : "settingsHandler"
}),
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/extending-events-in-backbone-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zepto Touch and Faux Swipe Acceleration</title>
		<link>http://edwinwebb.com/2011/zepto-touch-and-faux-swipe-acceleration/</link>
		<comments>http://edwinwebb.com/2011/zepto-touch-and-faux-swipe-acceleration/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 10:24:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=267</guid>
		<description><![CDATA[A backbone.view zepto.touchevent handler for a touch based L-R swipe menu swipeLeft : function(e) { var d = e.data.x2 - e.data.x1; //distance var s = this.nav[0].style.WebkitTransform; var x = s.match(/[^()\s]+(?=,&#124;\))/g); //Npx var c = parseInt(x[0]); //N var t = c + d * 3; //current + distance * multiplier //calculate bounds if(t > 200) t [...]]]></description>
			<content:encoded><![CDATA[<p>A backbone.view zepto.touchevent handler for a touch based L-R swipe menu</p>
<pre>
swipeLeft : function(e) {
	var d = e.data.x2 - e.data.x1; //distance
	var s = this.nav[0].style.WebkitTransform;
	var x = s.match(/[^()\s]+(?=,|\))/g); //Npx
	var c = parseInt(x[0]); //N
	var t = c + d * 3; //current + distance * multiplier

	//calculate bounds
	if(t > 200) t = 200;
	if(t < this.maxLeft) t = this.maxLeft - 200;

	this.nav.anim({translateX : t + "px"}, 2, 0, "ease-out");

},
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/zepto-touch-and-faux-swipe-acceleration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Europcar Reactive Advert</title>
		<link>http://edwinwebb.com/2011/europcar-reactive-advert/</link>
		<comments>http://edwinwebb.com/2011/europcar-reactive-advert/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 13:52:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=253</guid>
		<description><![CDATA[This project mixes a web-camera, some very clever software and HTML5 to make an advert which can identify when you are looking at it and then determine your age and gender. Setup The Quividi software is designed to run on a Windows Atom Netbook above an advert and gathers data on passers-by which is posted [...]]]></description>
			<content:encoded><![CDATA[<p>This project mixes a web-camera, some very clever software and HTML5 to make an advert which can identify when you are looking at it and then determine your age and gender.</p>
<h2>Setup</h2>
<p>The Quividi software is designed to run on a Windows Atom Netbook above an advert and gathers data on passers-by which is posted to an analytics suite.</p>
<p>Spotting a chance for a engaging experience we used Quividi TCP stream to interface Javascript with the events sent from the Quividi sofware</p>
<p><img src="data:image/png;base64,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" alt="" /></p>
<p>We had to use a Flash Shim to get the data from the Quividi TCP steam to JavaScript. Web-sockets were of course our first choice but the QuiVidi system wasn&#8217;t compatible with this emerging spec. Lot&#8217;s of binary math and SWITCH statements soon had Flash broadcasting the relevant webcam events. We broke this down to the two events &#8211; watcher start and watcher end.</p>
<p><img src="data:image/png;base64,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" alt="" /></p>
<h2>Experience</h2>
<p>The graphics are an old Europcar campaign by the talented people at <a href="http://fortunecookie.co.uk">Fortune Cookie</a></p>
<p>When a new &#8220;watcher&#8221; is detected an event containing the Watcher ID, Gender and Age Group are sent to Javascript, the advert then begins to play. The content of the advert is customised to the demographic recognised by the camera &amp; software.</p>
<p>The animations are powered by CSS3 and use the -webkit-transition: property to good effect creating the smooth fade-ins and rotation effects.</p>
<p><img class="image" src="/gallery/euro-1.jpg" alt="" width="100%" /><br />
<img class="image" src="/gallery/euro-2.jpg" alt="" width="100%" /><br />
<img class="image" src="/gallery/euro-3.jpg" alt="" width="100%" /><br />
<img class="image" src="/gallery/euro-4.jpg" alt="" width="100%" /></p>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/europcar-reactive-advert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A neat FOR loop</title>
		<link>http://edwinwebb.com/2011/a-neat-for-loop/</link>
		<comments>http://edwinwebb.com/2011/a-neat-for-loop/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 13:13:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=247</guid>
		<description><![CDATA[Counts 10, thought it looked neat. var i = 10; for(i; i; i--) { console.log(i); }]]></description>
			<content:encoded><![CDATA[<p>Counts 10, thought it looked neat.</p>
<pre>
var i = 10;

for(i; i; i--) {
 console.log(i);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/a-neat-for-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pie Chart Roundel in CSS3 Gradients</title>
		<link>http://edwinwebb.com/2011/pie-chart-roundel-in-css3-gradients/</link>
		<comments>http://edwinwebb.com/2011/pie-chart-roundel-in-css3-gradients/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 15:53:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=210</guid>
		<description><![CDATA[CSS3 gradients make pie chart roundels. I will extend this to proper pie charts if I can. Not sure why I&#8217;m not using SVG but there you go. They need a lot of work but smaller and more accessible than images and SVG I guess. Webkit Only View source on this.nextSibling for the CSS .roundel [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 gradients make pie chart roundels. I will extend this to proper pie charts if I can. Not sure why I&#8217;m not using SVG but there you go.</p>
<p>They need a lot of work but smaller and more accessible than images and SVG I guess. </p>
<p><strong>Webkit Only</strong></p>
<p>View source on this.nextSibling for the CSS</p>
<style>
.roundel {
			background-color:#FFB21C !important; /* excuse me */
			width:200px;
			height:200px;
			text-align:center;
			font-size:4em;
			text-transform:uppercase;
			font-family:sans-serif;
			color:#5D3E04;
			font-weight:bold;
			line-height:200px;
			letter-spacing:-.1em;
			float:left;
			margin:1em;
		}</p>
<p>		.roundel.p40 {
			background:
				-webkit-radial-gradient(50% 50%, circle, #FFF 39%, transparent 40%, transparent 69%, #FFF 70%),
				-webkit-linear-gradient(36deg, #FFB21C 50%, transparent 50%) 0px 0px,
				-webkit-linear-gradient(180deg, #BD3C25 50%, transparent 50%) 0px 0px
			;
		}</p>
<p>		.roundel.p50 {
			background:
				-webkit-radial-gradient(50% 50%, circle, #FFF 39%, transparent 40%, transparent 69%, #FFF 70%),
				-webkit-linear-gradient(180deg, #BD3C25 50%, transparent 50%) 0px 0px
			;
		}</p>
<p>		.roundel.p60 {
			background:
				-webkit-radial-gradient(50% 50%, circle, #FFF 39%, transparent 40%, transparent 69%, #FFF 70%),
				-webkit-linear-gradient(180deg, #BD3C25 50%, transparent 50%) 0px 0px,
				-webkit-linear-gradient(144deg, #BD3C25 50%, transparent 50%) 0px 0px
			;
		}</p>
<p>		.roundel.p70 {
			background:
				-webkit-radial-gradient(50% 50%, circle, #FFF 39%, transparent 40%, transparent 69%, #FFF 70%),
				-webkit-linear-gradient(180deg, #BD3C25 50%, transparent 50%) 0px 0px,
				-webkit-linear-gradient(108deg, #BD3C25 50%, transparent 50%) 0px 0px
			;
		}</p>
<p>		.roundel small {
			font-size:50%;
			padding-left:.1em;
		}		
</style>
<section>
<div class="roundel p40">
	40<small>%</small>
</div>
<div class="roundel p50">
	50<small>%</small>
</div>
<div class="roundel p60">
	60<small>%</small>
</div>
<div class="roundel p70">
	70<small>%</small>
</div>
</section>
<p style="clear:both">Colours from http://www.colourlovers.com/palette/1659760/sliced_tongue : I want to eat korean bbq all of sudden ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/pie-chart-roundel-in-css3-gradients/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating Unique IDs with Javascript</title>
		<link>http://edwinwebb.com/2011/generating-unique-ids-in-javascript/</link>
		<comments>http://edwinwebb.com/2011/generating-unique-ids-in-javascript/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 11:51:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=204</guid>
		<description><![CDATA[This is ripped from Spine and is very tasty. I added some comments to my minor edit Spine.guid = function(){ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16&#124;0, v = c === 'x' ? r : (r&#38;0x3&#124;0x8); return v.toString(16); }).toUpperCase(); }; And my minor edit with comments //replace each occurance of "x" with value returned [...]]]></description>
			<content:encoded><![CDATA[<p>This is ripped from <a href="https://github.com/maccman/spine/blob/master/spine.js">Spine</a> and is very tasty. I added some comments to my minor edit</p>
<pre>
Spine.guid = function(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c === 'x' ? r : (r&amp;0x3|0x8);
return v.toString(16);
}).toUpperCase();
};
</pre>
<p>And my minor edit with comments</p>
<pre>
//replace each occurance of "x" with value returned from passed function
'uxxx-sxxx'.replace(/x/g, function(c) {
      //Bit value of char 0 of a random number (0-15) and convert that to an ASCII value (0-9, a-f)
      return (Math.random()*16|0).toString(16);
}).toUpperCase(); //capitals please
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/generating-unique-ids-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>webpagetest.org results table data to JSON parse</title>
		<link>http://edwinwebb.com/2011/webpagetest-org-results-table-data-to-json-parse/</link>
		<comments>http://edwinwebb.com/2011/webpagetest-org-results-table-data-to-json-parse/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 17:01:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://edwinwebb.com/?p=186</guid>
		<description><![CDATA[Quick script to parse the first two tables on the content breakdown tab into JS object notation. Modify .eq() to 1 for bytes table. var x = {};$(".google-visualization-table-table").eq(0).find("tr:gt(0) td:first-child").each(function(){var y = $(this).text(); var z = parseInt($(this).next().text()); x[y] ? x[y] += z : x[y] = z});JSON.stringify(x); Same shizzle, puts the data into arrays for http://g.raphaeljs.com var [...]]]></description>
			<content:encoded><![CDATA[<p>Quick script to parse the first two tables on the content breakdown tab into JS object notation. Modify .eq() to 1 for bytes table.</p>
<pre>
var x = {};$(".google-visualization-table-table").eq(0).find("tr:gt(0) td:first-child").each(function(){var y = $(this).text(); var z = parseInt($(this).next().text()); x[y] ? x[y] += z : x[y] = z});JSON.stringify(x);
</pre>
<p>Same shizzle, puts the data into arrays for <a href="http://g.raphaeljs.com">http://g.raphaeljs.com</a></p>
<pre>
var a = [];
var b = [];
$(".google-visualization-table-table").eq(0).find("tr:gt(0) td:first-child").each(function(){
	a.push($(this).text());
	b.push(parseInt($(this).next().text()));
});
console.log(a);
console.log(b);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://edwinwebb.com/2011/webpagetest-org-results-table-data-to-json-parse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

