<?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>dale lane</title>
	<atom:link href="http://dalelane.co.uk/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://dalelane.co.uk/blog</link>
	<description>fan of all things mobile, father of small girls, IBM code monkey, youth charity trustee...</description>
	<lastBuildDate>Sat, 21 Aug 2010 22:57:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What impact does SYA have on the community</title>
		<link>http://dalelane.co.uk/blog/?p=1433</link>
		<comments>http://dalelane.co.uk/blog/?p=1433#comments</comments>
		<pubDate>Sat, 21 Aug 2010 22:57:48 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[charity]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1433</guid>
		<description><![CDATA[Last week, some of the staff and trustees of Solent Youth Action had an Away Day for strategy and planning a-plenty. In one of the morning activities, we were ideastorming in small groups. My group had to identify what impact SYA has on the community. I kinda liked the list we came up with. As [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dalelane.co.uk/blog/post-images/sya-logo.png" align="right" hspace="10" vspace="10"/>Last week, some of the staff and trustees of <a href="http://solentyouthaction.org.uk/" target="_blank">Solent Youth Action</a> had <a href="http://twitter.com/dalelane/status/20867791521" target="_blank">an Away Day</a> for strategy and planning a-plenty. </p>
<p>In one of the morning activities, we were ideastorming in small groups. My group had to identify what impact SYA has on the community. </p>
<p>I kinda liked the list we came up with. As the work of ten minutes or so of ideastorming, it&#8217;s not definitive or official in any way. But I thought it warranted sharing.</p>
<ul>
<li>We enable events to take place &#8211; such as <a href="http://solentyouthaction.org.uk/?q=node/244" target="_blank">sporting events</a>, <a href="http://solentyouthaction.org.uk/?q=node/195" target="_blank">races</a>, <a href="http://solentyouthaction.org.uk/?q=node/243" target="_blank">playschemes</a> and <a href="http://solentyouthaction.org.uk/?q=node/223" target="_blank">community events</a>.
</li>
<li>We make a significant environmental impact, through a wide variety of <a href="http://solentyouthaction.org.uk/?q=taxonomy/term/19">conservation and environment work</a> and <a href="http://solentyouthaction.org.uk/?q=taxonomy/term/13" target="_blank">work with animals</a>.
</li>
<li>Our work helps to reduce anti-social behaviour, such as through work with charities such as <a href="http://www.catch-22.org.uk/" target="_blank">Catch22</a>.
</li>
<li>The experience that our projects help young people to gain increases the skills base in the community. And it enables young people to go on and get employment or further education.
</li>
<li>We&#8217;re helping to build a more cohesive community, such as through <a href="http://solentyouthaction.org.uk/?q=taxonomy/term/18">intergenerational projects</a>, bringing young and old together. This gives young people a chance to meet and better understand and respect older generations that many of them might not otherwise get.
</li>
<li>Our work is a showcase for what young people do. We can be a voice for young people, helping the rest of the community appreciate the positive role that young people can play, and breaking down some of the negative stereotypes of young people.
</li>
<li>We encourage an inclusive society where anyone can be involved. Across the breadth of our <a href="http://solentyouthaction.org.uk/?q=Js" target="_blank">projects</a> and activities, we provide the additional support that enables any young person to volunteer.
</li>
<li>Our projects, such as <a href="http://solentyouthaction.org.uk/?q=buddies" target="_blank">buddies</a> and <a href="http://solentyouthaction.org.uk/?q=SLAMS">SLAMS</a> provide respite for parents and families of young people with additional support needs.
</li>
<li>We support a wide variety of other organisations and agencies, helping to enable their work which broadens our impact.
</li>
<li>We help raise awareness of a wide variety of issues affecting young people such as <a href="http://solentyouthaction.org.uk/?q=node/134" target="_blank">bullying</a>.
</li>
<li>Our volunteers raise a large amount of <a href="http://solentyouthaction.org.uk/?q=taxonomy/term/32" target="_blank">money for a variety of good causes</a>, many of which are in our local community.
</li>
<li>Getting involved in the variety of the projects we run helps to develop young people&#8217;s understanding of the community they live in, including <a href="http://solentyouthaction.org.uk/?q=node/146" target="_blank">it&#8217;s history</a>
</li>
<li>We promote a commitment to lifelong volunteeering, fostering an ethos of volunteering and community involvement. This starts with a progression within SYA &#8211; such as from <a href="http://solentyouthaction.org.uk/?q=takeaction" target="_blank">Take Action</a> to <a href="http://solentyouthaction.org.uk/?q=vinvolved" target="_blank">vinvolved</a> as young people get older. And it continues after our volunteers become too old to volunteer with us &#8211; enabling progression to other projects and volunteer centres. We&#8217;re helping to build the next generation of volunteers in our community
</li>
</ul>
<p>I&#8217;m sure there are other ways that we make an impact, but this is a pretty good start.</p>
<p>While I mention SYA, we are currently looking for trustees. Why don&#8217;t you get involved?</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1433">"What impact does SYA have on the community"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1433">http://dalelane.co.uk/blog/?p=1433</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1433</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adjusting mobile web font-sizes to fit screen resolutions</title>
		<link>http://dalelane.co.uk/blog/?p=1425</link>
		<comments>http://dalelane.co.uk/blog/?p=1425#comments</comments>
		<pubDate>Mon, 09 Aug 2010 20:23:32 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1425</guid>
		<description><![CDATA[This might be obvious to someone less ignorant in the mystic ways of CSS, but I thought it was worth sharing anyway. I was struggling to work out a suitable font-size for a mobile web page. Whether I tried using size names like &#8220;x-large&#8221;, or values with em, pt, px or %, the same basic [...]]]></description>
			<content:encoded><![CDATA[<p>This might be obvious to someone less ignorant in the mystic ways of CSS, but I thought it was worth sharing anyway. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I was <a href="http://twitter.com/dalelane/statuses/20731779529" target="_blank">struggling to</a> <a href="http://twitter.com/dalelane/status/20731597746" target="_blank">work</a> <a href="http://twitter.com/dalelane/status/20731930653" target="_blank">out</a> a suitable font-size for a mobile web page. Whether I tried using size names like &#8220;x-large&#8221;, or values with em, pt, px or %, the same basic problem remained: </p>
<p><a href="http://www.flickr.com/photos/dalelane/4876929280/" title="CSS - not working by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4101/4876929280_f152458f0f.jpg" width="450" height="443" alt="CSS - not working" /></a></p>
<p>Font-sizes were either too small on smartphones with high-resolution screens, or too large on other smartphones. </p>
<p>If I increased the font-size to look better on a high-res screen, it was too big for other phones. If I decreased the font-size for those other phones, it looked tiny on a high-res screen. </p>
<p>I know that I could go the whole hog and use something like <a href="http://deviceatlas.com/" target="_blank">DeviceAtlas</a> to generate a CSS file customised for the dimensions of the screen, but that is overkill for this quick, simple page I need to create. </p>
<p>I finally found the answer. Put this in the &lt;head&gt; :</p>
<pre style="border: thin solid silver; background-color: #eeeeee; padding: 0.7em; font-size: 1.1em; overflow: auto;">&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /&gt;</pre>
<p>With this, the page now looks like this:</p>
<p><a href="http://www.flickr.com/photos/dalelane/4876318257/" title="CSS - working by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4080/4876318257_d899bc49e4.jpg" width="450" height="441" alt="CSS - working" /></a></p>
<p>It scales properly. </p>
<p>Hurrah. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Update (10-Aug):</strong> And it seems to <a href="http://twitter.com/neilco/status/20790681163" target="_blank">work this way on the iPhone browser</a> as well. (Thanks to <a href="http://neilcowburn.com/" target="_blank">Neil</a> for checking!)</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1425">"Adjusting mobile web font-sizes to fit screen resolutions"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1425">http://dalelane.co.uk/blog/?p=1425</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1425</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seven years at Hursley</title>
		<link>http://dalelane.co.uk/blog/?p=1418</link>
		<comments>http://dalelane.co.uk/blog/?p=1418#comments</comments>
		<pubDate>Mon, 02 Aug 2010 08:00:00 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[ibm]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1418</guid>
		<description><![CDATA[Seven years ago this week, I started at IBM. Two years ago this week, I started my current job. Thought those were worth noting. I joined IBM thinking it’d be for a couple of years to get training and experience before going to do something more fun at a start-up. But seven years (four changes [...]]]></description>
			<content:encoded><![CDATA[<p>Seven years ago this week, I started at IBM. Two years ago this week, I started my current job. Thought those were worth noting. </p>
<p><a href="http://www.flickr.com/photos/dalelane/4850037103/" alt="cake in the shape of my department logo" title="cake in the shape of my department logo"><img src="http://farm5.static.flickr.com/4114/4850037103_512591b65b.jpg" width="450" height="338" alt="ETS cake" /></a></p>
<p>I joined IBM thinking it’d be for a couple of years to get training and experience before going to do something more fun at a start-up. </p>
<p>But seven years (four changes of jobs, three promotions, six changes of office and nine changes of manager) later, I’m still here and still loving <a href="http://dalelane.co.uk/blog/?p=1232">what I do</a>. </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1418">"Seven years at Hursley"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1418">http://dalelane.co.uk/blog/?p=1418</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What do I share online?</title>
		<link>http://dalelane.co.uk/blog/?p=1404</link>
		<comments>http://dalelane.co.uk/blog/?p=1404#comments</comments>
		<pubDate>Thu, 15 Jul 2010 22:41:51 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1404</guid>
		<description><![CDATA[I gave a presentation earlier this week which led to a discussion on information that people share online. The general experience from the group was along the lines of &#8220;we&#8217;ve heard of people who share a lot of information on facebook&#8221;, but that was about it. I talked about some of the other ways that [...]]]></description>
			<content:encoded><![CDATA[<p>I gave a presentation earlier this week which led to a discussion on information that people share online. The general experience from the group was along the lines of &#8220;we&#8217;ve heard of people who share a lot of information on facebook&#8221;, but that was about it.</p>
<p>I talked about some of the other ways that people share information online, and they were very surprised. </p>
<p>I&#8217;m guessing that anyone who reads my blog will likely find this less surprising, but I thought that the list we produced during the discussion was worth sharing nevertheless: </p>
<ul>
<li><a href="http://twitter.com/dalelane" target="_blank">what am I doing</a>
</li>
<li><a href="http://www.google.com/latitude/apps/badge/api?user=-4899040162740511709&#038;type=iframe&#038;maptype=roadmap" target="_blank">where am I now</a>
</li>
<li><a href="http://dalelane.co.uk/blog">what do I think about stuff</a>
</li>
<li><a href="http://www.goodreads.com/review/list/1370155?view=covers" target="_blank">what book am I reading</a>
</li>
<li><a href="http://dalelane.co.uk/tvscrobbling/">what am I watching on TV</a>
</li>
<li><a href="http://www.last.fm/user/dalelane" target="_blank">what music am I listening to</a>
</li>
<li><a href="http://www.lovefilm.com/profile/dalelane" target="_blank">what DVD am I watching</a>
</li>
<li><a href="http://wakoopa.com/dalelane" target="_blank">what app am I using on my computer
<li><a href="http://live.xbox.com/member/dalelane" target="_blank">what video game</a> <a href="http://raptr.com/dalelane" target="_blank">am I playing</a>
</li>
<li><a href="http://www.dailymile.com/people/dalelane" target="_blank">how is my running going</a>
</li>
<li><a href="http://traineo.com/users/dalelane" target="_blank">how much do I weigh</a>
</li>
<li><a href="http://www.amazon.co.uk/wishlist/3QTEW84W580AA" target="_blank">what I want to buy</a>
</li>
<li><a href="http://www.google.com/powermeter/site/recent" target="_blank">how much electricity am I using</a>
</li>
<li><a href="http://www.google.com/calendar/embed?src=dale.lane%40gmail.com" target="_blank">what is in my diary</a> and <a href="http://tungle.me/dalelane" target="_blank">when am I available for meetings</a>
</li>
<li><a href="http://upcoming.org/user/113407/" target="_blank">what events am I planning to go to</a>
</li>
<li><a href="http://www.dopplr.com/traveller/dalelane" target="_blank">what place am I planning to go to</a>
</li>
<li><a href="http://foursquare.com/user/dalelane" target="_blank">what places have I been to</a>
</li>
<li><a href="http://del.icio.us/dalelane" target="_blank">what websites am I bookmarking</a>
</li>
<li><a href="http://www.google.com/reader/shared/dale.lane" target="_blank">what articles am I reading online</a>
</li>
<li><a href="http://www.slideshare.net/dalelane" target="_blank">what presentations am I giving</a>
</li>
<li><a href="http://www.flickr.com/photos/dalelane/" target="_blank">what photos am I taking</a>
</li>
<li><a href="http://www.youtube.com/profile?user=dalelane" target="_blank">what videos am I filming</a>
</li>
<li><a href="http://picasaweb.google.co.uk/dale.lane" target="_blank">what photos am I taking of my kids</a>
</li>
<p></a></li>
</ul>
<p>Ironically, I don&#8217;t use <a href="http://www.facebook.com/dale.lane" target="_blank">facebook</a> all that much&#8230; <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Perhaps the most interesting bit of the discussions were around whether this sort of (<em>to be honest, perhaps slightly aberrant!</em>) behaviour will become the norm, and whether this will consolidate down into a single place or way to store this stuff or whether we&#8217;ll continue down the lines of specific services for each type of information to share. </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1404">"What do I share online?"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1404">http://dalelane.co.uk/blog/?p=1404</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1404</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android Market &#8211; a follow-up</title>
		<link>http://dalelane.co.uk/blog/?p=1394</link>
		<comments>http://dalelane.co.uk/blog/?p=1394#comments</comments>
		<pubDate>Thu, 15 Jul 2010 09:22:50 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1394</guid>
		<description><![CDATA[A month ago, I submitted an app to the Android Market app store for the first time, and shared the experience &#8211; from compiling the app to it being live in the Market on people&#8217;s phones. I thought I&#8217;d follow this up with a quick post on what happens after your app goes live in [...]]]></description>
			<content:encoded><![CDATA[<p>A month ago, I submitted an app to the <a href="http://www.android.com/market/" target="_blank">Android Market</a> app store for the first time, and <a href="http://dalelane.co.uk/blog/?p=1351">shared the experience &#8211; from compiling the app to it being live in the Market on people&#8217;s phones</a>.</p>
<p>I thought I&#8217;d follow this up with a quick post on what happens after your app goes live in the Market. </p>
<p><em>Again, as before, this is aimed at the idle curiosity of people who use mobile app stores, rather than trying to replace the <a href="http://developer.android.com/guide/publishing/publishing.html" target="_blank">detailed documentation provided for mobile developers</a>.</em></p>
<p><strong>Crash reports</strong></p>
<p><a href="http://www.flickr.com/photos/dalelane/4795370701/" title="100715-android-2 by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4117/4795370701_fe59d9ce53.jpg" width="450" height="191" alt="100715-android-2" /></a></p>
<p>My favourite part are the Error Reports. As a developer, you can see when your app crashes on people&#8217;s phones. You can see how often it happens, how many people it has affected, and how many times it has happened. </p>
<p>I&#8217;ve not had any errors (I&#8217;m almost disappointed! <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) so the <a href="http://3.bp.blogspot.com/_GTM_W5mVPTU/S_dvrsX7C7I/AAAAAAAAAF0/g1F_3PQXVWY/s1600/gfb3.png" target="_blank">screenshots on the Android developer&#8217;s blog</a> are perhaps a better example. You can see that not only do you get told that an error has happened, but (as these are Java apps) you get the stack trace at the point of the error, telling you exactly where the app crashed. </p>
<p>This should make it a million times easier to debug buggy apps &#8211; it&#8217;s the sort of functionality that I&#8217;ve tried to manually build into apps before, but with Android you get it out-of-the-box. This is awesome.</p>
<p><strong>User feedback</strong></p>
<p><a href="http://www.flickr.com/photos/dalelane/4796003526/" title="100715-android-4 by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4116/4796003526_3c8bcb17cc.jpg" width="450" height="257" alt="100715-android-4" /></a></p>
<p>You can see the number of users who have rated the app (8 &#8211; in the screenshot above), and the average rating. </p>
<p><a href="http://www.flickr.com/photos/dalelane/4796003500/" title="100715-android-3 by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4073/4796003500_7583d4ab0e.jpg" width="450" height="380" alt="100715-android-3" /></a></p>
<p>You can also see comments that users have left about the app.</p>
<p><strong>Install stats</strong></p>
<p><a href="http://www.flickr.com/photos/dalelane/4796003466/" title="100715-android-1 by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4134/4796003466_fd0f279089.jpg" width="450" height="276" alt="100715-android-1" /></a></p>
<p>You can see how many people have installed the app. </p>
<p>The stats are divided into &#8220;total&#8221; installs (how many phones has the app been installed on) and &#8220;active&#8221; installs (how many phones is the app installed on now). </p>
<p>The difference is obviously an indication of how many people didn&#8217;t like it and uninstalled it! </p>
<p>I&#8217;ve added some notes on the graph above. &#8220;gadgeteer&#8221; refers to when the app got a mention in at <a href="http://gadgeteer.org.uk/2010/06/17/looking-for-an-android-uk-traffic-app/" target="_blank">gadgeteer.org.uk</a>. </p>
<p>The numbers are when I released new versions of the app &#8211; it&#8217;s interesting to see that I got a spike in downloads when I released v1.4 (even though it was just a minor bug fix). I guess this got me onto a list of new or recently updated apps which increased the apps visibility for a day. I wonder if this is repeatable &#8211; are frequent updates a way to boost your install stats?</p>
<p>The install numbers are very low. Fewer than 1000 downloads in a month. I made no other efforts to promote the app, as I was curious to see how many users would just come across it in the Market. I find it quite hard to find stuff in the Market &#8211; it&#8217;s not easy to browse, and the search facility is primitive. I think the low number of downloads I got is an indicator of how easy it is to get lost in the swamp of other apps in the Market. (That said, I don&#8217;t have much evidence of this other than my gut feeling and the comparison with the far higher number of downloads I used to get for apps I used to write for Windows Mobile). </p>
<p>Overall, as <a href="http://dalelane.co.uk/blog/?p=1351">I said before</a>, Android Market is very impressive and provides a great way of distributing apps. The discovery bit just needs to get a little better, and it&#8217;ll be almost perfect.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1394">"Android Market &#8211; a follow-up"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1394">http://dalelane.co.uk/blog/?p=1394</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1394</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making the RTM cow more sympathetic</title>
		<link>http://dalelane.co.uk/blog/?p=1382</link>
		<comments>http://dalelane.co.uk/blog/?p=1382#comments</comments>
		<pubDate>Tue, 15 Jun 2010 21:06:47 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rememberthemilk]]></category>
		<category><![CDATA[rtm]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1382</guid>
		<description><![CDATA[I am a big fan of Remember The Milk (RTM), the online to-do list manager. It&#8217;s one of the few sites (like flickr) that I&#8217;m happy to pay for. For some reason, the logo for RTM is a cow&#8217;s face. Which means that I get a cow staring at me when I&#8217;m deciding what I [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://dalelane.co.uk/blog/post-images/100615-logo-manic.png" align="left" hspace="10" vspace="10"/>I am a big fan of <a href="http://www.rememberthemilk.com/" target="_blank">Remember The Milk</a> (RTM), the online to-do list manager. It&#8217;s one of the few sites (like flickr) that I&#8217;m happy to pay for. </p>
<p>For some reason, the logo for RTM is a cow&#8217;s face. Which means that I get a cow staring at me when I&#8217;m deciding what I need to do next. </p>
<p>I had a <a href="http://twitter.com/dalelane/status/16250476984" target="_blank">random thought this evening</a> &#8211; that the cow should really look more sympathetic when my task list is so full. Because he&#8217;s really quite heartless, even when I&#8217;m manically busy. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>And once I had the idea, I kinda had to give it a quick try. (<em>And I wonder why I&#8217;m busy&#8230;</em>)</p>
<p>So I&#8217;ve knocked up a quick <a href="http://92.48.117.50/~dalelane/files/rememberthemilkcow.user.js">Greasemonkey script</a> &#8211; which should work with Firefox with the <a href="https://addons.mozilla.org/en-US/firefox/addon/748/" target="_blank">Greasemonkey add-on</a>, or with Google Chrome.</p>
<p><center><a href="http://92.48.117.50/~dalelane/files/rememberthemilkcow.user.js">rememberthemilkcow.user.js</a></center></p>
<p><object width="450" height="413"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624283347650%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624283347650%2F&#038;set_id=72157624283347650&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624283347650%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624283347650%2F&#038;set_id=72157624283347650&#038;jump_to=" width="450" height="413"></embed></object></p>
<p><img src="http://dalelane.co.uk/blog/post-images/100615-logo-happy.png" align="left" hspace="10" vspace="10"/>If you have no tasks due today in a list, the RTM cow smiles.<br />
<br clear="all"/><br />
<img src="http://dalelane.co.uk/blog/post-images/100615-logo-original.png" align="right" hspace="10" vspace="10"/>If you only have a couple of tasks due today, the RTM cow is his usual inscrutable self.<br />
<br clear="all"/><br />
<img src="http://dalelane.co.uk/blog/post-images/100615-logo-sad.png" align="left" hspace="10" vspace="10"/>If you have more than a few tasks due today, the RTM cow is sad.<br />
<br clear="all"/><br />
<img src="http://dalelane.co.uk/blog/post-images/100615-logo-scared.png" align="right" hspace="10" vspace="10"/>If you have more than five tasks due today, the RTM cow gets scared!<br />
<br clear="all"/><br />
<img src="http://dalelane.co.uk/blog/post-images/100615-logo-manic.png" align="left" hspace="10" vspace="10"/>And if you have eight or more tasks due today, the RTM cow goes a little manic.<br />
<br clear="all"/><br />
Okay, so this is all a little silly. The number of tasks doesn&#8217;t really mean a huge amount, and my choice of numbers was a little arbitrary. </p>
<p>But it was distracting for a bit. And I do like the idea of a <a href="http://twitter.com/ianhomer/status/16250732164" target="_blank">todo list UI that panics with you when you get busy</a>.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1382">"Making the RTM cow more sympathetic"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1382">http://dalelane.co.uk/blog/?p=1382</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1382</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>UK Traffic Checker now in the Android Market</title>
		<link>http://dalelane.co.uk/blog/?p=1368</link>
		<comments>http://dalelane.co.uk/blog/?p=1368#comments</comments>
		<pubDate>Mon, 14 Jun 2010 18:50:36 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[road]]></category>
		<category><![CDATA[traffic]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1368</guid>
		<description><![CDATA[My last post was a bit of a clue, but I still thought it was worth a mini-announcement that &#8220;UK Traffic Checker&#8221; is now available in the Android Market. I wrote about the basic idea for the app when I first hacked it together, but to summarise it&#8217;s a mobile app that checks for roadworks [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/dalelane/4700811246/" title="UK Traffic Checker for Android by dalelane, on Flickr"><img align=left vspace=10 hspace=10 src="http://farm5.static.flickr.com/4015/4700811246_455a2d4021_m.jpg" width="160" height="240" alt="UK Traffic Checker for Android" /></a>My <a href="http://dalelane.co.uk/blog/?p=1351">last post</a> was a bit of a clue, but I still thought it was worth a mini-announcement that &#8220;UK Traffic Checker&#8221; is now available in the <a href="http://www.android.com/market/" target="_blank">Android Market</a>.</p>
<p>I wrote about the <a href="http://dalelane.co.uk/blog/?p=1297">basic idea for the app</a> when I first hacked it together, but to summarise it&#8217;s a mobile app that checks for roadworks or other traffic incidents on UK roads for a specific journey. Tell it two places, it will work out the route between them, and check that route for known problems.  </p>
<p>And if you give it your schedule, it can automatically check traffic for you &#8211; with support for both one-off and repeating journeys. So if you have a regular commute, you can give it the details and it will check your route to work for you in the morning while you get ready, without you needing to remember to ask.  </p>
<p><strong><center><a href="market://details?id=dalelane.blade.traffic">&#8216;UK Traffic Checker&#8217; in the Market</a></center></strong></p>
<p><a href="http://www.flickr.com/photos/dalelane/4584648479/" title="UK traffic for Android - a traffic report map by dalelane, on Flickr"><img hspace=10 vspace=10 src="http://farm5.static.flickr.com/4031/4584648479_3c36d17ebf_m.jpg" width="161" height="240" align="right" alt="UK traffic for Android - a traffic report map" /></a>Between starting a project for a new client at work last month, and getting distracted (like the goldfish that I am!) with other <a href="http://dalelane.co.uk/blog/?p=1341">bits</a> and <a href="http://dalelane.co.uk/blog/?p=1325">pieces</a>, I kinda forgot about this code after starting it last month.</p>
<p>But a bunch of people were kind enough to give the app a test, and gave me a lot of useful feedback. So last night, after a well-timed prod from <a href="http://twitter.com/crouchingbadger" target="_blank">Ben</a>, I had a go at writing a &#8220;release version&#8221; that reflected the feedback I got.  </p>
<p>It&#8217;s worth mentioning some of it here, because (although I <a href="http://dalelane.co.uk/blog/?p=1297">said at the time</a> that my last effort was focused on getting the engine working, rather than the UI) there were some good points raised that I was very grateful for:  </p>
<p><strong>Less typing</strong>  </p>
<p>The original app relied on users typing in addresses. That still plays a part, but you can now check routes without typing a single letter. For example, there is a shortcut key for &#8220;Home&#8221; &#8211; most of my routes go to or from my home, so instead of typing my address every time, I can just tap the &#8220;house&#8221; icon. There is a button to reverse the &#8216;from&#8217; and &#8216;to&#8217; locations, so you can plan a return journey without having to copy and paste. And there are a bunch of shortcuts to copy scheduled journeys or previously checked journeys, so you can check again without needing to enter all the details in again.  </p>
<p><a href="http://www.flickr.com/photos/dalelane/4585274598/" title="UK traffic for Android - a traffic report map by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4010/4585274598_77cbbe41d0_m.jpg" hspace=10 vspace=10 align=left width="162" height="240" alt="UK traffic for Android - a traffic report map" /></a><strong>Uses location</strong>  </p>
<p>For journeys from where you are, to somewhere else, you used to have to type in your address. Now you can just tap the location button, and the app will use your current location.  </p>
<p><strong>Fewer steps</strong>  </p>
<p>The original app had a simple front-screen, with buttons to take you to each of the different functions. That makes sense from a desktop perspective, but for a mobile app, it&#8217;s another barrier between the user and what they want to achieve. So I moved the most common function (checking traffic now &#8211; the action that a user is most likely to be in a hurry to perform) to the front screen. As soon as you launch the app, you can start checking traffic, without having to navigate to a different screen.  </p>
<p><strong>No more auto-complete text box</strong>  </p>
<p>The auto-complete text box seemed to piss a few people off. Including me. It was way too big, took up far too much of the screen, kept popping up when you didn&#8217;t actually want it, and pretty much ignored what you were typing in. So I did away with it, and now a tap on the history button pops up a scrolling list of previous locations to choose from.  </p>
<p><strong>Scrolling text boxes bad, multiline better</strong>  </p>
<p>A small point, but still an important one, I feel. The original app had single-line text boxes &#8211; if you typed an address that was too long for them, it would scroll horizontally. This meant you often couldn&#8217;t see the whole address at once. Now, the text box wraps, and reflows the UI &#8211; moving everything else down as necessary. I think it works better this way.  </p>
<p>After all of these, and a few more more subtle changes that were suggested, the app was finally ready to share.  </p>
<p>If you have an Android phone and are based in the UK, please do <a href="market://details?id=dalelane.blade.traffic">give it a try</a> (<em>Android link only &#8211; or just search the Market for &#8216;dale lane&#8217;</em>).  </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1368">"UK Traffic Checker now in the Android Market"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1368">http://dalelane.co.uk/blog/?p=1368</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1368</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Releasing apps in the Android Market app store</title>
		<link>http://dalelane.co.uk/blog/?p=1351</link>
		<comments>http://dalelane.co.uk/blog/?p=1351#comments</comments>
		<pubDate>Mon, 14 Jun 2010 15:44:53 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1351</guid>
		<description><![CDATA[I&#8217;ve just added my first app to the Android Market app store, so I thought I&#8217;d write a quick post to share what is involved. Note: This post isn&#8217;t aimed at mobile devs. The process is documented clearly enough that there really isn&#8217;t any need. Rather, this was more written at people who are probably [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just added my first app to the Android Market app store, so I thought I&#8217;d write a quick post to share what is involved. </p>
<p>Note: <em>This post isn&#8217;t aimed at mobile devs. The process is <a href="http://developer.android.com/guide/publishing/publishing.html" target="_blank">documented clearly enough</a> that there really isn&#8217;t any need. Rather, this was more written at people who are probably never going to write and submit an app to a mobile app store, but who might have an idle curiosity about what is involved getting an app from a developer&#8217;s workstation to the app store.</em></p>
<p><strong>Step 1 &#8211; Write the code</strong></p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-1.png" target="_blank"><img border=0 hspace=10 vspace=10 align="left" src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-1.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a>This is really the fun bit <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p>The Android plugin for Eclipse gives you nice integration for publishing. </p>
<p>You can right-click on the project, choose &#8220;Export Signed Application Package&#8221; and the wizard spits out a signed file ready for publishing.<br />
<br clear="all"/><br />
<strong>Step 2 &#8211; Register with Android</strong> </p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-2.png" target="_blank"><img align="right" border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-2.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a>This is the painful bit <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  </p>
<p>You visit the Market site at <a target="_blank" href="http://market.android.com/publish/signup">http://market.android.com/publish/signup</a> and pay your $25 to register with Android as a developer. For me, it worked out to a bit over £17.<br />
<br clear="all"/><br />
<a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-3.png" target="_blank"><img align="left" border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-3.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a> <a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-4.png" target="_blank"><img border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-4.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a></p>
<p>You have to do this even if, like me, you only want to release free apps. </p>
<p>The developer tools are free, and you can distribute apps outside the Market at no charge. And there are no per-app fees. But you do have to stump up this one-off fee. </p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-5.png" target="_blank"><img align="left" border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-5.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a> <a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-6.png" target="_blank"><img border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-6.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a></p>
<p>Google say they do this &#8220;to encourage higher quality products on the market (e.g. less spammy products)&#8221;. It&#8217;s probably a fair point. Still a bit of a pain though.</p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-7.png" target="_blank"><img border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-7.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a></p>
<p>It is at least instant. I already had credit card details in Google Checkout, so a couple of clicks was all it took before I was a fully fledged Android developer ready to start publishing apps. </p>
<p><strong>Step 3 &#8211; Upload your app</strong></p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-8.png" target="_blank"><img border=0 hspace=10 vspace=10 align="left" src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-8.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a>The form looks a little long, but just needed the app, a couple of screenshots, a title, description, category, countries to submit it to, and contact details. It just took a minute to fill in. </p>
<p>Hit submit, and that&#8217;s it &#8211; you&#8217;re live.<br />
<br clear="all"/><br />
As soon as I hit &#8216;Publish&#8217;, I tried searching from my mobile, and there it was &#8211; both in the &#8220;Just in&#8221; list, and if I did a search for &#8216;traffic&#8217;.<br />
<a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-10.png" target="_blank"><img border=0 hspace=10 vspace=10 align="left" src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-10.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a> <a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-12.png" target="_blank"><img border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-12.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a> </p>
<p><strong>Step 4 &#8211; Watch the downloads</strong></p>
<p>You can see how many times it&#8217;s been downloaded, how many phones it&#8217;s currently installed on, and even track the number of crashes and freezes. </p>
<p><a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-9.png" target="_blank"><img border=0 hspace=10 vspace=10 align="left" src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-9.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a> <a href="http://s267.photobucket.com/albums/ii311/dale_lane/?action=view&#038;current=100614-market-13.png" target="_blank"><img border=0 hspace=10 vspace=10 src="http://i267.photobucket.com/albums/ii311/dale_lane/th_100614-market-13.png" border="0" alt="click to see full-size version - thanks to Photobucket" /></a><br />
<br clear="all"/><br />
And that&#8217;s it. My first Android app to make it out into the big bad world. Wish it well <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p><strong>Update (15/07/2010):</strong> A month later, I posted a follow-up describing <a href="http://dalelane.co.uk/blog/?p=1394">how the Market works after your app goes live</a>.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1351">"Releasing apps in the Android Market app store"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1351">http://dalelane.co.uk/blog/?p=1351</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1351</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to generate a wave graph</title>
		<link>http://dalelane.co.uk/blog/?p=1341</link>
		<comments>http://dalelane.co.uk/blog/?p=1341#comments</comments>
		<pubDate>Thu, 10 Jun 2010 22:33:07 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[graphs]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scrobble]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1341</guid>
		<description><![CDATA[I revisited the code behind my TV scrobbling this evening. When I first wrote it, I focused on graphs like bar graphs and pie charts. Tonight, I tried out wave graphs. In this post, I want to share some of the results of my first attempt, and how I wrote the script to generate them. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/dalelane/4689129196/" title="TV watching - split by channel by dalelane, on Flickr"><img src="http://farm5.static.flickr.com/4035/4689129196_a341f53380.jpg" width="450" height="170" alt="TV watching - split by channel" /></a></p>
<p>I revisited the code behind my <a href="http://dalelane.co.uk/tvscrobbling">TV scrobbling</a> this evening. When <a href="http://dalelane.co.uk/blog/?p=1176">I first wrote it</a>, I focused on graphs like bar graphs and pie charts. </p>
<p>Tonight, I tried out wave graphs. In this post, I want to share some of the results of my first attempt, and how I wrote the script to generate them.</p>
<p>I have created wave graphs showing my TV watching over the last five months. I&#8217;ve tried splitting it out by in a couple of ways:</p>
<ul>
<li>by channel (<a href="http://dl.dropbox.com/u/2738296/20100610/channel-wavegraph.pdf">pdf</a>, <a href="http://www.flickr.com/photos/dalelane/4689140214/">insanely-big-png</a>, <a href="http://dl.dropbox.com/u/2738296/20100610/channel-wavegraph.svg">svg</a>)
</li>
<li>by programme title (<a href="http://dl.dropbox.com/u/2738296/20100610/channel-wavegraph.pdf">pdf</a>, <a href="http://dl.dropbox.com/u/2738296/20100610/programme-wavegraph.svg">svg</a>)
</li>
</ul>
<p>Programme titles tend to be too long to make for a very useful graph, and there were way too many of them. But I&#8217;ve tried limiting them to the top 10 watched programmes to make for a prettier graph. The channels graph seems to work okay, though.</p>
<p><a href="http://www.flickr.com/photos/dalelane/4688496005/" title="TV watching - split by channel by dalelane, on Flickr"><img src="http://farm2.static.flickr.com/1291/4688496005_980981ecc8.jpg" width="450" height="318" alt="TV watching - split by channel" /></a></p>
<p>To generate the graphs, I wrote a Python script using the awesome <a href="http://www.aeracode.org/projects/graphication/" target="_blank">graphication graphing library</a> by <a href="http://www.aeracode.org/" target="_blank">Andrew Godwin</a>. </p>
<p>There isn&#8217;t a lot of documentation for it, but it&#8217;s pretty straightforward:</p>
<p>1. &#8211; Install the pre-reqs &#8211; I already had Python, so just needed to install <a href="http://cairographics.org/" target="_blank">pycairo</a></p>
<p>2. &#8211; Check out the library source from <a href="http://svn.aeracode.org/svn/graphication/" target="_blank">the SVN server</a>, and run the setup.py <a href="http://docs.python.org/install/" target="_blank">as usual</a> to install</p>
<p>3. &#8211; Write a script <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>There is already a useful <a href="http://www.aeracode.org/projects/graphication/" target="_blank">sample script</a> that was enough to get me started, but I&#8217;ll expand on it slightly here.</p>
<p>I have my TV watching data in an SQLite database, so it was pretty easy to write something to grab the data I need. Stripping  out the stuff that&#8217;s specific to my database structure, the basics of a graphication script is:</p>
<pre style="border: thin solid silver; background-color: #eeeeee; padding: 0.7em; font-size: 1.1em; overflow: auto;">from datetime import datetime
from graphication import *
from graphication.wavegraph import WaveGraph

# an arbitrary set of dates
#  see the note below about the need for consistent set of dates
d1 = datetime(2010, 6, 1)
d2 = datetime(2010, 6, 2)
d3 = datetime(2010, 6, 3)
d4 = datetime(2010, 6, 4)
d5 = datetime(2010, 6, 5)
d6 = datetime(2010, 6, 6)
d7 = datetime(2010, 6, 7)
d8 = datetime(2010, 6, 8 )
d9 = datetime(2010, 6, 9)

# place to store the data
series_set = SeriesSet()

# some canned data sets
series_set.add_series(Series("BBC1", {d1:0.5, d2:1.0, d3:0.2, d4:0.8, d5:1.1, d6:0.9, d7:0.7, d8:0.6, d9:0.4}))
series_set.add_series(Series("BBC2", {d1:0.2, d2:0.9, d3:0.3, d4:0.7, d5:1.5, d6:1.2, d7:0.9, d8:1.0, d9:0.7}))

# notice that if you use a date in one
#  data set, you seem to have to use
#  it in all of them - so I had to
#  make sure I inserted a value of 0
#  for days where I didn't watch a
#  particular channel
series_set.add_series(Series("BBC3", {d1:0, d2:0, d3:0.1, d4:0.2, d5:0.3, d6:0.2, d7:0.1, d8:0, d9:0}))

series_set.add_series(Series("BBC News", {d1:0.8, d2:0.8, d3:0.8, d4:0.8, d5:1.1, d6:1.1, d7:1.1, d8:1.0, d9:0.4}))

# define the appearance
import my_css as stylesheet
clr = Colourer(stylesheet)
clr.colour(series_set)

# specify the graph scale - you can choose from
#  DateScale - the basic, you need to specify the min and max date
#  AutoDateScale  - works out the min and max dates for you
#  AutoWeekDateScale - divides up months and weeks with major/minor lines
#  WeekdayDateScale - only plots data on weekdays, not weekends
datescale = AutoWeekDateScale(series_set)

# create the wave graph
wg = WaveGraph(series_set, datescale, stylesheet, label_curves=True)

# write it to files, in variety of file types
output = FileOutput(stylesheet)
output.add_item(wg, x=0, y=0, width=445, height=150)
output.write("pdf", "yourgraph.pdf")
output.write("png", "yourgraph.png")
output.write("svg", "yourgraph.svg")</pre>
<p>If you run that, you get something like this:</p>
<p><img src="http://dalelane.co.uk/blog/post-images/100610-wavegraph.png" alt="wavegraph"/></p>
<p>And that&#8217;s all there is to it. </p>
<p>Although I could automate this, I&#8217;ve chosen not to for the moment, so the graphs wont be appearing on <a href="http://dalelane.co.uk/tvscrobbling/">dalelane.co.uk/tvscrobbling</a> yet. </p>
<p>This is because I haven&#8217;t managed to find a decent balance between making the images so huge that hosting the files would bring my site down, or making the images so small that the labels are unreadable. (<em>For now, I&#8217;ve run the script once and used flickr and dropbox to host the files.</em>)  I&#8217;m not sure what the best answer is for this, but I&#8217;ll have a think about it. </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1341">"How to generate a wave graph"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1341">http://dalelane.co.uk/blog/?p=1341</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1341</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Google Latitude History as a heat map</title>
		<link>http://dalelane.co.uk/blog/?p=1325</link>
		<comments>http://dalelane.co.uk/blog/?p=1325#comments</comments>
		<pubDate>Fri, 28 May 2010 21:31:35 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[latitude]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1325</guid>
		<description><![CDATA[Google Latitude is starting to get very interesting. The new dashboard lets you see some graphs of how much time you spend at work, home, and out and about, and a list of your most visited places. You can also see a Google Map with your 500 latest updates added as pushpins. I had a [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.google.com/latitude/">Google Latitude</a> is starting to get very interesting. The <a href="http://www.google.com/latitude/apps/history/dashboard" target="_blank">new dashboard</a> lets you see some graphs of how much time you spend at work, home, and out and about, and a list of your most visited places. </p>
<p>You can also see a Google Map with your 500 latest updates added as pushpins. </p>
<p>I <a href="http://twitter.com/dalelane/status/14930337193" target="_blank">had a random idea</a> while looking at it this evening &#8211; why don&#8217;t they let you see <strong>all</strong> your updates on a map, in a heatmap that shows where you&#8217;ve been?</p>
<p>Naturally, once I had the idea, I had to give it a quick try. </p>
<p><a target="_blank" href="http://maps.google.co.uk/maps?f=q&#038;source=embed&#038;hl=en&#038;geocode=&#038;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgooglelatitude-heatmap-cumul.kml&#038;sll=53.067627,-4.042969&#038;sspn=21.392373,44.780273&#038;ie=UTF8&#038;ll=51.549751,-1.450195&#038;spn=4.782988,9.360352&#038;z=7">This is the result</a>:</p>
<p><iframe width="445" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgooglelatitude-heatmap-cumul.kml&amp;sll=53.067627,-4.042969&amp;sspn=21.392373,44.780273&amp;ie=UTF8&amp;ll=51.549751,-1.450195&amp;spn=4.782988,9.360352&amp;z=7&amp;output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgooglelatitude-heatmap-cumul.kml&amp;sll=53.067627,-4.042969&amp;sspn=21.392373,44.780273&amp;ie=UTF8&amp;ll=51.549751,-1.450195&amp;spn=4.782988,9.360352&amp;z=7" style="color:#0000FF;text-align:left">View Larger Map</a></small> </p>
<p>From the Google Latitude dashboard, you can export your history of location updates as a KML file. I downloaded my history, and wrote a short, hacky Python script to parse it, and generate a heat map to overlay on a Google map. </p>
<p>In this post, I&#8217;ll show the sorts of results it can generate, and share my script, in case any other Latitude users fancy giving it a go. </p>
<p>I&#8217;ve been using Google Latitude for several months now, so I&#8217;ve got a reasonable chunk of data to play with. </p>
<p>If I draw smaller points on a map, it&#8217;s easier to see the individual points:</p>
<p><iframe width="450" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgooglelatitude-heatmap-points.kml&amp;sll=51.230538,-1.097946&amp;sspn=0.173492,0.480652&amp;ie=UTF8&amp;ll=51.179343,-1.120605&amp;spn=0.602628,1.235962&amp;z=9&amp;output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgooglelatitude-heatmap-points.kml&amp;sll=51.230538,-1.097946&amp;sspn=0.173492,0.480652&amp;ie=UTF8&amp;ll=51.179343,-1.120605&amp;spn=0.602628,1.235962&amp;z=9" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>
<p><iframe width="445" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgoogle-latitude-heatmap-eastleigh-large.kml&amp;sll=51.021314,-1.384964&amp;sspn=0.021785,0.060081&amp;ie=UTF8&amp;ll=50.981128,-1.357155&amp;spn=0.037826,0.076389&amp;z=13&amp;output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fdl.dropbox.com%2Fu%2F2738296%2Fgoogle-latitude-heatmap-eastleigh-large.kml&amp;sll=51.021314,-1.384964&amp;sspn=0.021785,0.060081&amp;ie=UTF8&amp;ll=50.981128,-1.357155&amp;spn=0.037826,0.076389&amp;z=13" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>
<p>I&#8217;ve made the script configurable &#8211; the <a href="http://www.flickr.com/photos/dalelane/sets/72157624156114094/" target="_blank">images in this flickr set</a> show the effects of tweaking some of these parameters. </p>
<p>For example, playing with colours, the size of the dots added to the map, the opacity of the generated image, and so on. </p>
<p>I also added a parameter to let you group locations that are near each other into single groups &#8211; it makes a difference to the type of heat map you get out of it. </p>
<p><object width="440" height="330"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624156114094%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624156114094%2F&#038;set_id=72157624156114094&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624156114094%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624156114094%2F&#038;set_id=72157624156114094&#038;jump_to=" width="440" height="330"></embed></object></p>
<p><a href="http://www.flickr.com/photos/dalelane/4648564886/" title="my Google Latitude updates as a heatmap by dalelane, on Flickr"><img align="left" hspace="10" vspace="10" src="http://farm5.static.flickr.com/4066/4648564886_e1bd13f9db_m.jpg" width="240" height="159" alt="my Google Latitude updates as a heatmap" /></a>Another of the things I tried was making the density of marks on the heatmap proportional to the time spent at a location, rather than the number of updates made there (by comparing the timestamps of subsequent updates, and assuming that the time in between was spent at that location). </p>
<p>I wasn&#8217;t sure whether the number of updates at a location is proportional to the time I spent there &#8211; so it&#8217;s another thing to play with. </p>
<p>It&#8217;s interesting to see the clusters of marks around places that I regularly go to &#8211; such as points on the morning school run, or home and work. I&#8217;m not claiming that my script is 100% reliable or accurate, but on the whole the results look pretty believable <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>Here is my script &#8211; it&#8217;s a quick-and-dirty hack, and far from optimal. But it&#8217;s a fun snippet to play with. </p>
<pre style="border: thin solid silver; background-color: #eeeeee; padding: 0.7em; font-size: 1.1em; overflow: auto;">################################################################################
# Google Latitude Heat Map
#
#     Dale Lane (dale.lane@gmail.com)
#           28 May 2010
################################################################################
#  needs:
#    heatmap - from http://jjguy.com/heatmap/
#    KML file exported from Google Latitude
################################################################################
#  two parts to the script:
#     1) parsing KML downloaded from http://www.google.com/latitude/apps/history/view
#     2) adding lat/lon points extracted from KML to a heatmap
################################################################################
#  warning and disclaimer:
#    Provided as-is.
#    This was a very quick bit of fun on a quiet evening - it's almost certainly
#     got a ton of bugs and misunderstandings in it. Take it's results with a
#     pinch of salt!
################################################################################
# imports
import xml.parsers.expat
import heatmap

################################################################################
#
# VALUES TO TWEAK THE BEHAVIOUR OF THE SCRIPT
#
################################################################################

LATLON_ACCURACY = 6        # how many decimal places should we round the lat/lon
                           #  values to?
                           # reduce this to group similar locations together into
                           #  a single larger group

BOUNDS_LAT_MAX = 90        # range of latitude to include
                           #  set to 90 to get everything
BOUNDS_LAT_MIN = -90       # range of latitude to include
                           #  set to -90 to get everything
BOUNDS_LON_MAX = 180       # range of longitude to include
                           #  set to 180 to get everything
BOUNDS_LON_MIN = -180      # range of longitude to include
                           #  set to -180 to get everything

# for example, in some of my maps, I set the bounds to draw a map of
#   locations in and around Eastleigh
# BOUNDS_LAT_MAX = 51.033190218589546
# BOUNDS_LAT_MIN = 50.95929172950454
# BOUNDS_LON_MAX = -1.3039398193359375
# BOUNDS_LON_MIN = -1.4261627197265625

ADJUST_DENSITY_FOR_TIME = False  # False - we add every location to the map once
                                 #          for every time it was recorded by
                                 #          Google Latitude
                                 # True - we add each location to the map a number
                                 #          of times that is proportional to the
                                 #          total amount of time spent there

DENSITY_ADJUST_HOURS = 12    # if ADJUST_DENSITY_FOR_TIME is True, then we will
                             #  add each location to the heatmap once for this
                             #  number of hours spent at the location
                             # e.g. if this number is 12, we will add the
                             #  location to the heatmap once for every 12 hours
                             #  spent there in total

HEATMAP_DOT_SIZE = 2    # how large should points plotted on the heatmap be?
                        #  value is in pixels
                        #  2 is the smallest possible value

HEATMAP_DOT_OPACITY = 210    # do you want to be able to see the map through the
                             #  heatmap overlay?
                             # change opacity between 0 and 255 to adjust

GOOGLE_LATITUDE_FILE = "kml.kml"   # file name of KML from Google Latitude

################################################################################
# globals
################################################################################
# points we will plot on the heat map
pts = []

class MyKMLParser:

    # which XML element are we on?
    currentelement = None

    # the timestamp (in milliseconds since epoch) of the last placemark
    previoustime = None
    # the timestamp (in milliseconds since epoch) of the current placemark
    latesttime = None

    # the latitude of the current placemark
    latestlat = None
    # the longitude of the current placemark
    latestlon = None  

    # two-dimensional array of time spent at locations
    # timespent[lat][lon] = totalTimeInMilliseconds
    timespent = {}

    # XML parser function - StartElementHandler
    def start_element(self, name, attrs):
        latestelement = str(name)
        if latestelement == "Data":
            # there are multiple data elements - it's the 'name' attribute which
            #  identifies these element
            self.currentelement = attrs["name"]
        elif latestelement != "value":
            # value elements are always within a uniquely named element, so
            #  we ignore the 'value' tag - it's the parent that tells us what
            #  this
            self.currentelement = latestelement

    # XML parser function - EndElementHandler
    def end_element(self, name):
        global ADJUST_DENSITY_FOR_TIME, pts
        if name == "Placemark":
            if self.latestlat != None and self.latestlon != None:
                if ADJUST_DENSITY_FOR_TIME == True:
                    #
                    # calculate the time difference between this placemark
                    #  and the previous one
                    #

                    # default to 10 minutes - for no particularly good reason
                    valueMilliseconds = 10 * 60 * 1000
                    if self.previoustime != None:
                        valueMilliseconds = self.previoustime - self.latesttime
                    self.previoustime = self.latesttime

                    #
                    # store the time spent in this location
                    #
                    if self.latestlat not in self.timespent:
                        self.timespent[self.latestlat] = {}
                    if self.latestlon not in self.timespent[self.latestlat]:
                        self.timespent[self.latestlat][self.latestlon] = 0

                    self.timespent[self.latestlat][self.latestlon] += valueMilliseconds
                else:
                    #
                    # plot this point - we don't care how about how long was
                    #  spent here
                    #
                    pts.append((self.latestlon, self.latestlat))

        if name != "Data":
            self.currentelement = ""

    # XML parser function - CharacterDataHandler
    def char_data(self, data):
        global LATLON_ACCURACY, BOUNDS_LAT_MAX, BOUNDS_LAT_MIN, BOUNDS_LON_MAX, BOUNDS_LON_MIN

        if self.currentelement == "coordinates":
            #
            # location data - looks like <coordinates>-1.355025,50.973697,0</coordinates>
            #  so we split it on commas, and take the first and second value
            #

            # initialise values
            self.latestlat = None
            self.latestlon = None

            tmplatestcoordinates = str(data)
            coordbits = tmplatestcoordinates.split(',')
            try:
                if len(coordbits) == 3:
                    lat = float(coordbits[1])
                    lon = float(coordbits[0])

                    if lon < = BOUNDS_LON_MAX and lon >= BOUNDS_LON_MIN and lat < = BOUNDS_LAT_MAX and lat >= BOUNDS_LAT_MIN:
                        self.latestlat = round(lat, LATLON_ACCURACY)
                        self.latestlon = round(lon, LATLON_ACCURACY)
            except:
                noop = 0

        elif self.currentelement == "timestamp":
            #
            # timestamp - looks like  <data name="timestamp"><value>1274989863180</value></data>
            #  the value is in milliseconds since the epoch
            #

            try:
                newlatesttime = int(data)
                # sanity check - is it in the range I expect?
                #  these are hard-coded values for the times I know that I've
                #   been using latitude
                if newlatesttime > 1254355200000 and newlatesttime < 1275043497000:
                    self.latesttime = newlatesttime
            except Exception, exc:
                noop = 0

################################################################################
#
# parse the KML
#
################################################################################
parser = MyKMLParser()
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler  = parser.start_element
p.EndElementHandler    = parser.end_element
p.CharacterDataHandler = parser.char_data

p.ParseFile(open(GOOGLE_LATITUDE_FILE))

################################################################################
#
# draw the extracted points on a heat map
#
################################################################################

# if we are adjusting the density based on how long was spent at locations,
#   we need to do this now
# if not, we added points to the heat-map store as we parsed the KML, so there
#   is nothing else to do 

if ADJUST_DENSITY_FOR_TIME == True:
    # collect the points to draw
    for lat in parser.timespent:
        for lon in parser.timespent[lat]:
            # how long did we spend at this location?
            #  so that the heat map reflects the time spent at locations, we
            #   add a point multiple times
            timeSpent = parser.timespent[lat][lon] / (1000 * 60 * 60 * DENSITY_ADJUST_HOURS)
            if timeSpent > 0:
                for n in range(timeSpent):
                    pts.append((lon, lat))
            else:
                pts.append((lon, lat))

print str(len(pts)) + " points to plot"

# draw the heatmap using the awesome http://jjguy.com/heatmap/
hm = heatmap.Heatmap()
hm.heatmap(pts,
           "google-latitude-heatmap.png",
           scheme='pbj',
           opacity=HEATMAP_DOT_OPACITY,
           dotsize=HEATMAP_DOT_SIZE)
hm.saveKML("google-latitude-heatmap.kml")</pre>
<p>Finally, I have to say a big thanks to the <a href="http://jjguy.com/heatmap/" target="_blank">author of the library I used to generate the heatmaps</a> &#8211; which is the only way I was able to hack this together in an hour or so. </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1325">"My Google Latitude History as a heat map"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1325">http://dalelane.co.uk/blog/?p=1325</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1325</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting free routing data for the UK</title>
		<link>http://dalelane.co.uk/blog/?p=1320</link>
		<comments>http://dalelane.co.uk/blog/?p=1320#comments</comments>
		<pubDate>Sat, 08 May 2010 18:28:34 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[cloudmade]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googlemaps]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[multimap]]></category>
		<category><![CDATA[openstreetmap]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1320</guid>
		<description><![CDATA[I wrote this week about my new Android app, which checks for road traffic problems affecting UK routes. I mentioned that it wasn&#8217;t ready for release yet, because there are a few admin issues that I need to sort. One of the problems is in how I get the routing data. The app relies on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-4.png" align="left" hspace="10" vspace="10"/>I wrote this week about <a href="http://dalelane.co.uk/blog/?p=1297">my new Android app</a>, which checks for road traffic problems affecting UK routes. I mentioned that it wasn&#8217;t ready for release yet, because there are a few admin issues that I need to sort. </p>
<p>One of the problems is in how I get the routing data. </p>
<p>The app relies on comparing the locations of traffic problems with the user&#8217;s route. </p>
<p>Getting the location of traffic problems isn&#8217;t too hard as there are feeds from the <a href=http://www.highways.gov.uk/traffic/11278.aspx" target="_blank">Highways Agency</a> and the <a href="http://backstage.bbc.co.uk/data/TravelFeeds" target="_blank">BBC</a> that offer that.</p>
<p>But getting a detailed description of a route between two places, in a format that I can use to compare against the traffic problems, proved harder. </p>
<p>I tried a few places, such as:</p>
<p><a href="http://developer.android.com/guide/topics/location/" target="_blank">native Android API</a><br />
There is a maps and geolocation API in Android, but it doesn&#8217;t include any routing abilities. (<em>I found a couple of forum posts that suggest that there used to be, but they were removed?</em>)</p>
<p><a href="http://code.google.com/apis/maps/documentation/v3/reference.html#DirectionsService" target="_blank">Google Maps API</a><br />
I found the documentation for Google&#8217;s APIs quite obtuse. I couldn&#8217;t find a <a href="http://code.google.com/apis/ajaxsearch/documentation/#fonje" target="_blank">REST or HTTP API</a> for calculating routes. The JavaScript API doesn&#8217;t look like it returns information in quite the format I require, and I couldn&#8217;t see a straightforward way of accessing it from an Android Java client. I might have to come back to this, though!</p>
<p><a href="http://www.multimap.com/openapi/" target="_blank">Multimap Open API</a><br />
They have an API that would be ideal for my purposes &#8211; technically, the closest fit for my needs for a few boring technical reasons. But the terms of use say that it &#8220;may not be used as part of a mobile or wireless service&#8221;. Damn. </p>
<p><a href="http://developers.cloudmade.com/" target="_blank">CloudMade</a><br />
They have a good routing API, and this is the one that the app currently uses. But, my free API key limits me to making 5000 requests per month. That&#8217;s not 5000 requests per user &#8211; it&#8217;s 5000 requests in total for all users of my app. If I want more, I&#8217;d have to pay. This might be enough&#8230; I&#8217;m not sure. It&#8217;d depend on how many users I end up with. </p>
<p>That said, their developer site does say &#8220;If you are doing something really cool and you absolutely need more access to these services please get in touch – we want to help your innovation&#8221;. I&#8217;ve emailed them to ask. I wonder if they would think my app is really cool? <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Watch this space.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1320">"Getting free routing data for the UK"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1320">http://dalelane.co.uk/blog/?p=1320</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1320</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>UK traffic news for Android</title>
		<link>http://dalelane.co.uk/blog/?p=1297</link>
		<comments>http://dalelane.co.uk/blog/?p=1297#comments</comments>
		<pubDate>Thu, 06 May 2010 22:22:20 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[traffic]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1297</guid>
		<description><![CDATA[I&#8217;ve been travelling a lot for work recently. Most of it has been by car, and on a few occasions, I&#8217;ve run into traffic problems that have made me late. This got me thinking about what I could do to make things easier. There are websites with traffic info &#8211; such as the Highways Agency [...]]]></description>
			<content:encoded><![CDATA[<p><object width="448" height="520"><param name="flashvars" value="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624007449688%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624007449688%2F&#038;set_id=72157624007449688&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624007449688%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fdalelane%2Fsets%2F72157624007449688%2F&#038;set_id=72157624007449688&#038;jump_to=" width="448" height="520"></embed></object></p>
<p>I&#8217;ve been travelling a lot for work recently. Most of it has been by car, and on a few occasions, I&#8217;ve run into traffic problems that have made me late. </p>
<p>This got me thinking about what I could do to make things easier. </p>
<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-5.png" hspace="10" vspace="10" align="left"/>There are websites with traffic info &#8211; such as the <a href="http://www.highways.gov.uk/traffic/traffic.aspx" target="_blank">Highways Agency</a> or motoring organisations like the <a href="http://www.theaa.com/traffic-news/" target="_blank">AA</a> and <a href="http://www.rac.co.uk/traffic-information/" target="_blank">RAC</a>. They show travel information for a particular region, or the UK as a whole. </p>
<p>But that&#8217;s not really enough. </p>
<p>For one thing, I have to remember to check. I&#8217;m not a morning person &#8211; particularly when I need to get up at 5am so I can drive for hours. Any approach that relies on me remembering to do something isn&#8217;t off to a great start. </p>
<p>And it&#8217;s too manual. They show me all of the traffic problems, and it&#8217;s up to me to manually work out which of them might affect my route. There is too much noise, with too many traffic reports for places that are nowhere near me, or where I want to go. It&#8217;s up to me to filter that out. </p>
<p>At any rate, I don&#8217;t want to boot up a computer at 5am, so an AJAX-heavy website that doesn&#8217;t work on mobiles isn&#8217;t an ideal fit anyway.</p>
<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-2.png" align="right" hspace="10" vspace="10"/>My ideal approach would be:</p>
<p><strong>mobile</strong><br />
My mobile phone is already my alarm clock. It&#8217;s the only screen I look at when I get up in the morning, so this is the ideal place to get traffic info.</p>
<p><strong>automatic</strong><br />
My mobile knows when I&#8217;m going to go somewhere, and where I&#8217;m planning to go. It shouldn&#8217;t need me to manually check every day &#8211; it should check for me automatically, and alert me if it finds any problems.</p>
<p><strong>relevant</strong><br />
Showing me every traffic problem is too much. My mobile knows where I am, and where I&#8217;m going. I only want to see problems that are on (or perhaps very near) my route. Anything else should be filtered out, leaving me with just the updates relevant to me.</p>
<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-3.png" align="left" hspace="10" vspace="10"/>I went looking for a mobile app that does this, but didn&#8217;t have any luck. There are a couple of Android apps with UK traffic information (one from the <a href="http://www.rac.co.uk/news-advice/car-knowledge/trafficapp/" target="_blank">RAC</a>, the other by the <a href="http://www.mobilephonedevelopment.com/" target="_blank">brilliant</a> <a href="http://www.simonjudge.com/android.html" target="_blank">Simon Judge</a>). </p>
<p>They at least get the traffic info into a mobile-friendly format. But they still show you every traffic problem, and only when you remember to check. I couldn&#8217;t find anything that meets all three of my needs.</p>
<p>So I&#8217;ve written one. </p>
<p>It&#8217;s basic looking&#8230; and perhaps a little rough around the edges. But it&#8217;s a start. </p>
<p>You enter in routes &#8211; which is a start and an end location. This can be a town or city name, a full address, or a postcode. </p>
<p>From there, you can either check the traffic now, or schedule the app to check at a later date and time. For regular journeys, you can describe a repeating pattern &#8211; so for example, I can tell it to check my route to work every weekday morning at 7am, and my route home every weekday evening at 4.45pm. </p>
<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-1.png" align="left" hspace="10" vspace="10"/>The app works out the route, and compares it with known traffic problems. </p>
<p>This can be done in the background, so it doesn&#8217;t matter if your phone is switched off when it&#8217;s time to check, or if you&#8217;re using another app. </p>
<p><img src="http://i267.photobucket.com/albums/ii311/dale_lane/100506-traffic-6.png" align="right" hspace="10" vspace="10"/>If it finds any matches, it puts a warning in the notifications bar. Tapping on this can take you to a list of the problem descriptions, or an interactive map with both the route and the traffic problems marked on it.  </p>
<p>It&#8217;s pretty neat, even if I say so myself.  <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>And it&#8217;s something that I can see myself using.<br />
<br clear="all"/>So why am I not making it available for others now? I&#8217;ll leave that for <a href="http://dalelane.co.uk/blog/?p=1320">another post&#8230;</a></p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1297">"UK traffic news for Android"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1297">http://dalelane.co.uk/blog/?p=1297</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1297</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>What are our rights while stranded abroad?</title>
		<link>http://dalelane.co.uk/blog/?p=1293</link>
		<comments>http://dalelane.co.uk/blog/?p=1293#comments</comments>
		<pubDate>Tue, 20 Apr 2010 17:37:46 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[ashtag]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[rights]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1293</guid>
		<description><![CDATA[I&#8217;m in Cyprus. Still. My flight home at the weekend was cancelled, and we&#8217;ve been given a new flight on the 29th &#8211; turning our 7 day break into an eighteen day holiday. For the unplanned 11 days, our package holiday operator &#8211; easyjet &#8211; is putting us up in a series of nice full-board [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in Cyprus. Still.</p>
<p>My flight home at the weekend was cancelled, and we&#8217;ve been given a new flight on the 29th &#8211; turning our 7 day break into an eighteen day holiday.</p>
<p>For the unplanned 11 days, our package holiday operator &#8211; easyjet &#8211; is putting us up in a series of nice full-board hotels, and providing a coach to transport us between them. </p>
<p>I&#8217;m very grateful &#8211; we&#8217;d saved for a couple of years to pay for the original week as it is. I wouldn&#8217;t have been able to afford extending the holiday. </p>
<p>But I&#8217;m also curious. Why are they doing this? Do they have to?</p>
<p><strong>Yes, they have to&#8230;? </strong>  </p>
<p>There are a few reasons why I think that maybe they do have to look after us.</p>
<p>Number one : because they are.</p>
<p>This can&#8217;t be cheap. And there is a coach-load of us in my group alone. They&#8217;re putting us all up at their expense, which must be costing them a fortune. </p>
<p>Businesses tend not to piss away money on a whim, so presumably they&#8217;re doing this because they think that they have to?</p>
<p>Number two : the media thinks they have to</p>
<p>I&#8217;m not so sure on this one, as I&#8217;ve not seen much UK media in the last week. But I&#8217;ve certainly seen a few TV reports on BBC News and seen stuff like <a href="http://bit.ly/boXttT" target="_blank">this in the Guardian</a> which have been advising people that if you&#8217;re on a package holiday, the organiser &#8211; in our case, easyjet &#8211; is responsible for looking after your accommodation until they get you home.</p>
<p>Number three : summaries of the EU Travel Directive say they have to </p>
<p>The summary of the European Union Travel Directive that came with my travel insurance says:</p>
<blockquote><p>If a delay of two hours or more is expected by the airline, they must offer you meals and refreshments, hotel accommodation and communication facilities</p></blockquote>
<p>Similarly, summaries that I found on the Air Transport Users Council website about <a target="_blank"  href="http://www.auc.org.uk/default.aspx?catid=306&#038;pagetype=90&#038;pageid=4404">delays</a> and <a target="_blank"  href="http://www.auc.org.uk/default.aspx?catid=306&#038;pagetype=90&#038;pageid=9367">cancellations</a> both mention entitlements to refunds and compensation with caveats for the unavoidable act-of-god stuff. But the mentions of a right to accommodation until a delayed flight is available doesn&#8217;t seem to have that caveat. </p>
<p><strong>No, they don&#8217;t have to&#8230;? </strong>  </p>
<p>All that said, I&#8217;m not 100% convinced that easyjet had to do anything more than rearrange our flight.</p>
<p>There is one reason for this.</p>
<p>easyjet apparently don&#8217;t think so.</p>
<p>They said so first by email when our flight home was cancelled (sent at 4am on the morning our flight home was scheduled). In it, they apologized for the inconvenience, and said that we were entitled to a refund or a transfer to a different flight. </p>
<p>That&#8217;s it. No mention of &#8220;we realize that you&#8217;re stranded in another country&#8221;, just &#8220;sorry, would you like your money back or a different flight?&#8221;</p>
<p>Their agent at Paphos Airport said it next when we went to find out what we should do next. After over three hours of queuing with all our luggage and two small kids, she gave us a new flight date. </p>
<p>When I pointed out that we had nowhere to go, and nowhere to stay in the meantime I was told that they &#8220;didn&#8217;t offer accommodation&#8221;.</p>
<p>I&#8217;d heard through friends that they were providing accommodation to stranded passengers earlier in the week, but when I mentioned that, I was told that they weren&#8217;t doing that any more.</p>
<p>When I challenged this, pointing out that I had young kids with me and asking if they could do anything to help us, I was told &#8220;no&#8221; and that if I wanted to complain, I should use the easyjet website.</p>
<p>I said that would be difficult to do, and that we needed more immediate assistance. I was told that I could try phoning easyjet instead.</p>
<p>I was still being stubborn and not leaving so I was given a photocopied sheet with (easyjet&#8217;s interpretation of) the EU travel regulations on it.</p>
<p>It included the line:</p>
<blockquote><p>If your flight is cancelled, you are entitled to the rights set out below [compensation, reimbursement or re-routing, and "care" - meals &#038; accommodation] EXCEPT when:<br />
&#8230;<br />
easyJet can prove the cancellation is due to extraordinary circumstance which could not have been avoided even if all reasonable measures had been taken, including but not limited to Air Traffic Control, weather, &#8230; and unexpected flight safety shortcomings </p></blockquote>
<p>And this was pointed out to me. </p>
<p>Basically the message was &#8220;look, none of this was our fault, we&#8217;ve arranged a new flight for you, now get out of the way because there is a huge queue behind you&#8221;.</p>
<p>I asked if I could speak to someone else and was directed to another queue. A queue of families like mine who were asking for help with accommodation. Depending on who you talked to, it was either the &#8220;complaints&#8221; queue or the &#8220;accommodation&#8221; queue. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>People in-front of me in this queue warned us that the first thing they told you when you reached the front was to contact your travel insurer and come back when you&#8217;ve got their response. Obviously hoping that some people would be able to get an insurer to cover their accommodation. It was a useful warning, but it turns out our insurance didn&#8217;t help.</p>
<p>After over 90 minutes in this queue, I got to the front where I was given a name of a hotel in town and told to go there. </p>
<p>From this point on, everything got a lot less stressful &#8211; we&#8217;re all sorted now. We have a room to sleep in, and are given three meals a day. Awesome. It&#8217;s almost like another holiday.</p>
<p>But&#8230; and coming back to where I started this ramble, I&#8217;m curious. Why are they doing this? Are they legally obliged to?</p>
<p>If they&#8217;re not, then I&#8217;m immensely grateful that they are anyway, because I&#8217;d be a little screwed if they weren&#8217;t. Hurrah for easyJet. </p>
<p>If they are, then&#8230; why was it so hard? We are where we are now because I can be a stubborn sod when a) I&#8217;m worried about my kids having somewhere to sleep and b) have nowhere else to go. </p>
<p>But I watched plenty of other people both in front of me in that first 3+ hour queue, and after me while I was in the complaints queue, who (after being told &#8220;no, we don&#8217;t do accommodation&#8221;) accepted this and left. </p>
<p>I saw even more people who challenged this, but after being presented with the refusal in black-and-white, in a printed document with an easyjet logo on it, admitted defeat and left the airport.</p>
<p>There were even a couple of people in front of me in the complaints/accommodation queue who gave up and left before they reached the front.</p>
<p>If easyjet is legally obliged to provide accommodation until a new flight is available, then weren&#8217;t all those people pretty much screwed?</p>
<p>I&#8217;m assuming easyjet reps/agents at airports are better versed in EU travel regulations than I am. I&#8217;m assuming that the person who wrote easyjet&#8217;s official explanation of their responsibilities got someone to proof-read it who has possibly even seen the relevant regulations. </p>
<p>So when they insist that they don&#8217;t have to, I&#8217;m inclined to believe them.</p>
<p>And yet, here we are.  </p>
<p>What is the answer?  Anyone know?</p>
<p><strong>Update &#8211; 27 Apr 2010:</strong><br />
I&#8217;m finally back in the UK. I wrote this post from my mobile while I was in Cyprus. I had virtually no access to the Internet or UK media while I was away, so this post was a fairly uninformed ramble in the heat of the moment.  </p>
<p>Since coming back, I&#8217;ve had a chance to do a bit of reading on the topic. The link Roo shared in the comments below was useful, as was some of the BBC&#8217;s coverage on the topic such as &#8220;<a href="http://news.bbc.co.uk/1/hi/business/8621779.stm" target="_blank">Iceland volcano: Air passenger rights</a>&#8221; and &#8220;<a href="http://news.bbc.co.uk/1/hi/business/8634283.stm" target="_blank">Ash aftermath: How to make a complaint</a>&#8220;. In short, they were responsible for our food and accommodation, and not just as a package holiday provider &#8211; even just as our airline.  </p>
<p>I think that, ultimately, easyjet did fall a little short of what their responsibilities. They didn&#8217;t have to arrange our accommodation, as it is still within the regulations for them to leave us to sort ourselves out and then claim the expenses back from them at a later date. However, they do have a stated responsibility to make our rights and responsibilities clear to me, which they didn&#8217;t do.  </p>
<p>But it&#8217;s not all bad. To be fair, there is no denying that they did right by us in the end, in what were obviously difficult circumstances for them, too.  </p>
<p>If there is a moral to all of this, it&#8217;s that you really need to know your rights. If I knew what we were entitled to, a lot of the stress and worry from the last couple of weeks could have been avoided, and I could have been a lot clearer with easyjet in what I expected from them. Relying on them to keep us informed wasn&#8217;t enough.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1293">"What are our rights while stranded abroad?"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1293">http://dalelane.co.uk/blog/?p=1293</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1293</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Following twitter hashtags on TV</title>
		<link>http://dalelane.co.uk/blog/?p=1284</link>
		<comments>http://dalelane.co.uk/blog/?p=1284#comments</comments>
		<pubDate>Tue, 06 Apr 2010 19:59:54 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[debill]]></category>
		<category><![CDATA[television]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[vdr]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1284</guid>
		<description><![CDATA[As a lot of other people, I&#8217;m watching the debate of the Digital Economy Bill on BBC Parliament tonight. I&#8217;m also trying to follow along with some of the #debill back-channel on twitter. With such a heated and interesting commentary on twitter, it reminded me of Roo&#8217;s &#8220;Second screen&#8221; idea of having tweets with a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/dalelane/4497367013/" title="DSC06104 by dalelane, on Flickr"><img align="left" style="border: thin solid black" hspace=10 vspace=10 src="http://farm3.static.flickr.com/2759/4497367013_154f0ebbe0.jpg" width="300" height="225" alt="DSC06104" /></a>As a lot of other people, I&#8217;m watching the debate of the Digital Economy Bill on BBC Parliament tonight. I&#8217;m also trying to follow along with some of the <a href="http://search.twitter.com/search?q=%23debill" target="_blank">#debill back-channel on twitter</a>.</p>
<p>With such a heated and interesting commentary on twitter, it reminded me of <a href="http://rooreynolds.com/2009/05/27/second-screen-this-works-for-me/" target="_blank">Roo&#8217;s &#8220;Second screen&#8221; idea</a> of having tweets with a specific hashtag next to the TV during live TV events, when following the twitter backchannel during &#8216;The Apprentice&#8217;.</p>
<p>Unfortunately, I don&#8217;t have a spare laptop kicking around to show tweets on. But I do have <a href="http://dalelane.co.uk/blog/?p=1228">a hackable TV</a>. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>With that in mind, in just a few minutes I hacked together the following script to flash up tweets with the #debill tag on the TV:</p>
<pre style="border: thin solid silver; background-color: #eeeeee; padding: 0.7em; font-size: 1.1em; overflow: auto;"># run me using:
#       python twittertv.py debill 1

import twython
import subprocess
import sys
from time import sleep

twitterKeyword = sys.argv[1]
twitterSearchRateLimitMins = int(sys.argv[2])

twitter = twython.core.setup()

showOnTVCommand = ['svdrpsend', 'mesg', 'messagetodisplay']

lasttweetid = 1

while True:
    search_results = twitter.searchTwitter(twitterKeyword, since_id=lasttweetid, show_user=True)

    numtweets = len(search_results["results"])
    for tweetnum in reversed(range(0, numtweets)):
        lasttweetid = search_results["results"][tweetnum]["id"]

        user = search_results["results"][tweetnum]["from_user"]
        tweet = search_results["results"][tweetnum]["text"]
        showOnTVCommand[2] = user + " : " + tweet

        subprocess.Popen(showOnTVCommand)
        sleep(20)

    sleep(twitterSearchRateLimitMins * 60)</pre>
<p><a href="http://www.flickr.com/photos/dalelane/4498034258/" title="DSC06127 by dalelane, on Flickr"><img src="http://farm3.static.flickr.com/2796/4498034258_745fe5c39d.jpg" width="450" height="305" alt="DSC06127" /></a></p>
<p>It&#8217;s a quick-and-dirty hack, but I wanted to get something that would work before the debate was finished. <img src='http://dalelane.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p>And it seems to do the trick. </p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1284">"Following twitter hashtags on TV"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1284">http://dalelane.co.uk/blog/?p=1284</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1284</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>The Third Sector &amp; The Next Government</title>
		<link>http://dalelane.co.uk/blog/?p=1270</link>
		<comments>http://dalelane.co.uk/blog/?p=1270#comments</comments>
		<pubDate>Tue, 30 Mar 2010 22:04:44 +0000</pubDate>
		<dc:creator>dale</dc:creator>
				<category><![CDATA[charity]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://dalelane.co.uk/blog/?p=1270</guid>
		<description><![CDATA[Charity and politics are often closely linked. Not least because the Government is a huge funder of charities. I don&#8217;t need to go far to find an example. Look at the finances of my charity, Solent Youth Action. Our single biggest funder by far, was started by, and receives a lot of funding from, central [...]]]></description>
			<content:encoded><![CDATA[<p>Charity and politics are often closely linked. Not least because the Government is a huge funder of charities. </p>
<p>I don&#8217;t need to go far to find an example. Look at the <a href="http://solentyouthaction.org.uk/?q=finances" target="_blank">finances of my charity</a>, Solent Youth Action. Our <a href="http://vinspired.com/" target="_blank">single biggest funder</a> by far, was started by, and receives a lot of funding from, central Government. Even a lot of <a target="_blank" href="http://solentyouthaction.org.uk/?q=finances">our other funders</a>, whether local councils or NHS trusts, are influenced by central government policy.</p>
<p>The point is, as a charity our future can be affected by politics. And with an election coming up, it&#8217;s a particularly popular time to look ahead and wonder about what politicians might decide to do in relation to the &#8220;<a href="http://en.wikipedia.org/wiki/Third_sector" target="_blank">Third Sector</a>&#8220;. </p>
<p>To help with this, <a target="_blank" href="http://www.action.hants.org.uk/">Community Action Hampshire</a> and the <a target="_blank" href="http://www.scagroup.co.uk/index.php/social-enterprise/">SCA Institute of Social Enterprise</a> organised an event on the 12th March for charity directors and trustees to hear directly from the three main political parties on &#8220;The Third Sector and the Next Government&#8221;. </p>
<p>The format was pretty straightforward. Three MPs &#8211; one from Labour, one from the Conservatives and one Liberal Democrat &#8211; were each given time to make a short speech, followed by time for Q&#038;A. Once they all had a turn, there was a general Q&#038;A for the three of them as a panel.</p>
<p>I enjoyed the event, and thought it might be interesting to share some of what I heard. </p>
<h2>Conservatives</h2>
<p><object width="450" height="253"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10122620&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10122620&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object></p>
<p>First up was <a href="http://www.nickhurd.com/" target="_blank">Nick Hurd MP</a>. Conservative Shadow Minister for Charities, Social Enterprise and Volunteering. </p>
<p>After a quick and entertainingly unsubtle plug for the local Conservative prospective parliamentary candidate in the room, he launched into his scene-setting. The narrative was basically that the country is facing difficult, stubborn problems. Problems that will be expensive (in both financial, and human terms) to address. He gave examples like unemployment and crime (in particular, reoffending) rates.</p>
<p>From this bleak picture, he introduced the positive: the strength of an &#8220;independent civil society&#8221; &#8211; the stuff that we do for each other, independent of the state. It was a reasonably typical Conservative message &#8211; that the state is too big, that we are too dependent on it, and that we should be left to do stuff for ourselves and each other without the Government getting in the way. But it played well in a room full of charity execs from organisations who deliver more and more services to the community. </p>
<p>Which led him to the somewhat unavoidable bit where he told us how great we all were &#8211; saying that the value of the Third Sector is it&#8217;s ability to provide imaginative and innovative solutions to society&#8217;s problems. He had a couple of examples from his own constituency, such as a charity which only employs people with criminal records, so as to give them a first step towards becoming employable again. Interesting idea.</p>
<p>His general theme was that the state needed to get out of the way, and create more space for charities to do this sort of stuff. </p>
<p>With general scene-setting done, he moved on to a few specific points about what a Conservative government would do in relation to charities. </p>
<p>&#8220;Do no harm&#8221;<br />
He argued that new governments should not come in and undo the work of previous governments just because they weren&#8217;t their ideas. He acknowledged that Labour has had &#8220;good intentions&#8221; towards the Third Sector, giving the establishment of the <a href="http://www.cabinetoffice.gov.uk/third_sector.aspx" target="_blank">Office of the Third Sector</a> as an example, and one which would be continued. However he said that the Conservatives would go further, such as establishing a new committee that would hold government to account on Third Sector issues. </p>
<p>That said, when questioned on more specifics, he was vague on the future of <a href="http://vinspired.com/" target="_blank">v</a> &#8211; the organisation started by Labour to support youth volunteering (and the biggest single funder for my charity, as I mentioned above). He reminded us that the Conservatives were quite critical of the creation of v, believing that it would inevitably &#8220;soak&#8221; some money to run itself &#8211; money which should go directly to charities. He accepted that v has &#8220;done some good work&#8221;, but said that he was not able to make any commitments to future funding. </p>
<p>&#8220;What is Government doing to make it easier to run a charity?&#8221;<br />
He talked about how the bureaucracy surrounding running a charity has been getting thicker, harder, and more complicated and that we&#8217;ve lost sight of the damage that this is doing. He said that we need to &#8220;clear this thicket&#8221;, giving the example of Gift Aid, which he argued is inefficient and ineffective (citing the low numbers of people using it) and has an unacceptable burden of paperwork for charities.</p>
<p>&#8220;What can we do to get more resources (both time and money) into the sector?&#8221;<br />
He cited examples of big employers (<em>unfortunately not my own!</em>) &#8211; Barclays Bank was mentioned a few times &#8211; who support their employees to volunteer, and the benefits this brings to them. </p>
<p>He mentioned the Big Lottery Fund, saying that he was angry that this important resource has been raided for &#8220;Government pet projects&#8221; and that the Conservatives would get this &#8220;back to basics&#8221;. </p>
<p>He said that he wanted to get people to donate more, to &#8220;reconnect with the joy of philanthropy&#8221;. I wasn&#8217;t entirely clear on how he was proposing to do this, but he made general comments about wanting to encourage and inspire people to give more &#8211; and compared the levels of regular charitable giving in the UK with the much higher rate in the US. He talked about this as a cultural difference which should be tackled, arguing that it wasn&#8217;t a lack of generosity in the UK (giving examples of reactive donations in response to one-off events and appeals such as Comic Relief).</p>
<p>&#8220;How can government make it easier for charities who have to deal with them as funders?&#8221;<br />
He talked about how too many charities &#8220;have to do business with the state&#8221;. This led on from his previous point about wanting the public to donate more, and reduce the reliance of the Third Sector on state funding. He argued that charities need &#8220;robust independence&#8221; from the state, and that charities relying on money from the state is a worry. He also touched on possibilities for &#8220;social entrepeneurs&#8221; and &#8220;social investment&#8221; providing a &#8220;third pillar&#8221; of funding, after public donations and state funding. </p>
<p>However, for those charities that do receive public money, he said that the Government should make it easier for charities to deal with them directly as funders. He argued that politicians shouldn&#8217;t emote about charities&#8217; innovation and creativity on the one hand, while imposing burdensome and restrictive requirements on the other. </p>
<p>He argued that there was a need for more grants, and fewer contracts. He gave a few extreme examples, such as a 28-page contract required to receive a few thousand pounds of Government money. He was back to his theme of less bureacracy, less unnecessary reporting and monitoring, less burdensome paperwork.</p>
<p>&#8220;Other stuff&#8221;<br />
Several other topics came up, particularly in response to questions. One interesting point that he touched on was about looking into national citizenship programmes, for getting young people to engage with the community. This isn&#8217;t a new idea &#8211; the topic (and the inevitable <a href="http://dalelane.co.uk/blog/?p=189">questions about where to draw the line between volunteering and such programmes</a>) has been raised many times before, but it was interesting to hear that it still being bounced around.</p>
<p>Finally, he pointed us at the Conservative website, where he said they have produced a mini-manifesto on volunteering. (<em>I&#8217;m not 100% sure, but it might be <a href="http://www.conservatives.com/Policy/Where_we_stand/Voluntary_Sector.aspx" target="_blank">this page on Conservative Policy</a>?</em>)</p>
<h2>Labour</h2>
<p><object width="450" height="253"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10122604&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10122604&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object></p>
<p>Next up &#8211; <a href="http://www.alan-whitehead.org.uk/" target="_blank">Alan Whitehead, MP</a> &#8211; MP for Southampton Test. </p>
<p>As with Mr Hurd, he started with a little scene-setting &#8211; saying what a strong charity and volunteering culture we have. He claimed that &#8220;73% of adults say that they volunteer&#8221; and that &#8220;only Norway has a higher proportion of volunteers than the UK&#8221;. </p>
<p>His overall theme was that in the Third Sector we have a valiable resource that &#8220;we damage or undermine at our peril&#8221;.</p>
<p>In some ways, he was rather unfortunate coming second, as some of what he would&#8217;ve wanted to say had just been said. Indeed, both MPs repeatedly highlighted that there is cross party consensus about the importance of the Third Sector. </p>
<p>He touched on a variety of topics, including:</p>
<p><a href="http://www.thecompact.org.uk/" target="_blank">The Compact</a> &#8211; in particular that the principles set out in the Compact, which he argued are good</p>
<p>He acknowledged the challenge of finding funding to run organisations, as many funders prefer to fund the creation of new projects, rather than to pay for the ongoing costs of established projects. He didn&#8217;t really have any answers or proposals for this problem &#8211; just highlighted that it was a problem they were aware of, and that they realise that it often results in charities repackaging or tweaking existing projects to make them look new. </p>
<p>He recognised the cross-party consensus in continuing the <a href="http://www.cabinetoffice.gov.uk/third_sector.aspx" target="_blank">Office of the Third Sector</a>. (<em>And in a somewhat bizarre and apparently unprompted moment, said that he believed Nick Hurd would make an excellent minister for the Office of the Third Sector if the Conservatives were to win the General Election!</em>)</p>
<p>He talked about the balance between charities being independent of Government while still be supported by Government, and some examples were raised of where this has worked well &#8211; with charities both continuing to receive state funding while challenging Government decisions and actions.</p>
<p>He hailed the work of the Office of the Third Sector as a good example of how Government interaction with charities should be &#8211; &#8220;hands on, but hands off at the same time&#8221;. And highlighted acheivements such as v, and the establishment of the Compact.</p>
<p>He said that Labour would continue to foster and encourage volunteering &#8211; and gave examples of changes being made now, such as allowing volunteering to not directly affect people&#8217;s ability to claim most benefits, so that people are not discouraged from volunteering for financial reasons.</p>
<p>He also mentioned the importance of employer-supported volunteering, also citing Barclays Bank as a great example of employee volunteering, facilitating and assisted by the employer. </p>
<p>He was keen to reassure about the continuance of funding for charities through the recession &#8211; arguing the importance of funding for the Third Sector through the &#8220;hard times&#8221;. </p>
<p>He spoke about the role of the Third Sector with local authorities, recognising that contracts are currently too focused on the financial bottom line and not recognising the other &#8220;added value&#8221; that charities bring. </p>
<p>He talked about a pilot initiative &#8220;<a href="http://www.localleadership.gov.uk/totalplace/" target="_blank">Total Place</a>&#8220;, which seeks to avoid charities competing with statutory services, by identifying and avoiding duplication of services within a local area. The aim is that this should ensure that finances are concentrated on a single body delivering a particular service, rather than being dissipated among a number of agencies doing similar work. He argued that this would not only save money, but also help to enhance the focus of the Third Sector. (<em>I personally wonder how they will ensure that innovation is still protected with such a scheme&#8230; two schemes might seem broadly similar, but with that diversity can often come a spark of creativity that might not happen if there is only one &#8220;approved&#8221; provider. Unfortunately I didn&#8217;t get a chance to ask for more detail at the time</em>).</p>
<p>He acknowledged the need to simplify some of the bureaucracy surrounding running a charity. However, unlike Mr Hurd, he believed that in many cases where laws and regulations were felt to be overly burdensome, that this was due to a misunderstanding of what is required. Giving examples such as CRB checks, he said that in some instances charities were doing things that were not actually required by law, because they mistakenly believed that it was &#8211; and that this could be better tackled by clearer guidelines from Government, rather than needing fundamental changes to existing legislation. </p>
<h2>Liberal Democrats</h2>
<p><object width="450" height="253"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10130661&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=10130661&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="253"></embed></object></p>
<p>Last up, <a href="http://www.markoaten.com/" target="_blank">Mark Oaten, MP</a> &#8211; MP for Winchester.</p>
<p>He started by admitting that, as he is standing down as an MP this year, that he might not be completely informed as to the entirety of Lib Dem party policy in this area. </p>
<p>That said, as a trustee for a number of local charities, he was clearly well informed from a charities perspective, even if not about Lib Dem plans for charity. </p>
<p>He talked about several issues, including:</p>
<ul>
<li>Difficulties for charities which receive public funding not knowing what is coming next, particularly in election times. How can you plan when you dont know whether money will still be coming?
</li>
<li>A concern is that as money gets tight, politicians will move more towards populist issues &#8211; making life less certain for charities which support less popular or fashionable groups of society
</li>
<li>The increasing move away from grants and towards contracts leading to Government becoming too prescriptive in what services charities deliver for the money, and how they do it &#8211; restricting their ability to be creative and innovative
</li>
<li>Speaking of contracts, he argued that Government procurement is relation to the Third Sector is a disgrace, describing government tender documents as off-putting. He gave an example of a question in a tender document received by a small local charity &#8211; asking the average age of employees working for the charity. He asked why these sorts of questions should be relevant, and that small charities don&#8217;t have the resource to cope with such long and burdensome tender processes.
</li>
<li>He challenged us as charity leaders to be even more creative when thinking about what activities to do &#8211; looking perhaps further afield in terms of activities and sources of funding. And to take a more active fundraising role.
</li>
<li>He touched on CRB checks, saying that the law has now gone too far, and is causing problems for some organisations. He mentioned Gift Aid &#8211; challenging us in the Third Sector to be more clearer and more consistent about what changes we need, but recognising that it needs to be simplified. He talked about his worry of the impact on the charity sector of the removal of cheques.
</li>
<li>He mentioned wanting to see more volunteering, talking about liking the idea of volunteering as a national service option.  </li>
</ul>
<p>Overall, he talked about how this was an exciting time for charities &#8211; that charities do more, have more opportunities, and are more involved than ever before. He talked about seeing a change in the debate &#8211; where in the 1997 election the debate focused on the private and public sector, he now sees consensus amongst all parties in wanting to identify how to better support the Third Sector. He described wanting to take this even further, that we need to expand what the Third Sector does yet more.</p>
<br clear=all/><div style="font-size: small; padding: 0px 10px 0px 10px; border: 1px solid #ccc; color: #333; background-color: #eee;"><a href="http://dalelane.co.uk/blog/?p=1270">"The Third Sector &#038; The Next Government"</a> was posted by <a href="http://dalelane.co.uk/blog/">Dale Lane</a> to <a href="http://dalelane.co.uk/blog/?p=1270">http://dalelane.co.uk/blog/?p=1270</a>.<br/><em>Feed footer idea <a href="http://www.43folders.com/feedfooter">nicked from 43 Folders</a> using the <a href="http://www.scratch99.com/wordpress-plugin-feedentryheader/">FeedEntryHeader WordPress plugin</a>.</em></div>]]></content:encoded>
			<wfw:commentRss>http://dalelane.co.uk/blog/?feed=rss2&amp;p=1270</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
