<?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"
	>

<channel>
	<title>Random Etc.</title>
	<atom:link href="http://www.tom-carden.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tom-carden.co.uk</link>
	<description>Notes to self. Work, play, and the rest.</description>
	<pubDate>Fri, 26 Feb 2010 00:02:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>More Multi-touch Links</title>
		<link>http://www.tom-carden.co.uk/2010/02/25/more-multi-touch-links/</link>
		<comments>http://www.tom-carden.co.uk/2010/02/25/more-multi-touch-links/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 00:02:00 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[interaction]]></category>

		<category><![CDATA[multitouch]]></category>

		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=932</guid>
		<description><![CDATA[Here's a nice overview of how touch events are modelled in mobile Safari on the iphone. Here's a student paper detailing some multi-touch code architectures and actual code too.
Here's a nice article on single point gesture recognition for games, here are lovely simple single stroke and multi-stroke gesture recognisers in javascript. Here's the corresponding paper. [...]]]></description>
			<content:encoded><![CDATA[<p>Here's <a href="http://rossboucher.com/2008/08/19/iphone-touch-events-in-javascript/">a nice overview of how touch events are modelled in mobile Safari</a> on the iphone. Here's <a href="http://www.nuiteq.com/downloads/files/Gesture_analyzing.pdf">a student paper detailing some multi-touch code architectures</a> and actual code too.</p>
<p>Here's <a href="http://www.gamedev.net/reference/articles/article2039.asp">a nice article on single point gesture recognition for games</a>, here are lovely simple <a href="http://depts.washington.edu/aimgroup/proj/dollar/">single stroke</a> and <a href="http://depts.washington.edu/aimgroup/proj/dollar/ndollar.html">multi-stroke</a> gesture recognisers in javascript. Here's <a href="http://faculty.washington.edu/wobbrock/pubs/uist-07.1.pdf">the corresponding paper</a>. Here's <a href="http://ecologylab.net/research/publications/tabletop08-posterAbstract1-6.pdf">a paper about modelling gestures using Markov chains</a>.</p>
<p>And here's <a href="http://kineme.net/FeatureRequests/GestureRecognition">a gesture recognition discussion thread featuring some of the above links</a> and many more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2010/02/25/more-multi-touch-links/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Curling is Project Management</title>
		<link>http://www.tom-carden.co.uk/2010/02/22/curling-is-project-management/</link>
		<comments>http://www.tom-carden.co.uk/2010/02/22/curling-is-project-management/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 00:52:06 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[curling]]></category>

		<category><![CDATA[Language]]></category>

		<category><![CDATA[metaphor]]></category>

		<category><![CDATA[sport]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=929</guid>
		<description><![CDATA[
Curling is unexpectedly popular again. We're measuring this.
Continuing a four and half year old seed of thought that Matt Webb planted about sporting metaphors, I'm imagining that Curling is project management:

sweeping in front of the stone to both clear a path and influence the direction, but without touching it
a good curling strategy is to both [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nbcolympics.com/olympicpulse/tweet-tracker/index.html"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2010/02/curling-blog.jpg" width="500" height="419" /></a></p>
<p>Curling is unexpectedly popular again. <a href="http://content.stamen.com/stamen_designs_live_twitter_visualizations_of_the_vancouver_olympics">We're measuring this.</a></p>
<p>Continuing <a href="http://interconnected.org/home/2005/08/01/as_previously_considered">a four and half year old seed of thought</a> that Matt Webb planted about sporting metaphors, I'm imagining that Curling is project management:</p>
<ul>
<li>sweeping in front of the stone to both clear a path and influence the direction, but <em>without touching it</em></li>
<li>a good curling strategy is to both knock the competition out of the way and get closer to the target, sometimes with different stones</li>
<li>...plus you can drink and smoke while you play (<a href="http://www.instantrimshot.com/">thx</a> Aaron and George)</li>
</ul>
<p>I was going to labour this point a little bit, but wikipedia sums it up nicely. In Curling, "two sweepers with brooms or brushes accompany each stone and use stopwatches and their best judgment, along with direction from their teammates, to help direct the stones to their resting place, but without touching the stones."</p>
<p>And now back to measuring things.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2010/02/22/curling-is-project-management/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Help Me Think Through Multi-touch Events</title>
		<link>http://www.tom-carden.co.uk/2010/02/09/help-me-think-through-multi-touch-events/</link>
		<comments>http://www.tom-carden.co.uk/2010/02/09/help-me-think-through-multi-touch-events/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:31:36 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[interaction design]]></category>

		<category><![CDATA[multitouch]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=927</guid>
		<description><![CDATA[We're lucky enough to have a big ass table in the office for a client project. Not a MS one, but an Ideum one that speaks the TUIO/OSC protocol.
I have a GestureWorks license available to me if I need it but I haven't evaluated that yet because I have a little time to experiment and [...]]]></description>
			<content:encoded><![CDATA[<p>We're lucky enough to have a <a href="http://www.youtube.com/watch?v=CZrr7AZ9nCY">big ass table</a> in the office for a client project. Not a MS one, but an <a href="http://www.ideum.com/products/multitouch">Ideum one</a> that speaks the <a href="http://www.tuio.org/">TUIO</a>/OSC protocol.</p>
<p>I have a <a href="http://www.gestureworks.com/">GestureWorks</a> license available to me if I need it but I haven't evaluated that yet because I have a little time to experiment and I'm really just curious about how it all works. I'm using Flash, and I'm successfully receiving TUIO messages using <a href="http://gkaindl.com/software/udp-flashlc-bridge">udp-flashlc-bridge</a> and <a href="http://code.google.com/p/tuio-as3/">tuio-as3</a> with a LocalConnection. It's working nicely so far, and I already adapted Modest Maps to deal with rotations and got up and running quite quickly.</p>
<p>The reason I'm reaching for my blog for the first time in a while to ask if anyone reading has experience to share about developing software for this kind of platform? Specifically I'm wondering if anyone has hints about how to go from raw cursor information (potentially from several fingers on several hands) and turn that into meaningful motion? What I can do so far works really well with <a href="http://mike.teczno.com/notes/two-fingers.html">two fingers</a> but I'm wondering where to go from here.</p>
<p>Some of the steps seem simple. For example, if a cursor appears and disappears in a short space of time and doesn't move very much, that's a tap event. If two cursors appear and disappear twice in the same place in a short space of time, that's a double-tap event. If a single finger cursor appears and moves, that's a drag. A fast drag could be interpreted as a swipe. You can code some momentum/physics in there to make it feel right. So far so good. This much is intuitive.</p>
<p>So then... there's the whole task of doing hit-tests on each interactive object on screen so that you don't combine cursors into gestures unless they're acting on the same thing. This is familiar territory for me. But where intuition breaks down for me is if two or more fingers appear and move in <em>roughly</em> the same direction - is that a drag gesture? But how do you define <em>roughly</em>, or should you also interpret it as scaling or rotation? And when do you decide to ignore the scaling?</p>
<p>And then, if several fingers are doing this, potentially in opposite directions, how do you boil that down into a gesture? Or if several people are all mashing the table at once, how do you filter out the noise? Can you? There are some juicy interaction design problems in here that I know I'm not the first person to think about by a long shot (<a href="http://www.billbuxton.com/multitouchOverview.html">hat tip</a>, <a href="http://reactivision.sourceforge.net/">hat tip</a>, <a href="http://nuigroup.com/">hat tip</a>, <a href="http://www.toucheliss.com/">hat tip</a>, <a href="http://stimulant.io/">hat tip</a>, <a href="http://www.perceptivepixel.com/">hat tip</a> etc). But I don't see much discussion of the <em>interpretation</em> of raw touch information into gestures. If you know of good projects that have solved these problems before (in an open way) I'd love to hear about them!</p>
<p>One idea I've had is to use a clustering algorithm like k-means to get two groups of points, and filter out the outliers, and then continue to apply slightly naive two-finger algorithms to build rotation/scale/translate matrices. Are you an old school multi-touch/reactivision hacker? Have you built touch tables for a living? Does all of this sound familiar to you? Let me know your thoughts!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2010/02/09/help-me-think-through-multi-touch-events/feed/</wfw:commentRss>
		</item>
		<item>
		<title>If I Had More Time</title>
		<link>http://www.tom-carden.co.uk/2009/09/06/if-i-had-more-time/</link>
		<comments>http://www.tom-carden.co.uk/2009/09/06/if-i-had-more-time/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 20:20:49 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[amymartin]]></category>

		<category><![CDATA[dickens]]></category>

		<category><![CDATA[gaffta]]></category>

		<category><![CDATA[goo]]></category>

		<category><![CDATA[Links]]></category>

		<category><![CDATA[maeda]]></category>

		<category><![CDATA[prickles]]></category>

		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=920</guid>
		<description><![CDATA["Mr. Micawber was waiting for me within the gate, and we went up to
his room (top story but one), and cried very much.  He solemnly
conjured me, I remember, to take warning by his fate; and to
observe that if a man had twenty pounds a-year for his income, and
spent nineteen pounds nineteen shillings and sixpence, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>"Mr. Micawber was waiting for me within the gate, and we went up to<br />
his room (top story but one), and cried very much.  He solemnly<br />
conjured me, I remember, to take warning by his fate; and to<br />
observe that if a man had twenty pounds a-year for his income, and<br />
spent nineteen pounds nineteen shillings and sixpence, he would be<br />
happy, but that if he spent twenty pounds one he would be<br />
miserable.  After which he borrowed a shilling of me for porter,<br />
gave me a written order on Mrs. Micawber for the amount, and put<br />
away his pocket-handkerchief, and cheered up."</p></blockquote>
<p>I am the <a href="http://www.gutenberg.org/etext/766">Mr Micawber</a> of time, being that I'm over-spending just slightly this month. Hopefully I'll make it up this year!</p>
<p>If I had more time I might blog about a small revival in minimal geeky location-based fun stuff that's happening with sites like <a href="http://noticin.gs">noticin.gs</a> and <a href="http://blockchalk.com">blockchalk.com</a>. I might also note that <a href="http://foursquare.com/">foursquare</a> got funding which is good because even though I'm not particularly attracted to the service it's a better experience than its competitors by a long way (and much less creepy, I think). And I'd note that opengeodata.org has stopped being about OpenStreetMap exclusively and that if you want to get Steve Coast's attention there are <a href="http://www.opengeodata.org/2009/09/03/free-the-cost-of-many-things/">a million things he's thinking about these days</a>.</p>
<p>If I had more time to blog and more time to think, I'd stop leaving cranky comments trying to answer <a href="http://www.visualcomplexity.com/vc/blog/?p=644" title="information art vs information visualisation">Manuel Lima's false dichotomy</a> and <a href="http://eagereyes.org/criticism/shaking-the-pretty-picture-stigma.html" title="visualization means pretty pictures first">Robert Kosara's straw man</a> and I'd stop worrying about definitions of data and aesthetics and analysis and I'd be happy to frame the argument in terms of <a href="http://russelldavies.typepad.com/planning/2009/09/prickles-and-goo.html">prickles and goo</a> instead.</p>
<blockquote><p>"it is inevitable that there will soon be a large number of hybrid designer-engineers that shall radically reconstruct the visual landscape." – <a href="http://acg.media.mit.edu/people/">John Maeda</a></p></blockquote>
<p>This debate isn't new and it's not going away either. John Maeda and friends have been pointing out the rise of gooey-prickles and prickley-goo for years. I wonder if prickly folks at <a href="http://www.risd.edu/president/">RISD</a> are getting gooier, and vice versa.</p>
<p>My money's on the middle ground too, which is why I find narrow and divisive definitions so frustrating. Why can't we have aesthetically pleasing data analysis? (Of course there will be pure analysis with no emphasis on aesthetics, just as there will be pure aesthetics with no emphasis on data. Sometimes the latter with be <a href="http://www.flickr.com/photos/quasimondo/sets/72157619795179936/">art to make a point</a>. That's cool!)</p>
<p>If I had more time to think and blog, I'd have told you about our intern <a href="http://www.amyemartin.com/">Amy Martin</a> and how she worked with us over the summer on <a href="http://www.amyemartin.com/designandcode/wikipedia.html">some Wikipedia stuff</a> to hone her hybrid designer-developer skills, and how that <a href="http://www.amyemartin.com/blog/2009/09/actually-using-processing-to-like.html">seems to be paying off nicely</a>. And I'd mention the new GAFFTA space in San Francisco that is <a href="http://www.gaffta.org/2009/08/20/creative-coding-1/">running workshops</a> also recognising this kind of work without worrying overmuch about definitions. <a href="http://www.gaffta.org/2009/08/23/inaugural-exhibition-open/">We'll be there next month</a>.</p>
<p>Gosh. If I had more time <a href="http://www.structuredprocrastination.com/">I'd never blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/09/06/if-i-had-more-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Interviews! Everything!</title>
		<link>http://www.tom-carden.co.uk/2009/06/12/interviews-everything/</link>
		<comments>http://www.tom-carden.co.uk/2009/06/12/interviews-everything/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 17:31:33 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[interviews]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[where 2.0]]></category>

		<category><![CDATA[wherecamp]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=916</guid>
		<description><![CDATA[This week, Eric and Geraldine updated the Stamen homepage to include a list of Everything, Everything and Kicker Studio's Jennifer Bove posted an interview with me and Boris Anthony from Dopplr about information visualisation for Creativity Online.
Before that, but I've been slow to update, Tish Shute posted a long and detailed write-up of Where 2.0 [...]]]></description>
			<content:encoded><![CDATA[<p>This week, Eric and Geraldine updated the Stamen homepage to include a list of <a href="http://stamen.com/everything">Everything, Everything</a> and <a href="http://kickerstudio.com">Kicker Studio's</a> <a href="http://jennbove.com/">Jennifer Bove</a> posted an <a href="http://creativity-online.com/?action=blog:article&newsId=137183&sectionId=on_design">interview</a> with me and <a href="http://twitter.com/bopuc">Boris Anthony</a> from <a href="http://dopplr.com">Dopplr</a> about information visualisation for Creativity Online.</p>
<p>Before that, but I've been slow to update, <a href="http://ugotrade.com">Tish Shute</a> posted <a href="http://www.ugotrade.com/2009/06/02/location-becomes-oxygen-at-where-20-wherecamp/">a long and detailed write-up</a> of Where 2.0 and WhereCamp featuring a couple of quotes from me and a lot more from <a href="http://www.aaronland.info/weblog/2009/05/21/things/">Aaron Cope</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/06/12/interviews-everything/feed/</wfw:commentRss>
		</item>
		<item>
		<title>js-vector-maps on github</title>
		<link>http://www.tom-carden.co.uk/2009/06/06/js-vector-maps-on-github/</link>
		<comments>http://www.tom-carden.co.uk/2009/06/06/js-vector-maps-on-github/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 06:29:00 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[canvas]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[mapnik]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[Open-Source]]></category>

		<category><![CDATA[OpenStreetMap]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=914</guid>
		<description><![CDATA[I've been experimenting with some javascript classes that mimic the structure of mapnik's Layer/Style/Rule classes and render OSM data (via GeoJSON) to a &#60;canvas&#62; element. I've also finally taken a look at how github works, so I've decided to share the initial code there in case people are interested. If you don't want to check [...]]]></description>
			<content:encoded><![CDATA[<p>I've been experimenting with some javascript classes that mimic the structure of <a href="http://mapnik.org">mapnik</a>'s Layer/Style/Rule classes and render OSM data (via GeoJSON) to a &lt;canvas&gt; element. I've also finally taken a look at how github works, so I've decided to <a href="http://github.com/RandomEtc/js-vector-maps/tree/master">share the initial code there</a> in case people are interested. If you don't want to check the code out for yourself there's <a href="http://www.tom-carden.co.uk/js-vector-osm/">a demo page here</a> (tested in Firefox and Safari only, so far).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/06/06/js-vector-maps-on-github/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Historical Hurricanes &#038; Oakland Crime</title>
		<link>http://www.tom-carden.co.uk/2009/06/02/historical-hurricanes-oakland-crime/</link>
		<comments>http://www.tom-carden.co.uk/2009/06/02/historical-hurricanes-oakland-crime/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 06:10:07 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[crime]]></category>

		<category><![CDATA[crimespotting]]></category>

		<category><![CDATA[hurricanes]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[modest-maps]]></category>

		<category><![CDATA[msnbc]]></category>

		<category><![CDATA[oakland]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=909</guid>
		<description><![CDATA[Continuing three years of exploration and development at the intersection of mapping and time; a quick post about two new things I've been working on at Stamen.
Last week we released a Historical Hurricane map for msnbc.com, a follow up to our forecast tracker from last year which was recently accepted into the SIGGRAPH Information Aesthetics [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing three years of exploration and development at the intersection of mapping and time; a quick post about two new things I've been working on at <a href="http://stamen.com">Stamen</a>.</p>
<p>Last week we released a <a href="http://www.msnbc.msn.com/id/30072578">Historical Hurricane map</a> for msnbc.com, a follow up to our <a href="http://www.tom-carden.co.uk/2008/09/02/new-work-hurricane-tracker-for-msnbc/">forecast tracker from last year</a> which was recently accepted into the <a href="http://www.siggraph.org/s2009/galleries_experiences/information_aesthetics/">SIGGRAPH Information Aesthetics showcase</a>. You can <a href="http://stamen.com/msnbc_historical_hurricane_maps">read more about the historical map on the Stamen site</a>, or just go ahead and explore the finished thing:</p>
<p><a href="http://www.msnbc.msn.com/id/30072578"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2009/06/hurdat-rc9-local-500x300.png" alt="" title="hurdat-rc9-local" width="500" height="300" class="alignnone size-medium wp-image-910" /></a></p>
<p>Further to <a href="http://www.tom-carden.co.uk/2009/05/13/cloudspotting/">our updates earlier last month</a>, we just released another round of improvements to <a href="http://oakland.crimespotting.org">Oakland Crimespotting</a>. <a href="http://mike.teczno.com/notes/oakland-crime-maps/XII.html">Mike</a> and <a href="http://content.stamen.com/node/171">Eric</a> have full details. I'm particularly pleased that we're able to open up our archive of around two years worth of data, but also that we're able to try something new with an interface for filtering by time of day.</p>
<p><a href="http://oakland.crimespotting.org"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2009/06/http-oaklandcrimespottingorg-map-500x375.png" alt="" title="http-oaklandcrimespottingorg-map" width="500" height="375" class="alignnone size-medium wp-image-911" /></a></p>
<p>We jokingly started calling this a time pie, and now we're stuck with it... in a good way. I'm still not 100% sure it's intuitive, but I think that working the real sunrise and sunset times in there should help. The only comparable interface I could find was this:</p>
<p><img src="http://www.tom-carden.co.uk/wp-content/uploads/2009/06/timer.jpg" alt="" title="timer" width="500" height="500" class="alignnone size-medium wp-image-912" /></p>
<p>If you know of any other similar ways of selecting/filtering 24 hours, let me know in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/06/02/historical-hurricanes-oakland-crime/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cloudspotting</title>
		<link>http://www.tom-carden.co.uk/2009/05/13/cloudspotting/</link>
		<comments>http://www.tom-carden.co.uk/2009/05/13/cloudspotting/#comments</comments>
		<pubDate>Thu, 14 May 2009 04:31:53 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[cloudmade]]></category>

		<category><![CDATA[crime]]></category>

		<category><![CDATA[crimespotting]]></category>

		<category><![CDATA[Maps]]></category>

		<category><![CDATA[modest-maps]]></category>

		<category><![CDATA[oakland]]></category>

		<category><![CDATA[stamen]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=901</guid>
		<description><![CDATA[We've been working on some updates to Oakland Crimespotting recently and Mike released the first iteration today. The most significant change is a switch to base maps using OpenStreetMap data. We're using the Pale Dawn cartography that we (Stamen) designed for CloudMade exactly as it's intended: a subtle backdrop for data that still includes the [...]]]></description>
			<content:encoded><![CDATA[<p>We've been working on some updates to <a href="http://oakland.crimespotting.org/">Oakland Crimespotting</a> recently and <a href="http://mike.teczno.com">Mike</a> released the first iteration today. The most significant change is a switch to base maps using <a href="http://www.openstreetmap.org">OpenStreetMap</a> data. We're using the Pale Dawn cartography that we (Stamen) designed for <a href="http://www.cloudmade.com">CloudMade</a> exactly as it's intended: a subtle backdrop for data that still includes the richer local information that OpenStreetMap contributors (like Mike) cover best. </p>
<p><a href="http://oakland.crimespotting.org/"><img src="http://www.tom-carden.co.uk/wp-content/uploads/2009/05/cloudspotting-500x375.png" alt="" title="cloudspotting" width="500" height="375" class="alignnone size-medium wp-image-902" /></a></p>
<p>Other changes we've made include numerous small performance optimisations, new sliders in the marker info-bubbles, date labels on the timeline and the crime-type filters now double as a full legend. The whole thing has had a design overhaul too thanks to <a href="http://stamen.com/studio/geraldine">Geraldine</a>.</p>
<p>We've got a few more features planned for release soon, and we've started a <a href="http://blog.crimespotting.org">blog</a> to keep track of new developments. Now is a great time to let us know if you have suggestions or feature requests! Feel free to leave a comment here or email info@crimespotting.org if you prefer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/05/13/cloudspotting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Android Tinkering</title>
		<link>http://www.tom-carden.co.uk/2009/05/11/android-tinkering/</link>
		<comments>http://www.tom-carden.co.uk/2009/05/11/android-tinkering/#comments</comments>
		<pubDate>Mon, 11 May 2009 21:48:41 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[android]]></category>

		<category><![CDATA[Code]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=897</guid>
		<description><![CDATA[I got an Android dev phone. Geeks talk.
I've heard it said that this would be the best phone in the world if it wasn't for the iPhone*. I can believe it. So this is the second best phone in the world, and you write software for it using Java and (optionally) Eclipse. I know Java [...]]]></description>
			<content:encoded><![CDATA[<p>I got an <a href="http://www.android.com">Android</a> <a href="http://www.engadgetmobile.com/2008/12/05/sim-hardware-unlocked-android-dev-phone-1-surfaces-for-399/">dev phone</a>. <a href="http://romeda.org/blog/2009/05/easy-android.html">Geeks talk</a>.</p>
<p>I've heard it said that this would be the best phone in the world if it wasn't for the iPhone*. I can believe it. So this is the second best phone in the world, and you write software for it using Java and (optionally) Eclipse. I know Java and I use Eclipse all the time for writing Flash apps, so this is a tempting prospect: world class hardware, easy to use software. Let's go!</p>
<p><small>* We can debate what it means to be the best phone in the world at the moment - suffice to say that I know that hardware alone will never do it. Apple's retail experience, customer support, iTunes store, developer tools etc. all leave Android and others with a lot of work to do. But it is a nice phone, certainly. I also haven't been using the phone for voice, nor have I been syncing my emails and calendar with the phone... so this isn't a review by any stretch of the imagination.</small></p>
<p>There's a brand new update available for the Android OS, version 1.5 aka "Cupcake". My phone came with 1.1 and despite some prodding it wouldn't go ahead and upgrade itself. So I had to <a href="http://www.htc.com/www/support/android/adp.html">download the 1.5 updates</a> and do it myself. That page is full of long and complicated explanations but basically you're just copying files, renaming them to <tt>update.zip</tt> and rebooting the phone, twice. (Mine got confused in the middle because it finally started to automatically update itself and I let it. If that happens just ignore it and continue with the manual process and everything should be fine.)</p>
<p>My main focus with tinkering with the phone has been to get the API demos running so I can get a sense for how easy it is to work with the Google MapView classes and also how much boilerplate code I need in order to load data over the network and draw pretty things with OpenGL. The Hello World tutorial worked straight away: if you have the phone plugged in it automatically installs your app and runs it on the device, if not then it fires up an emulator. Getting the API demos up and running was a little trickier because it involved importing the project from <tt>android-sdk-mac_x86-1.5_r1/platforms/android-1.5/samples/ApiDemos</tt> first, but it did work after I upgraded to Cupcake.</p>
<p>For the MapView to work you need to jump through some app signing hoops before you can get a Google Maps API key that will allow the device to load map tiles. The documentation is quite dense but if you're just playing around in Eclipse you can sign things with your debug key; in this case the <a href="http://code.google.com/android/maps-api-signup.html">API key signup page</a> tells you what to do. Just be sure to log in with the same Google account you'll be using in the Android Marketplace, if you get that far.</p>
<p>Once I'd kicked the tyres with the demos I decided to jump straight in and try my hand at an app that loads data from a web service and displays it on a map. The learning curve was OK, here's a list of things I wish I'd known about before I started:</p>
<ul>
<li>Like any good Swing programmer or web app developer, I have a head for asynchronous operations and I'm comfortable with callbacks and so on. Of course Java is a little more verbose with this, and the need to run UI code on the UI thread but have long running tasks in a separate thread can quickly lead to spaghetti code. Thankfully Android has an <a href="http://android-developers.blogspot.com/2009/05/painless-threading.html">AsyncTask class</a> which really elegantly wraps up the pattern of bouncing between two threads and tracking the progress of long tasks. Completely recommended over lots of <tt>new Thread(new Runnable()).start()</tt>, not least because it lets you cleanly cancel things in <tt>onDestroy</tt>, too.</li>
<li>The Android libraries include the Apache HTTP library, which is quite good (if a little verbose). <a href="http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/">This HTTP & JSON example</a> is great, and as I discovered if you reuse the HttpClient object your app will load lots of data happily and with good performance.</li>
<li>The <tt>android.util.Xml</tt> class will make you a SAX parser for XML parsing. <a href="http://www.helloandroid.com/node/110?page=0%2C2">This tutorial</a> otherwise covers what you need to know about SAX parsing and Java if you haven't done it before. The Xml class's convenience function cuts out the <tt>AbstractThingerFactory</tt> boiler-plate code that Java programmers are generally too tolerant of.</li>
<li>In <tt>MapView</tt>, an <tt>ItemizedOverlay</tt> with no items still needs to call <tt>populate</tt> or your app will crash as soon as you interact with the map. This is <a href="http://code.google.com/p/android/issues/detail?id=2035">a known issue</a>, I'm not sure if it's a bug, I'm mainly noting it here for search engines.</li>
<li>It turns out <tt>Activity.onCreate</tt>—the standard entry point for Android apps—gets called if the screen rotates, which happens if you open the keyboard on the dev phone/G1. If you used <tt>onCreate</tt> to fire off a bunch of threads and load data, you need to drop those threads in <tt>onDestroy</tt>, pass a copy of the data you want to keep <tt>onRetainNonConfigurationInstance</tt>, and get it back with <tt>getLastNonConfigurationInstance</tt>. The Android Guys explain all this and more in a three part series, but <a href="http://androidguys.com/?p=2642">the second part</a> was most useful to me.</li>
<li>Compilers and code generation and XML config files are all fine, but the Android manifest file is king. If you're using the Google MapView library you need to declare this in the manifest or your app will unceremoniously crash.</li>
<li>Likewise if you're using the network or asking for location information, you'll need to add the relevant permissions to the manifest, or your app will fail (with no explanation). I'm not sure why this is the case, and why the SDK even lets you compile an app that requires internet access without prompting you to add the <tt>INTERNET</tt> privilege, but it does. As far as I can see these permissions aren't exposed to end users, but perhaps they'll help people navigate the Android Marketplace once there are devices out there with varying capabilities?</li>
</ul>
<p>All in all it took me just over a day to get to the point where I felt confident that the phone was doing what I was telling it, and that there wasn't too much magic and surprise crashes were rare. The next thing I want to investigate is the OpenGL ES implementation, which I'm hoping is as slick as the iPhone's. I've been keeping a list of android links I think are worth reading at <a href="http://del.icio.us/TomC/android">del.icio.us/TomC/android</a> - let me know if there are any other neat/essential APIs in the Android universe that you think I should take a look at.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/05/11/android-tinkering/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dataviz Salon SF #1</title>
		<link>http://www.tom-carden.co.uk/2009/02/18/dataviz-salon-sf-1/</link>
		<comments>http://www.tom-carden.co.uk/2009/02/18/dataviz-salon-sf-1/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 00:04:12 +0000</pubDate>
		<dc:creator>TomC</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<category><![CDATA[Data]]></category>

		<category><![CDATA[dataviz salon]]></category>

		<category><![CDATA[Events]]></category>

		<category><![CDATA[Graphics]]></category>

		<category><![CDATA[information-visualisation]]></category>

		<category><![CDATA[r]]></category>

		<category><![CDATA[san-francisco]]></category>

		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://www.tom-carden.co.uk/?p=887</guid>
		<description><![CDATA[Michael Driscoll of Dataspora invited a few people to a Dataviz Salon yesterday evening. Mike and I went along and huddled in a brick-built basement in SoMa to listen to the following:

Two talks about baseball stats. This first was from Michael which featured his latest R-driven experiments using pitching data and 2D colour ramps in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dataspora.com/blog/">Michael Driscoll</a> of <a href="http://dataspora.com/">Dataspora</a> invited a few people to a Dataviz Salon yesterday evening. <a href="http://mike.teczno.com">Mike</a> and I went along and huddled in a brick-built basement in SoMa to listen to the following:</p>
<ul>
<li>Two talks about baseball stats. This first was from Michael which featured <a href="http://www.dataspora.com/gameday/">his latest R-driven experiments using pitching data</a> and 2D colour ramps in the <a href="http://en.wikipedia.org/wiki/CIELUV">CIELUV</a> colour space. He has a nice little R webserver running which can do the clever business with kernel density plots (look closely at those pitch charts, those aren't stacked circles). The second was from <a href="http://www.shanebooth.com/">Shane Booth</a> who showed sketches for StrategyFan, a forthcoming project with Rio Goodman that lets people create and visualise their own metrics for players and teams. Think "day trading for baseball". (Shane was probably the designeringest person there, and has <a href="http://criminalizeboring.tumblr.com/">a lovely tumblelog</a> that <a href="http://ffffound.com">ffffound</a> hhhhounds will love).</li>
<li>A talk about <a href="http://nbagraphs.tumblr.com/">NBA graphs</a> from the homepage-less Brad Stenger, with reference to a timely <a href="http://www.nytimes.com/2009/02/15/magazine/15Battier-t.html?em">no-stats all-star article</a> and <a href="http://www.computational-journalism.com/symposium/index.php">computational journalism</a> in general (look out for more on this at <a href="http://sxsw.com/interactive/talks/panels?action=show&id=IAP0901138">SxSW</a> and OSCON).</li>
<li>A talk from <a href="http://leebyron.com/">Lee Byron</a>, who sadly (<em>criminally</em>) couldn't tell us what he's up to as a data scientist at Facebook (because that's not how they roll, obviously), but did tell some good stories about being the industrial design / motion graphics spanner-in-the-works at the NYTimes during the <a href="http://www.nytimes.com/interactive/2008/08/04/sports/olympics/20080804_MEDALCOUNT_MAP.html">Olympics</a> last year. (And hey, he got to push <a href="http://www.nytimes.com/interactive/2008/08/01/sports/20080802_TORCH_GRAPHIC.html">a personal project</a> through and include an easter egg in there, well done!)</li>
<li>A talk from <a href="http://www.datawrangling.com/">Pete Skomoroch</a>, whose visit to town catalysed the whole event in the first place. Pete showed us some work he's been doing at <a href="http://www.juiceanalytics.com/">Juice Analytics</a>, lifting clients out of the dark ages and automating previously laborious data mining processes. People cluster search referrals manually, apparently. In 2009.</li>
<li><a href="http://anyall.org/blog/">Brendan O'Connor</a> from <a href="http://www.doloreslabs.com/">Dolores Labs</a> showed us some of the stuff they're doing with (and without) Mechanical Turk, including those lovely colour name diagrams and the surprising news that the hot-or-not site genre is definitely not dead, and can also produce interesting stats by posing relatively simple questions to millions of people.</li>
</ul>
<p>Thanks to Michael for putting on a great event and getting everything together at such short notice. Hopefully there'll be another one soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tom-carden.co.uk/2009/02/18/dataviz-salon-sf-1/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
