<?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>Interface Digital Labs</title>
	<atom:link href="http://labs.interfacedigital.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://labs.interfacedigital.co.uk</link>
	<description>Our workshop, playground and dojo.</description>
	<lastBuildDate>Fri, 17 Feb 2012 10:24:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Delaunay triangle vectorization 2</title>
		<link>http://labs.interfacedigital.co.uk/2011/11/03/delaunay-triangle-vectorization-2/</link>
		<comments>http://labs.interfacedigital.co.uk/2011/11/03/delaunay-triangle-vectorization-2/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 09:42:39 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=215</guid>
		<description><![CDATA[Following on from the last post we have continued to work on an app for creating images using Delauney triangulation. You can download it below.

<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/11/car_girl.jpg" alt="car_girl" title="car_girl" width="500" height="384" style="padding: 0 0 0 2px;" />
</div>

]]></description>
			<content:encoded><![CDATA[<p>Following on from the <a href="http://labs.interfacedigital.co.uk/2011/06/29/delauney-triangle-vectorization/">last post</a> we have continued to work on an app for creating images using Delaunay triangulation.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/11/keef_01.jpg" alt="keef_01" title="keef_01" width="500" height="633"  style="padding: 0 0 0 2px;" />
</div>
<p>This tool allows you to add both individual nodes or a spread of nodes, and has a number of options to show and hide node points, fills, and lines.</p>
<p>There&#8217;s plenty more to be done. Possibilities includes:</p>
<ol>
<li>Gradient fills rather than flat fills</li>
<li>Inbuilt export feature</li>
<li>Toggle between Delaunay Triangulation and Voronoi Diagrams</li>
</ol>
<p>Delaunay Triangulation and Voronoi Diagrams are related shape generating algorithms.<br />
Whereas Delaunay triangulation creates an optimal triangular grid, a Voronoi diagram creates polygons where the borders are equidistant between node points.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/11/goldfinch.jpg" alt="goldfinch" title="goldfinch" width="500" height="542" style="padding: 0 0 0 2px;" />
</div>
<p>I guarantee that once you start down this road you will start to see everything in terms of triangles.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/11/delaunay.jpg" alt="delaunay" title="delaunay" width="450" height="462" style="padding: 0 0 0 2px;" />
</div>
<p>Download app:</p>
<ul>
<li>
<a href="http://www.interfacedigital.co.uk/labs/delaunay/Delaunay_pc.zip" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/delaunay/Delaunay_pc.zip?referer=');">Delaunay_pc.zip</a> &#8211; Windows (3Mb)</li>
<li><a href="http://www.interfacedigital.co.uk/labs/delaunay/Delaunay_mac.zip" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/delaunay/Delaunay_mac.zip?referer=');">Delaunay_mac.zip</a> Mac (5.9 mb)</li>
</ul>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/11/nude.jpg" alt="nude" title="nude" width="500" height="626"  style="padding: 0 0 0 2px;" />
</div>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2011/11/03/delaunay-triangle-vectorization-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delaunay triangle vectorization</title>
		<link>http://labs.interfacedigital.co.uk/2011/06/29/delauney-triangle-vectorization/</link>
		<comments>http://labs.interfacedigital.co.uk/2011/06/29/delauney-triangle-vectorization/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 16:53:19 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[triangle]]></category>
		<category><![CDATA[vectors]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=197</guid>
		<description><![CDATA[We created a Flash based tool to create vectorised images using Delaunay Triangulation.

<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/girl5b.jpg" alt="girl5b" title="girl5b" width="400" height="573" class="alignnone size-full wp-image-209" />]]></description>
			<content:encoded><![CDATA[<p>We have been working on vectorisation tool based on a network or irregular triangles.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/contador.jpg" alt="contador" title="contador" width="500" height="499" style="padding: 0 0 0 2px;" />
</div>
<p>The technique I adapted was to create a random set of initial points, and then use a <a href="http://en.wikipedia.org/wiki/Delaunay_triangulation" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Delaunay_triangulation?referer=');">Delaunay triangulation</a> algorithm to create a set of triangle Shape objects, which are then stored in an array.</p>
<p>Each triangle is then coloured using the setPixel method based on the colour value of the pixel in the underlying image in the centre of the triangle. The simplest technique for calculating the co-ordinates of the centre point of the triangle is to take the sum of the horizontal positions of the 3 vertices and divide by 3 to find the x co-ordinate, and the sum of the vertical positions of the 3 vertices and divide by 3 to find the y co-ordinate. This tells us the Centroid of the triangle.</p>
<p>(It turns out there are 3612 ways of calculating the center of a triangle, see the <a href="http://faculty.evansville.edu/ck6/encyclopedia/ETC.html" onclick="pageTracker._trackPageview('/outgoing/faculty.evansville.edu/ck6/encyclopedia/ETC.html?referer=');">Encyclopedia of Triangle Centers</a>).</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/girl4.jpg" alt="girl4" title="girl4" width="500" height="653" style="padding: 0 0 0 2px;"  />
</div>
<p>More detail can be added by setting the number of initial points.</p>
<p>In the second iteration, you can add detail to a particular area, by clicking on it. This adds additional control points to the area around the mouse click, and generates more triangles.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/girl.jpg" alt="girl" title="girl" width="500" height="680" style="padding: 0 0 0 2px;" />
</div>
<p>When run as a projector, select Print and then Save As a PDF to create a vector image which can be edited in Illustrator.<br />
It&#8217;s an intriguing effect to remove some of the triangles to reveal the image beneath.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/pendleton.jpg" alt="pendleton" title="pendleton" width="500" height="721" style="padding: 0 0 0 2px;"  />
</div>
<h3>Try it out</h3>
<p>To use, click the load image button to load an image from your hard drive. Click on the image to add extra triangle points. Click reset to revert to the original number of triangles.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_triDraw_03_1327781314"
			class="flashmovie"
			width="500"
			height="500">
	<param name="movie" value="http://www.interfacedigital.co.uk/labs/triangles/triDraw_03.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.interfacedigital.co.uk/labs/triangles/triDraw_03.swf"
			name="fm_triDraw_03_1327781314"
			width="500"
			height="500">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" onclick="pageTracker._trackPageview('/outgoing/adobe.com/go/getflashplayer?referer=');urchinTracker('/outgoing/adobe.com/go/getflashplayer?referer=http://labs.interfacedigital.co.uk/wp-admin/post.php?action=edit&#038;post=197&#038;message=1');"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<h3>Further research</h3>
<p>For more work with Delauney triangles, see the work of Jonathan Puckey &#8211; <a href="http://www.flickr.com/photos/puckey/sets/72157616706690844/with/3395766569/" onclick="pageTracker._trackPageview('/outgoing/www.flickr.com/photos/puckey/sets/72157616706690844/with/3395766569/?referer=');">Flickr set here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2011/06/29/delauney-triangle-vectorization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Triangle vectorization</title>
		<link>http://labs.interfacedigital.co.uk/2011/06/28/trianglevectorization/</link>
		<comments>http://labs.interfacedigital.co.uk/2011/06/28/trianglevectorization/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 09:42:41 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[triangles]]></category>
		<category><![CDATA[vectors]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=176</guid>
		<description><![CDATA[Inspired by the work of  <a href="http://crowquills.com/" onclick="pageTracker._trackPageview('/outgoing/crowquills.com/?referer=');">Andy Gilmore</a>, specifically work for the new<a href="http://africahitech.com/" onclick="pageTracker._trackPageview('/outgoing/africahitech.com/?referer=');"> Africa Hitech</a> album on Warp records, (available on<a href="http://bleep.com/index.php?page=release_details&#038;releaseid=28610" onclick="pageTracker._trackPageview('/outgoing/bleep.com/index.php?page=release_details_038_releaseid=28610&amp;referer=');"> Bleep</a>), I was intrigued to be able to create a means of creating triangulated images in Flash.

<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/girl_04sm.gif" alt="girl_04sm" title="girl_04sm" width="500" height="620" class="alignnone size-full wp-image-188" />]]></description>
			<content:encoded><![CDATA[<p>Inspired by the work of  <a href="http://crowquills.com/" onclick="pageTracker._trackPageview('/outgoing/crowquills.com/?referer=');">Andy Gilmore</a>, specifically work for the new<a href="http://africahitech.com/" onclick="pageTracker._trackPageview('/outgoing/africahitech.com/?referer=');"> Africa Hitech</a> album on Warp records, (available on<a href="http://bleep.com/index.php?page=release_details&#038;releaseid=28610" onclick="pageTracker._trackPageview('/outgoing/bleep.com/index.php?page=release_details_038_releaseid=28610&amp;referer=');"> Bleep</a>), I was intrigued to be able to create a means of creating triangulated images in Flash.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/hitech_01.jpg" alt="hitech_01" title="hitech_01" width="500" height="500"   style="padding: 0 0 0 2px;" /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/hyetal_broadcast_640.jpg" alt="hyetal_broadcast_640" title="hyetal_broadcast_640" width="500" height="350"  style="padding: 0 0 0 2px;" />
</div>
<p>The Flash version we created uses a square movie clip subdivided into 4 triangles. In the first iteration, the movie sets the colour of each triangle randomly from a list of predetermined colours. This creates a very random image. It might be more expressive to tend towards using the colour of the triangles around to determine the color, with a chance of using a random color.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/pattern_02sm.gif" alt="pattern_02sm" title="pattern_02sm" width="500" height="501"  style="padding: 0 0 0 2px;"  />
</div>
<p>In the second iteration, it uses a bitmap as the generator of the colors. It loads a bitmap image, and then overlays the grid of squares.<br />
Then for each triangle within the square, it uses getPixel to get the colour value in the middle of each triangle. This creates an intriguing triangulated pixel aesthetic.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2011/06/girl_04sm.gif" alt="girl_04sm" title="girl_04sm" width="500" height="620"  style="padding: 0 0 0 2px;"  />
</div>
<p>Try it here:</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_triang4_1446425697"
			class="flashmovie"
			width="500"
			height="500">
	<param name="movie" value="http://www.interfacedigital.co.uk/labs/triangles/triang4.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.interfacedigital.co.uk/labs/triangles/triang4.swf"
			name="fm_triang4_1446425697"
			width="500"
			height="500">
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer" onclick="pageTracker._trackPageview('/outgoing/adobe.com/go/getflashplayer?referer=');urchinTracker('/outgoing/adobe.com/go/getflashplayer?referer=http://labs.interfacedigital.co.uk/wp-admin/post.php?action=edit&#038;post=176&#038;message=1');"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Further experiments allow us to change the size of the movie clip, creating greater or lesser detail, and creating alternative triangular forms within each square.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2011/06/28/trianglevectorization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encrypting XML in Flash</title>
		<link>http://labs.interfacedigital.co.uk/2011/02/25/encrypting-xml-in-flash/</link>
		<comments>http://labs.interfacedigital.co.uk/2011/02/25/encrypting-xml-in-flash/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 18:03:52 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=160</guid>
		<description><![CDATA[Loading XML has long been established a way for Flash to load external data, but if you do not want people to be able to view that data externally some kind of encryption is required. We recently had this requirement when building a quiz game for a client. We wanted the questions to be an external file so that they could be edited and added to without requiring changes to the Flash SWF. However, as a raw external XML file it would allow users to download this file and look up all the correct answers.]]></description>
			<content:encoded><![CDATA[<p>While it&#8217;s always been possible (using Safari&#8217;s activity view for example) to see what external assets are being accessed by a Flash movie, browser plug-ins such as <a href="http://getfirebug.com/" onclick="pageTracker._trackPageview('/outgoing/getfirebug.com/?referer=');">Firebug</a>, <a href="http://livehttpheaders.mozdev.org/" onclick="pageTracker._trackPageview('/outgoing/livehttpheaders.mozdev.org/?referer=');">LiveHttpheaders</a>, and <a href="https://addons.mozilla.org/en-us/firefox/addon/tamper-data/" onclick="pageTracker._trackPageview('/outgoing/addons.mozilla.org/en-us/firefox/addon/tamper-data/?referer=');">Tamper Data</a> also make it possible to easily see all the requests that are being passed back and forth between a client and server, including calls from a Flash movie to the server, and modify them.</p>
<p>Loading XML has long been established a way for Flash to load external data, but if you do not want people to be able to view that data externally some kind of encryption is required. We recently had this requirement when building a quiz game for a client. We wanted the questions to be an external file so that they could be edited and added to without requiring changes to the Flash SWF. However, as a raw external XML file it would allow users to download this file and look up all the correct answers.</p>
<p>Building on work of the extensive <a href="http://code.google.com/p/as3crypto/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/as3crypto/?referer=');">AS3 Crypto class</a>, the simple <a href="http://lassieadventurestudio.wordpress.com/2009/09/02/easy-blowfish-text-encryption/" onclick="pageTracker._trackPageview('/outgoing/lassieadventurestudio.wordpress.com/2009/09/02/easy-blowfish-text-encryption/?referer=');">Blowfish Encryption class</a> from Lassie games, and also the <a href="http://www.ghostwire.com/blog/archives/as3-simple-editor-for-loading-and-saving-xml-as-binary/" onclick="pageTracker._trackPageview('/outgoing/www.ghostwire.com/blog/archives/as3-simple-editor-for-loading-and-saving-xml-as-binary/?referer=');">Binary XML class</a> from Ghostwire, we&#8217;ve created a tool which allows you to load a file, encrypt it with a key of your choosing, and save it out.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_XMLencrypt_97572871"
			class="flashmovie"
			width="520"
			height="520">
	<param name="movie" value="http://www.interfacedigital.co.uk/labs/XMLencrypt/bin/XMLencrypt.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.interfacedigital.co.uk/labs/XMLencrypt/bin/XMLencrypt.swf"
			name="fm_XMLencrypt_97572871"
			width="520"
			height="520">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Click to <a href="http://www.interfacedigital.co.uk/labs/XMLencrypt/bin/encrypt.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/XMLencrypt/bin/encrypt.html?referer=');">view in a new window</a><br />
Here&#8217;s how to use it:</p>
<ol>
<li>Firstly, type some text, or use the Load button to open an external text file.</li>
<li>Enter some text, which may be a memorable word, in the Key field, or click the Generate button to create a random 128-bit key.</li>
<li> Click the Encrypt button to encrypt the Input text with the Key field, using the Blowfish algorithm. This is displayed in the Output text area</li>
<li>Click the Save button to export the encrypted file. If you have generated a random key, remember to also copy and paste it into a text editor to save it</li>
<li>You can check it is working by either pasting the encrypted text back into the Input text area and clicking decrypt, or by loading in an encrypted file.</li>
</ol>
<h3>Practical applications</h3>
<p>The load and decrypt functions can then also be used inside your Flash game or quiz or whatever, to load in the encrypted XML file, decrypt it and then parse the resultant XML.</p>
<p><a href="http://www.interfacedigital.co.uk/labs/XMLencrypt/bin/XMLencrypt.zip" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/XMLencrypt/bin/XMLencrypt.zip?referer=');">Download the source here.</a></p>
<p>You can <a href="http://www.interfacedigital.co.uk/labs/TestQuiz/bin/quiz.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/TestQuiz/bin/quiz.html?referer=');">view a sample quiz game here</a>.</p>
<p><a href="http://www.interfacedigital.co.uk/labs/TestQuiz/bin/TestQuiz.zip" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/TestQuiz/bin/TestQuiz.zip?referer=');">Download the source of the quiz.</a></ol>
<h3>Next steps</h3>
<p>If you have a game that needs to write the score to a server in order to update a high-score table, playcount, etc, then you can use the same principle to encrypt the output, which is then decrypted on the server. This provides a basic level of security better than simply transmitting the score etc in cleartext. For a more thorough discussion on this, see <a href="http://stackoverflow.com/questions/303255/suggestions-for-semi-securing-high-scores-in-flash-php-game" onclick="pageTracker._trackPageview('/outgoing/stackoverflow.com/questions/303255/suggestions-for-semi-securing-high-scores-in-flash-php-game?referer=');">here</a>.</p>
<p>Because the secret key is a string variable stored inside the Flash movie, it is vulnerable to being exposed by SWF decompilers such as<a href="http://www.sothink.com/product/flashdecompiler/" onclick="pageTracker._trackPageview('/outgoing/www.sothink.com/product/flashdecompiler/?referer=');"> Sothink SWF Decompiler</a>. So for full protection you would also need to encrypt the SWF movie, such as SWF Encrypt from <a href="http://www.amayeta.com/" onclick="pageTracker._trackPageview('/outgoing/www.amayeta.com/?referer=');">Amayeta</a> or <a href="http://www.kindisoft.com/secureSWF/swf-encryption.php" onclick="pageTracker._trackPageview('/outgoing/www.kindisoft.com/secureSWF/swf-encryption.php?referer=');">secureSWF</a>.</p>
<p>Remember that when you deploy the files to the live server to only upload the encrypted versions!</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2011/02/25/encrypting-xml-in-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data visualisation of mobile lawsuits</title>
		<link>http://labs.interfacedigital.co.uk/2010/10/11/data-visualisation-of-mobile-lawsuits/</link>
		<comments>http://labs.interfacedigital.co.uk/2010/10/11/data-visualisation-of-mobile-lawsuits/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 18:29:10 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Data visualisation]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=133</guid>
		<description><![CDATA[<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/dataviz.jpg" alt="dataviz" title="dataviz" width="480" height="368" style="padding:0 0 0 2px;" />
</div>

It started with the NY Times, who were trying to understand why there was a sudden spate of lawsuits between tech firms over mobile phone technologies. The NYT article included an infographic to try and make it easier to understand what was going on, however, it does little to make the subject more obvious.

It seems to me to be a perfect example of where an interactive piece of data visualisation, or spatialisation as I would prefer to think of it, can show more.]]></description>
			<content:encoded><![CDATA[<div class="image">
<a href="http://www.interfacedigital.co.uk/labs/dataviz/01.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/dataviz/01.html?referer=');"><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/dataviz.jpg" alt="dataviz" title="dataviz" width="480" height="368" style="padding:0 0 0 2px;" /></a>
</div>
<p>It started with the NY Times, who were trying to understand why there was a sudden spate of lawsuits between tech firms over mobile phone technologies.<br />
<a href="http://bits.blogs.nytimes.com/2010/03/04/an-explosion-of-mobile-patent-lawsuits/" onclick="pageTracker._trackPageview('/outgoing/bits.blogs.nytimes.com/2010/03/04/an-explosion-of-mobile-patent-lawsuits/?referer=');">The NYT article</a> included an infographic to try and make it easier to understand what was going on, however, it does little to make the subject more obvious.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/nyt.jpg" alt="nyt" title="nyt" width="480" height="640" style="padding: 0 0 0 2px;" />
</div>
<p>Earlier this month, <a href="http://www.guardian.co.uk/technology/2010/oct/04/microsoft-motorola-android-patent-lawsuit#" onclick="pageTracker._trackPageview('/outgoing/www.guardian.co.uk/technology/2010/oct/04/microsoft-motorola-android-patent-lawsuit?referer=');">an article in The Guardian covered essentially the same ground</a>, and also included an infographic that was little or no better. Apple is suing HTC, Microsoft is suing Motorola, and Nokia is suing just about everybody.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/guardian.png" alt="guardian" title="guardian" width="460" height="436" style="padding: 0 0 0 2px;" />
</div>
<p>Other people tried to rework the graphic, <a href="http://www.informationisbeautiful.net/2010/whos-suing-whom-in-the-telecoms-trade/" onclick="pageTracker._trackPageview('/outgoing/www.informationisbeautiful.net/2010/whos-suing-whom-in-the-telecoms-trade/?referer=');">including data visualisation guru David McCandless</a> at the Information is Beautiful site. This added additional infomation, including what the object of the lawsuit was, and some indication of the size of the players.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/mobile_fun.jpg" alt="mobile_fun" title="mobile_fun" width="480" height="430" style="padding: 0 0 0 2px;"  /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/iib.gif" alt="iib" title="iib" width="480" height="660" style="padding: 0 0 0 2px;" />
</div>
<p>The best reworking I came across was by George Kokkinidis, <a href="http://news.designlanguage.com/post/1252039209" onclick="pageTracker._trackPageview('/outgoing/news.designlanguage.com/post/1252039209?referer=');">which used a circular graph format</a>, which mades it easy to see at a glance who&#8217;s throwing brickbats at whom. It spatialises the players aroung a ring, creating an arena into which their lawsuits do battle.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/kokkindis.jpg" alt="kokkindis" title="kokkindis" width="419" height="452" style="padding: 0 0 0 2px;"  />
</div>
<h3>Making it interactive</h3>
<p>But as a static image there is always a limit to the amount of information that can be portrayed here, and also, the information is quickly out of date, or sometimes plain inaccurate.</p>
<p>It seems to me to be a perfect example of where an interactive piece of data visualisation, or spatialisation as I would prefer to think of it, can show more.</p>
<p>So <a href="http://www.interfacedigital.co.uk/labs/dataviz/01.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/dataviz/01.html?referer=');">this is what I created</a>, after a couple of hours, in Flash, using the Kokkindis visualisation as a starting point. One thing that became apparent is that there is a mismatch between what George Kokkindis has drawn and the data source <a href="https://spreadsheets.google.com/ccc?key=0Aqe2P9sYhZ2ndEhVeTQzd2llcWxwajN6bVJ6Mzl3eGc&#038;hl=en_GB#gid=0" onclick="pageTracker._trackPageview('/outgoing/spreadsheets.google.com/ccc?key=0Aqe2P9sYhZ2ndEhVeTQzd2llcWxwajN6bVJ6Mzl3eGc_038_hl=en_GB_gid=0&amp;referer=');">spreadsheet</a> that McCandless&#8217; infographic works to. Evidently, more fact-checking is required.</p>
<p>This is version 1.0, little more than a clickable version of the original graphic, and drawing details of the suit from the data McCandless is publishing. But I think it shows the potential for bringing this subject matter more vividly to life.</p>
<div class="image">
<a href="http://www.interfacedigital.co.uk/labs/dataviz/01.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/dataviz/01.html?referer=');"><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/10/mobile_dataviz.jpg" alt="mobile_dataviz" title="mobile_dataviz" width="480" height="351" style="padding: 0 0 0 2px;"  /></a>
</div>
<h3>Next steps</h3>
<p>Future enhancements include:</p>
<p>1. Adding company logos and some representation of size, eg market capitalisation.<br />
2. Pulling data from an external data source so that it can be kept up to date easier.<br />
3. Building a display engine to dynamically show lawsuits, and companies, so that it can work with rapidly changing data.<br />
3. More details, including dates and sources, about each lawsuit.<br />
4. A timeline view so it&#8217;s possible to see the history of this legal gunfight. Lawsuits could be shown as resolved, and then fade out over time.</p>
<p>Basically this will involve moving from an interactive graphic to a dynamic visualisation system. I&#8217;ll be digging further into this, and testing out the <a href="http://flare.prefuse.org/" onclick="pageTracker._trackPageview('/outgoing/flare.prefuse.org/?referer=');">Flare toolkit</a> for Flash/ Flex, and other languages such as <a href="http://www.processing.org/" onclick="pageTracker._trackPageview('/outgoing/www.processing.org/?referer=');">Processing</a> and <a href="http://www.openframeworks.cc/" onclick="pageTracker._trackPageview('/outgoing/www.openframeworks.cc/?referer=');">openFrameworks</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2010/10/11/data-visualisation-of-mobile-lawsuits/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interactive World Cup wallcharts</title>
		<link>http://labs.interfacedigital.co.uk/2010/07/21/interactive-world-cup-wallcharts/</link>
		<comments>http://labs.interfacedigital.co.uk/2010/07/21/interactive-world-cup-wallcharts/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 18:26:30 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Data visualisation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[football]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=110</guid>
		<description><![CDATA[The recent World Cup in South Africa inspired some great digital versions of the old classic, the World Cup Wallchart. Here are three of the best.

<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/green_blunder.jpg" alt="green_blunder" title="green_blunder" width="466" height="286" style="padding: 0 0 0 2px;" / /></div>]]></description>
			<content:encoded><![CDATA[<p>The recent World Cup in South Africa inspired some great digital versions of the old classic, the World Cup Wallchart. Here are three of the best:</p>
<h3>1. Marca</h3>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/marca_01.jpg" alt="marca_01" title="marca_01" width="550" height="468" class="alignnone size-full wp-image-115" /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/marca_02.jpg" alt="marca_02" title="marca_02" width="550" height="468" class="alignnone size-full wp-image-116" /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/marca_03.jpg" alt="marca_03" title="marca_03" width="550" height="468" class="alignnone size-full wp-image-117" /><br />
The <a href="http://www.marca.com/deporte/futbol/mundial/sudafrica-2010/calendario-english.html" onclick="pageTracker._trackPageview('/outgoing/www.marca.com/deporte/futbol/mundial/sudafrica-2010/calendario-english.html?referer=');">first</a>, by Spanish sports newspaper Marca, offers a elliptical arrangement of matches, dates, group tables, teams and venues, and displays the related information in the middle. It&#8217;s a great way to capture at a glance how the matches played out across South Africa and throughout the month.</p>
<h3>2. Think Positive</h3>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/think_positive_01.jpg" alt="think_positive_01" title="think_positive_01" width="550" height="364" class="alignnone size-full wp-image-119" /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/think_positive_02.jpg" alt="think_positive_02" title="think_positive_02" width="550" height="364" class="alignnone size-full wp-image-120" /></p>
<p>The next one, <a href = "http://www.think-positive.net/">Think Positive</a>, by Bristol-based interactive agency Positive, is simpler, and uses a radial device with all the matches in sequence. This can be spun to navigate to a particular match. It&#8217;s very well executed, a great piece of information design. From a UX point of view it shows the influence of the iPhone in the way content is navigated.</p>
<h3>3. BBC World Cup 2010 Team Tracker</h3>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/bbc_wc2010_01.jpg" alt="bbc_wc2010_01" title="bbc_wc2010_01" width="550" height="418" class="alignnone size-full wp-image-111" /></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/bbc_wc2010_02.jpg" alt="bbc_wc2010_02" title="bbc_wc2010_02" width="550" height="418" class="alignnone size-full wp-image-112" /></p>
<p>Thirdly, and definitely my favourite, is the <a href="http://news.bbc.co.uk/sport1/hi/football/world_cup_2010/8709313.stm" onclick="pageTracker._trackPageview('/outgoing/news.bbc.co.uk/sport1/hi/football/world_cup_2010/8709313.stm?referer=');">BBC World Cup 2010 Team Tracker</a>. </p>
<p>This application has two modes &#8211; as a predictor or a results tracker. In the build up to the World Cup (or afterwards if you wish to plot alternative histories), you can predict the result of matches, and see the progression of teams through the tournament. But rather than a boring series of lines, each country, represented by a two coloured ribbon that twists, turns and grows as that team moves through the rounds. You can save your predictions out and share them via Twitter and Facebook etc.</p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/bbc_wc2010_03.jpg" alt="bbc_wc2010_03" title="bbc_wc2010_03" width="550" height="418" class="alignnone size-full wp-image-113" /></p>
<p>The Tracker element of the application works in a similar way but tracks the actual unfolding of events in South Africa. Zooming in and out, it gives you all the information, but is also an animated piece of art, an experience, joyous composition celebrating the World Cup. </p>
<p>You can also select a particular team and follow their journey through the tournament, with stop-offs for links to significant moments and highlights from games &#8211; the jumping off point for a multimedia experience.</p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/bbc_wc2010_04.jpg" alt="bbc_wc2010_04" title="bbc_wc2010_04" width="550" height="418" class="alignnone size-full wp-image-114" /></p>
<p>Technically, it&#8217;s a tour de force, created in Flash, and shows that while many people have written Flash off, I really can&#8217;t think of a better tool to create something like this. But it is not just a technical application, it is a beautifully designed and carefully constructed piece of interactive art. It doesn&#8217;t aim to be like a printed wallchart, or a dry exercise in information architecture, but an engaging, enjoyable experience as well.</p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/radialbracket.full.jpg" alt="radialbracket.full" title="radialbracket.full" width="550" height="413" class="alignnone size-full wp-image-118" /></p>
<h3>Printed poster</h3>
<p>Lastly, I should mention the beautiful printed World Cup poster created by New York design studio <a href="http://hyperakt.com/" onclick="pageTracker._trackPageview('/outgoing/hyperakt.com/?referer=');">Hyperakt</a>. Using a radial bracket design, each round of matches moves closer to the middle, so at the centre is the final between Spain the the Netherlands, with the triumphant Spaniards occupying the bullseye. You can pledge money via <a href="http://www.kickstarter.com/projects/hyperakt/2010-world-cup-radial-bracket-poster" onclick="pageTracker._trackPageview('/outgoing/www.kickstarter.com/projects/hyperakt/2010-world-cup-radial-bracket-poster?referer=');">Kickstarter</a> to receive a copy of this poster.</p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/07/worldcuphistory.full.jpg" alt="worldcuphistory.full" title="worldcuphistory.full" width="550" height="804" class="alignnone size-full wp-image-121" /></p>
<p>Hyperakt have also created a poster showing all the World Cups to date in a similar format, but presented linearly.</p>
<p>Finally, interactive World Cup trackers don&#8217;t get better than <a href="http://www.youtube.com/watch?v=5gHorOt6KKw" onclick="pageTracker._trackPageview('/outgoing/www.youtube.com/watch?v=5gHorOt6KKw&amp;referer=');"> this &#8220;soccermeter&#8221;</a> (approx 1.10 in).</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2010/07/21/interactive-world-cup-wallcharts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking Nike Plus &#8211; part 1</title>
		<link>http://labs.interfacedigital.co.uk/2010/03/11/hacking-nike-plus-part-1/</link>
		<comments>http://labs.interfacedigital.co.uk/2010/03/11/hacking-nike-plus-part-1/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:02:32 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Data visualisation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Nike]]></category>
		<category><![CDATA[Nike Plus]]></category>
		<category><![CDATA[Nike Sportband]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=67</guid>
		<description><![CDATA[I love my Nike Sportband. I've also been long fascinated by the Nike Plus website. It's a slick piece of Flash work, and gives a good overview of your runs. But it is frustrating that it doesn't give more information about your runs, or allowed you to visualise the data in more ways. I wanted to find out if this was a factor of the design of the Nike Plus site being a triumph of style over substance, or if there were limits from the data produced from the hardware.

<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/sportband.jpg" alt="sportband" title="sportband" width="452" height="338" style="padding: 0 0 0 2px;" />
</div>]]></description>
			<content:encoded><![CDATA[<p>I love my <a href="http://nikerunning.nike.com/" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/?referer=');">Nike Sportband</a>. As a training aid, it meets my needs perfectly, small and light, and readable as a stopwatch while out running. I used it extensively in training for last year&#8217;s London Marathon, where I was regularly doing 3 hour long weekend training runs, and a number of shorter, faster runs during the week.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/sportband.jpg" alt="sportband" title="sportband" width="452" height="338" style="padding: 0 0 0 2px;" />
</div>
<p>The Sportband records your runs onto its flash drive, which are then automatically uploaded to the Nike Plus site when you plug the Nike Sportsband into the  USB of a PC or Mac running the NikePlusUtil.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/nikeplus_01.jpg" alt="nikeplus_01" title="nikeplus_01" width="550" height="337" style="padding: 0 0 0 2px;"/></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/nikeplus_02.jpg" alt="nikeplus_02" title="nikeplus_02" width="550" height="239"  style="padding: 0 0 0 2px;"/></p>
<p><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/nikeplus_03.jpg" alt="nikeplus_03" title="nikeplus_03" width="550" height="265" style="padding: 0 0 0 2px;" />
</div>
<p>The key areas that  I feel could be improved are:</p>
<ol>
<li>For individual runs, better definition of where you ran faster and where you ran slower</li>
<li>More accurate split times, eg each km, or each mile.</li>
<li>Better transitions between displays of data.</li>
<li>Over a period, whether that be for a week, or a month, better comparison and a better sense of your progress.</li>
<li>With these improved analyses, better goal setting that isn&#8217;t just about logging miles.</li>
<li>API,  encryption and security.</li>
</ol>
<h3>Getting started</h3>
<p>I first started by seeing what information I could get out of the Sportband by itself. The answer is not alot.</p>
<p>Unlike with the Nike+ iPod connector, it is not possible (as far as I know) to retrieve the data of your workouts without first uploading it to Nike Plus. The device is recognised by the computer as a Human Interface Device, in the same fashion as a keyboard or mouse, rather than as a USB drive. Using an app like iHid for the Mac reveals only information about the device. Run data is deleted from the device once it has been uploaded to Nike Plus.</p>
<p>However, it is not mandatory to only use the Nike Plus web site to view your run data. It is possible to access your workout data, once it has been uploaded to Nike Plus. There is a semblance of an API that lets you retrieve data about your runs via HTTP requests. It&#8217;s not exactly public, and there&#8217;s no official documentation, which means that it is subject to change at no notice, but it seems to be happy to return results regardless of where it is called.</p>
<p>For Nike+ with an iPod, it is possible to retrieve run data without first uploading your run to Nike Plus. However, the since the Nike Plus API is doing most of the heavy lifting for us, it makes sense to work with it. While  I managed to figure out this just by looking at the Activity Monitor of Safari to see what requests were being passed, there is some good work online from people such as  <a href="http://www.wroolie.co.uk/2008/05/05/13/" onclick="pageTracker._trackPageview('/outgoing/www.wroolie.co.uk/2008/05/05/13/?referer=');">Eric Wroolie</a> and <a href="http://www.paulsrichards.com/2008/06/12/nike-data-api-access/" onclick="pageTracker._trackPageview('/outgoing/www.paulsrichards.com/2008/06/12/nike-data-api-access/?referer=');">Paul Richards</a>. There&#8217;s even a <a href="http://www.ear-fung.us/apps/nikeplus/" onclick="pageTracker._trackPageview('/outgoing/www.ear-fung.us/apps/nikeplus/?referer=');">Wordpress plug-in</a> (untested by me as yet) which enables you to display your runs within a Wordpress blog. However, as the Nike Plus site URL&#8217;s and the API seem to have changed at certain times, there is no guarantee that these will still be working.</p>
<h3>Data mining Nike Plus</h3>
<p>Run data on Nike Plus seems to be accessible to anyone, if the user has made their run data publicly accessible. Looking at a URL, for instance:</p>
<p><a href="http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/#//runs/history/417671841/" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/_//runs/history/417671841/?referer=');">http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/#//runs/history/417671841/</a></p>
<p>You can see all my runs over history. The number <strong>417671841</strong> is my userID, putting another userID can pull out someone else&#8217;s data, eg 955634643 is another valid ID.</p>
<p>You can find out your own userID by logging in to the Nike Plus site.If you click the link to &#8220;All my Runs&#8221;, it will direct you to :</p>
<p><a href="http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/#//runs/history/417671841/all//" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/_//runs/history/417671841/all//?referer=');">http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/#//runs/history/417671841/all//</a><br />
The number is your userID.</p>
<p>You will need to make sure your privacy settings allow the data to be accessed outside of the Nike Plus site:</p>
<p><a href="http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/profile?page=privacy_settings" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/profile?page=privacy_settings&amp;referer=');">http://nikerunning.nike.com/nikeos/p/nikeplus/en_GB/plus/profile?page=privacy_settings</a></p>
<p>I used the Activity Monitor in Safari to see the requests that are being made to the Nike server. There are a number of .jsp requests that grab the data which is then parsed by the Nike Plus flash application.</p>
<p>Looking at the activity monitor shows a number of jsp calls used to retrieve data, eg:</p>
<p><a href="http://nikerunning.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=417671841" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=417671841&amp;referer=');">http://nikerunning.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=417671841</a></p>
<p>This retrieves all runs by a user, me</p>
<p>Doing a view source on this data shows that this is an XML file. Each individual run is given a runID, such as 1211505962</p>
<p>Again, looking at the activity monitor shows that the data for the individual run is retrieved from a query of the format:</p>
<p><a href="http://nikerunning.nike.com/nikeplus/v1/services/app/get_run.jsp?id=1076405728&amp;userID=417671841" onclick="pageTracker._trackPageview('/outgoing/nikerunning.nike.com/nikeplus/v1/services/app/get_run.jsp?id=1076405728_amp_userID=417671841&amp;referer=');">http://nikerunning.nike.com/nikeplus/v1/services/app/get_run.jsp?id=1076405728&amp;userID=417671841</a></p>
<p>where the ID is the run ID.</p>
<p>Looking at the source of this data again reveals the XML structure of an individual run. There&#8217;s a lot of empty tags in there, such as BPM which indicate possible future Nike products such as integrated heart-rate monitors, or may be used by Nike+ iPod connector but not the Sportband. As well as the actual run data, there is additional data that might be added by the user once uploaded to Nike Plus, such as how they felt, weather condiitions, terrain, and other notes.</p>
<p>The key data is the snapshots, of the time at each mile and each kilometer. There is also the extendedData which consists of distances recorded every second.  My guess is that this is probably the raw data that the Sportband generates.</p>
<pre>
<xmp>
<?xml version="1.0" encoding="UTF-8"?>
<plusService>
  <status>success</status>
  <sportsData>
    <template>
      <templateName>
        <![CDATA[Basic]]&gt;
      </templateName>
    </template>
    <userInfo>
      <weight>80.0</weight>
      <device>SportBand</device>
      <empedID>4H811T0EVSX</empedID>
    </userInfo>
    <runSummary hasHRS="false" workoutType="standard">
      <distance>18.8589</distance>
      <duration>5189000</duration>
      <calories>1563.0</calories>
      <equipmentType>sportband</equipmentType>
      <heartrate>
        <average>0</average>
        <maximum>
          <bpm>0</bpm>
          <duration>0</duration>
          <distance>0.0</distance>
<pace>0</pace>
        </maximum>
        <minimum>
          <bpm>0</bpm>
          <duration>0</duration>
          <distance>0.0</distance>
<pace>0</pace>
        </minimum>
      </heartrate>
    </runSummary>
    <batteryLifetime>0</batteryLifetime>
    <startTime>2009-01-29T07:26:30+00:00</startTime>
    <snapShotList snapShotType="userClick">
      <snapShot event="stop" id="661803145">
        <distance>18.859</distance>
        <duration>5189000</duration>
<pace>275148</pace>
        <bpm>0.0</bpm>
      </snapShot>
    </snapShotList>
    <snapShotList snapShotType="kmSplit">
      <snapShot event="" id="661803146">
        <distance>1.0</distance>
        <duration>275000</duration>
<pace>210190</pace>
        <bpm>0.0</bpm>
      </snapShot>
      <snapShot event="" id="661803147">
        <distance>2.0</distance>
        <duration>541000</duration>
<pace>245222</pace>
        <bpm>0.0</bpm>
      </snapShot>
      ....
    </snapShotList>
    <snapShotList snapShotType="mileSplit">
      <snapShot event="" id="661803164">
        <distance>1.609</distance>
        <duration>443000</duration>
<pace>294266</pace>
        <bpm>0.0</bpm>
      </snapShot>
      <snapShot event="" id="661803165">
        <distance>3.219</distance>
        <duration>848000</duration>
<pace>245222</pace>
        <bpm>0.0</bpm>
      </snapShot>
      ....
    </snapShotList>
    <extendedDataList>
      <extendedData dataType="distance" intervalType="time"
intervalUnit="s" intervalValue="10">
0.0000,0.0204,0.0612,0.1019,0.1427,
0.1835,0.2175,0.2515,0.2990,0.3330,0.3738,0.4010,
0.4213,0.4553,0.4961,0.5369,0.5776,0.6048,0.6388,
0.6796,0.7136,0.7543,0.7951,0.8359,0.8767,0.9107,
0.9379,0.9854,1.0194,1.0602,1.1010,1.1417,1.1621,
1.2029,1.2369,1.2777,1.3253,1.3592,1.4000,1.4408,
1.4680,1.4884,1.5292,1.5631,1.5971,1.6379,1.6855,
1.7263,1.7602,1.8010,1.8350,1.8826,1.9234,1.9641,
1.9981,2.0389,2.0797,2.1205,2.1680,2.2020,2.2428,
2.2836,2.3244,2.3651,2.3991,2.4399,2.4739,2.5147,
2.5554,2.5962,2.6370,2.6710,2.7050,2.7457,2.7865,
2.8273,2.8681,2.9089,2.9428,2.9836,3.0312,3.0720,
3.1060,3.1535,3.1875,3.2283,3.2691,3.3167,3.3506,
3.3914,3.4322,3.4730,3.5138,3.5477,3.5953,3.6293,
3.6633,3.7041,3.7448,3.7584,3.7992,3.8400,3.8740,
3.9012,3.9215,3.9215,3.9487,3.9894,4.0302,4.0642,
4.1118,4.1525,4.1933,4.2205,4.2477,4.2953,4.3157,
4.3632,4.4040,4.4448,4.4788,4.5264,4.5671,4.6079,
4.6283,4.6691,4.7099,4.7506,4.7846,4.8254,4.8662,
4.9070,4.9477,4.9885,5.0157,5.0565,5.0973,5.1244,
5.1652,5.2060,5.2468,5.2876,5.3283,5.3555,5.3827,
5.4235,5.4711,5.5050,5.5526,5.5866,5.6274,5.6682,
5.7157,5.7497,5.7837,5.8177,5.8585,5.9060,5.9468,
5.9740,6.0078,6.0486,6.0826,6.1234,6.1709,6.1981,
6.2457,6.2797,6.3205,6.3612,6.3952,6.4292,6.4768,
6.5108,6.5515,6.5787,6.5991,6.6331,6.6739,6.7147,
6.7487,6.7894,6.8370, ....</extendedData>
    </extendedDataList>
    <bestComparableRun/>
    <name/>
    <description/>
    <signatureValidationStatus>0</signatureValidationStatus>
    <howFelt/>
    <weather/>
    <terrain/>
    <isHumanRaceRun>false</isHumanRaceRun>
    <isFirstHeartRun>false</isFirstHeartRun>
    <intensity/>
<previousRun id="1411967596"/>
    <nextRun id="808019914"/>
  </sportsData>
</plusService>
</xmp>
</pre>
<p>Pulling out the runs for a particular period, you can use startIndex and endIndex parameters.</p>
<p>http://nikerunning.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=417671841&amp;startIndex=20&amp;endIndex=40</p>
<p><!--<br />
There is also the option to specify a startTime and endTime date range, though this does not seem to affect what data is pulled out, but presumably the date parameters are fed to the Flash SWF to decide what to display.</p>
<p>http://nikerunning.nike.com/nikeplus/v1/services/app/run_list.jsp?userID=417671841&amp;startTime2009-12-27T08:30:53+00:00&amp;endTime=2010-01-31T20:03:56+00:59&amp;filterBy=all</p>
<p>Date formats are presented in UTC format eg:<br />
2009-12-27T08:30:53+00:00<br />
and need to be URL encoded to :<br />
2009-12-27T08%3A30%3A53%2B00%3A00</p>
<p>2010-01-31T20:03:56+00:592010-01-31T20%3A03%3A56%2B00%3A59</p>
<p>--></p>
<h3>Building an initial data parser</h3>
<p>As it&#8217;s XML, we can do what we want with it, and choose whatever technology to parse the data and display the results. I&#8217;m going to stick with Flash, and see if I can work on some of the aspects listed at the beginning of this article.</p>
<p>I first created a classes to import the data for all runs, display a summary, and then import the run data for a selected run.</p>
<p>Here&#8217;s an initial AIR app which retrieves all the runs for a userID (by default it has my user ID), and then grabs the run data for an individual run once clicked upon. It&#8217;s not possible to run as a Flash movie within a browser due to Flash security restrictions (on which more in part 2).</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_badge_1405765697"
			class="flashmovie"
			width="217"
			height="180">
	<param name="movie" value="http://www.interfacedigital.co.uk/labs/nike_plus/badge.swf" />
	<param name="flashvars" value="appname=Nike+Parser&amp;appurl=http://www.interfacedigital.co.uk/labs/nike_plus/nike_plus_parser.air&amp;airversion=1.0&amp;imageurl=http://www.interfacedigital.co.uk/labs/nike_plus/sportband.jpg" />
	<param name="bgcolor" value="#f6f6f6" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.interfacedigital.co.uk/labs/nike_plus/badge.swf"
			name="fm_badge_1405765697"
			width="217"
			height="180">
		<param name="flashvars" value="appname=Nike+Parser&amp;appurl=http://www.interfacedigital.co.uk/labs/nike_plus/nike_plus_parser.air&amp;airversion=1.0&amp;imageurl=http://www.interfacedigital.co.uk/labs/nike_plus/sportband.jpg" />
		<param name="bgcolor" value="#f6f6f6" />
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<div class="image">
<a href="http://www.interfacedigital.co.uk/labs/nike_plus/index.html" target="_new" onclick="pageTracker._trackPageview('/outgoing/www.interfacedigital.co.uk/labs/nike_plus/index.html?referer=');"><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2010/03/sportband_loader2.jpg" alt="Nike+ Parser" title="Nike+ Parser" width="550" height="445" style="padding: 0 0 0 2px;" /></a>
</div>
<p>I used the ISO8601Util class from <a href="http://www.brooksandrus.com/blog/2009/02/23/convert-an-iso-8601-date-string-to-from-a-native-as3-date-object/" onclick="pageTracker._trackPageview('/outgoing/www.brooksandrus.com/blog/2009/02/23/convert-an-iso-8601-date-string-to-from-a-native-as3-date-object/?referer=');">Brooks Andrus </a>to help display the date in a more user friendly way, though some more date manipulation is still required.</p>
<p>So far, so good. In Part 2, coming shortly, I&#8217;ll look at how we can work with the Nike Plus data, to create a class for individual runs, and see what we can do to create new visualisations and transitions.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2010/03/11/hacking-nike-plus-part-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The taking of Pantone 123</title>
		<link>http://labs.interfacedigital.co.uk/2009/09/14/the-taking-of-pantone-123/</link>
		<comments>http://labs.interfacedigital.co.uk/2009/09/14/the-taking-of-pantone-123/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 15:42:30 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=47</guid>
		<description><![CDATA[The visual identity of Interface Digital makes use of bold typography and the brassiest of all colours, Pantone 123. We're reclaiming it from fast-food outlet purgatory.

<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/09/identity__crop_032.gif" alt="identity__crop_03" title="identity__crop_03" width="550" height="369"  style="padding: 0 0 0 2px;" /></div>]]></description>
			<content:encoded><![CDATA[<p>The visual identity of Interface Digital makes use of bold typography and the brassiest of all colours, Pantone 123. We&#8217;re reclaiming it from fast-food outlet purgatory.</p>
<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/09/identity_iso3.gif" alt="identity_iso" title="identity_iso" width="550" height="367" style="padding: 0 0 0 2px;"/></div>
<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/09/identity__crop_012.gif" alt="identity__crop_01" title="identity__crop_01" width="550" height="393" style="padding: 0 0 0 2px;"/></div>
<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/09/identity__crop_022.gif" alt="identity__crop_02" title="identity__crop_02" width="550" height="357" style="padding: 0 0 0 2px;" /></div>
<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/09/identity__crop_032.gif" alt="identity__crop_03" title="identity__crop_03" width="550" height="369" style="padding: 0 0 0 2px;" /></div>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2009/09/14/the-taking-of-pantone-123/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Flash Image replacement with jQuery.flash</title>
		<link>http://labs.interfacedigital.co.uk/2009/08/17/simple-flash-image-replacement-with-jquery-flash/</link>
		<comments>http://labs.interfacedigital.co.uk/2009/08/17/simple-flash-image-replacement-with-jquery-flash/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 17:48:50 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=36</guid>
		<description><![CDATA[One of the simplest methods we have found for image replacement is jQuery.Flash. 

<div class="image" ><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/08/jquery_flash.gif" alt="jquery_flash" title="jquery_flash" width="550" height="323" style="padding: 0 0 0 2px;" /></div>

]]></description>
			<content:encoded><![CDATA[<p>Flash image replacement is a concept of replacing a piece of text with a Flash movie, giving better control over typography without sacrificing the search engine friendliness or mark-up semantics that using an image would do.</p>
<p>Pioneered with the <a href="http://www.mikeindustries.com/sifr/" onclick="pageTracker._trackPageview('/outgoing/www.mikeindustries.com/sifr/?referer=');">sIFR</a> technique, Flash image replacement puts a selectable Flash movie instead of a text element, usually a header tag such as an &lt;h1&gt; or &lt;h2&gt;. Users without Flash see a plain text image, Google and other search engines see the text, and user with Flash see a heading rendered with Flash, using whatever typeface has been exported as the Flash movie. However, most of the techniques we&#8217;ve tried have all had issues in terms of ensuring cross-platform consistency.</p>
<p>One of the simplest methods we have found for image replacement is <a href="http://jquery.lukelutman.com/plugins/flash/" onclick="pageTracker._trackPageview('/outgoing/jquery.lukelutman.com/plugins/flash/?referer=');">jQuery.Flash</a>.  This is a plug-in for the javascript framework <a href="http://jquery.com/" onclick="pageTracker._trackPageview('/outgoing/jquery.com/?referer=');">jQuery</a> written by Luke Lutman.</p>
<div class="image" ><a href="http://labs.interfacedigital.co.uk/examples/jquery_flash/example.html"><img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/08/jquery_flash.gif" alt="jquery_flash" title="jquery_flash" width="550" height="323" style="padding: 0 0 0 2px;"/></a>
</div>
<p>jQuery.flash provides a simple, standards compliant way for embedding flash content in a web page &#8211; in this regard it is similar to techniques such as the <a href="http://blog.deconcept.com/swfobject/" onclick="pageTracker._trackPageview('/outgoing/blog.deconcept.com/swfobject/?referer=');">SWFobject</a> library. But it also makes it relatively simple to do Flash image replacement.</p>
<p>Here&#8217;s an <a href="http://labs.interfacedigital.co.uk/examples/jquery_flash/example.html">example.</a></p>
<p>It&#8217;s still not perfect &#8211; the headers do not adjust if the browser window is resized, and it&#8217;s hard to control the spacing around the replaced elements, but until we see wider adoption of web fonts supporting the @font-face tag this is the best way to achieve rich typography in headers. We&#8217;re continuing to follow technologies such as <a href="http://typekit.com/>Typekit</a> and <a href+"http://fontdeck.com/index.php">Fontdeck</a>, but a clear standard is still yet to emerge for web typography.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2009/08/17/simple-flash-image-replacement-with-jquery-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Goodbye to Totaal Voetbal</title>
		<link>http://labs.interfacedigital.co.uk/2009/06/23/goodbye-to-totaal-voetbal/</link>
		<comments>http://labs.interfacedigital.co.uk/2009/06/23/goodbye-to-totaal-voetbal/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:48:45 +0000</pubDate>
		<dc:creator>Marty</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[scriptographer]]></category>

		<guid isPermaLink="false">http://labs.interfacedigital.co.uk/?p=18</guid>
		<description><![CDATA[As we are redecorating our existing office prior to relocating, it's time to say goodbye to our Totaal Voetbal '74 mural.

<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/06/cruyff_02_sm.jpg" alt="cruyff_02_sm" title="cruyff_02_sm" width="550" height="413" style="padding: 0 0 0 2px;"/>
</div>]]></description>
			<content:encoded><![CDATA[<p>As we are redecorating our existing office prior to relocating, it&#8217;s time to say goodbye to our Totaal Voetbal &#8216;74 mural.</p>
<div class="image" >
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/06/cruyff_02_sm.jpg" alt="cruyff_02_sm" title="cruyff_02_sm" width="550" height="413" style="padding: 0 0 0 2px;" />
</div>
<p>The mural, featuring Dutch football legend Johan Cryuff, was created using the excellent Illustrator plug-in <a href="http://www.scriptographer.com/" onclick="pageTracker._trackPageview('/outgoing/www.scriptographer.com/?referer=');">Scriptographer</a>. An amazing web-based application for creating large-size murals is <a href="http://homokaasu.org/rasterbator/" onclick="pageTracker._trackPageview('/outgoing/homokaasu.org/rasterbator/?referer=');">Rasterbator</a>.</p>
<div class="image">
<img src="http://labs.interfacedigital.co.uk/wp-content/uploads/2009/06/cruyff_01_sm.jpg" alt="cruyff_01_sm" title="cruyff_01_sm" width="550" height="364" style="padding: 0 0 0 2px;" />
</div>
<p>This on <a href="http://en.wikipedia.org/wiki/Total_football" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Total_football?referer=');">Totaalvoetbal on Wikipedia</a>:</p>
<blockquote><p>Space and the creation of it were central to the concept of Total Football. Ajax defender Barry Hulshoff explained how the team that won the European Cup in 1971, 1972 and 1973 worked it to their advantage: &#8220;We discussed space the whole time. Johan Cruyff always talked about where people should run and where they should stand, and when they should not move.&#8221;</p>
<p>The constant switching of positions that became known as Total Football only came about because of this spatial awareness. <em>&#8220;It was about making space, coming into space, and organizing space-like architecture on the football pitch,&#8221;</em> said Hulshoff. The system developed organically and collaboratively: it was not down to coach Rinus Michels, his successor Stefan Kovacs or Cruyff alone. Cruyff summed up his (Total Football) philosophy: <em>&#8220;Simple football is the most beautiful. But playing simple football is the hardest thing.&#8221;</em></p>
<p>The 1972 European Cup final proved to be Total Football&#8217;s finest hour. After Ajax&#8217;s 2:0 victory over Inter Milan, newspapers around Europe reported the <em>&#8220;death of Catenaccio and triumph of Total Football&#8221;</em>. The Dutch newspaper Algemeen Dagblad declared: <em>&#8220;The Inter system undermined. Defensive football is destroyed.&#8221;</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://labs.interfacedigital.co.uk/2009/06/23/goodbye-to-totaal-voetbal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

