<?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>mobile geo social</title>
	<atom:link href="http://hitching.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://hitching.net</link>
	<description>a blog by bob hitching</description>
	<lastBuildDate>Thu, 02 Sep 2010 18:38:56 +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>Social Browsing on your iPhone with Safari Browser Extensions</title>
		<link>http://hitching.net/2010/06/28/social-browsing-on-your-iphone-with-safari-browser-extensions/</link>
		<comments>http://hitching.net/2010/06/28/social-browsing-on-your-iphone-with-safari-browser-extensions/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 13:28:45 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[browser extensions]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[google buzz]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile safari]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social extensions]]></category>
		<category><![CDATA[social plugins]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16222</guid>
		<description><![CDATA[Plug-ins, add-ons, extensions &#8211; every desktop browser supports them: Firefox, Chrome, Internet Explorer, Opera and Safari. Third party developers can easily add features to these web browsers to enhance our web browsing pleasure. But what about the mobile browser on &#8230; <a href="http://hitching.net/2010/06/28/social-browsing-on-your-iphone-with-safari-browser-extensions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Plug-ins, add-ons, extensions &#8211; every desktop browser supports them: Firefox, Chrome, Internet Explorer, Opera and Safari. Third party developers can easily add features to these web browsers to enhance our web browsing pleasure.</p>
<p>But what about the mobile browser on your phone?</p>
<p><a href="https://addons.mozilla.org">Mobile Firefox</a> is the only major mobile browser to officially support extensions, and that is currently only for Maemo and Windows Mobile.</p>
<p>I’ve decided that’s not enough!</p>
<p>According to this man below, the mobile browser that accounts for most of our browsing is the iPhone’s Mobile Safari, so let’s start with that.</p>
<p><a href="http://www.engadget.com/2010/04/08/live-from-apples-iphone-os-4-event/"><img width="300" height="199" src="http://hitching.net/wp-content/uploads/2010/06/iphone-os-4-0096-rm-eng-300x199.jpg" title="iPhone = 64% of US mobile browser usage. Image by Engadget." style="padding:1px;border:#CCCCCC solid 1px;" /></a><br />
<span id="more-16222"></span><br />
The technique for extending Mobile Safari makes use of <a ref="http://en.wikipedia.org/wiki/Bookmarklet">bookmarklets</a>, which are small snippets of javascript stored as a browser Bookmark. This does <b>not</b> require you to jailbreak your iPhone, and this does <b>not</b> require the latest iPhone hardware or software.</p>
<p>What extensions might be useful for your iPhone? According to <a href="http://ir.comscore.com/releasedetail.cfm?ReleaseID=475892">Comscore</a>, social networking is the fastest growing mobile activity, so I’ve focused on five extensions to make your mobile browsing more social.</p>
<p>There&#8217;s a whopping <a href="http://www.facebook.com/iphone">55 million</a> people using the Facebook iPhone app, and I suspect there might be demand from those people for some social extensions while browsing the web on their iPhone. So included below are extensions that allow you to Like or Share *any* mobile web page, not just the sites which have so far implemented <a href="http://developers.facebook.com/plugins">Facebook Social Plugins</a>. And there’s another extension that shows personalized Recommendations powered by Facebook.</p>
<p>Also, my personal use case: I often find myself wanting to tweet about the mobile page I’m reading. But some sites do not include any way to do this, and other sites do not make it easy, or use third party tools which require too many clicks or take me too far away from the page I am reading.</p>
<p>Figuring all that out on a mobile browser is not fun, so one of the extensions below is an easy, quick, reliable, always-opens-in-a-new-window extension to simply pre-fill the status box on Twitter’s own mobile site with simply the title and URL of the page you are reading. Simple.</p>
<p>And last but not least, there’s an extension for Google Buzz users too. Enjoy&#8230;</p>
<h1 style="background: #C8C8C8 url(http://mbx.hitching.net/iui/pinstripes.png);">Like!</h1>
<p><img src="http://mbx.hitching.net/i/ss_like.png" style="float:right;margin-left:20px" /></p>
<p>Whenever you want to Like a web page, this extension will display a Like button powered by <a href="http://developers.facebook.com/docs/reference/plugins/like">Facebook Social Plugins</a>. No more searching high and low for the Like button, and no more waiting for developers to add Like buttons to your favorite sites.</p>
<p>Go to <a href="http://mbx.hitching.net/like">http://mbx.hitching.net/like</a> on your iPhone to add this extension.</a></p>
<p><br clear="both" /></p>
<h1 style="background: #C8C8C8 url(http://mbx.hitching.net/iui/pinstripes.png);">Tweet!</h1>
<p><img src="http://mbx.hitching.net/i/ss_tweet.png" style="float:right;margin-left:20px" /></p>
<p>To tweet about any web page, use this extension to open Twitter in a new Safari window. Your status will be pre-filled with the title and URL of the page, ready for you to embellish before tweeting. Long URLs will be automatically shortened.</p>
<p>Go to <a href="http://mbx.hitching.net/tweet">http://mbx.hitching.net/tweet</a> on your iPhone to add this extension.</a></p>
<p><br clear="both" /></p>
<h1 style="background: #C8C8C8 url(http://mbx.hitching.net/iui/pinstripes.png);">Recommend!</h1>
<p><img src="http://mbx.hitching.net/i/ss_recommend.png" style="float:right;margin-left:20px" /></p>
<p>This extension displays personalized recommendations of content, powered by <a href="http://developers.facebook.com/docs/reference/plugins/recommendations">Facebook Social Plugins</a>.</p>
<p>Go to <a href="http://mbx.hitching.net/recommend">http://mbx.hitching.net/recommend</a> on your iPhone to add this extension.</a></p>
<p><br clear="both" /></p>
<h1 style="background: #C8C8C8 url(http://mbx.hitching.net/iui/pinstripes.png);">Share!</h1>
<p><img src="http://mbx.hitching.net/i/ss_share.png" style="float:right;margin-left:20px" /></p>
<p>To share any web page on Facebook, this extension will open a share page in a new Safari window, showing the title and URL of the page. You can choose an image from the page, and add a comment, before sharing with your Facebook friends.</p>
<p>Go to <a href="http://mbx.hitching.net/share">http://mbx.hitching.net/share</a> on your iPhone to add this extension.</a></p>
<p><br clear="both" /></p>
<h1 style="background: #C8C8C8 url(http://mbx.hitching.net/iui/pinstripes.png);">Buzz!</h1>
<p><img src="http://mbx.hitching.net/i/ss_buzz.png" style="float:right;margin-left:20px" /></p>
<p>To post on Google Buzz about any web page, this extension will open Google Buzz in a new Safari window, showing the title and content from the page. You can add a comment before submitting your post.</p>
<p>Go to <a href="http://mbx.hitching.net/buzz">http://mbx.hitching.net/buzz</a> on your iPhone to add this extension.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/06/28/social-browsing-on-your-iphone-with-safari-browser-extensions/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>GeoMeme adds Google Buzz to detect real-time geo-located trends</title>
		<link>http://hitching.net/2010/05/23/geomeme-adds-google-buzz-to-detect-real-time-geo-located-trends/</link>
		<comments>http://hitching.net/2010/05/23/geomeme-adds-google-buzz-to-detect-real-time-geo-located-trends/#comments</comments>
		<pubDate>Sun, 23 May 2010 10:30:42 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[google buzz]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16188</guid>
		<description><![CDATA[If you&#8217;ve been using Google Buzz on a mobile phone recently, you would know that you can choose between two filters to the real-time stream of content: Social &#8211; choose &#8216;Following&#8217; to filter the stream based on your social graph, &#8230; <a href="http://hitching.net/2010/05/23/geomeme-adds-google-buzz-to-detect-real-time-geo-located-trends/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://hitching.net/wp-content/uploads/2010/05/geomeme_adds_google_buzz.png" /></p>
<p>If you&#8217;ve been using <a href="http://www.google.com/mobile/buzz/">Google Buzz</a> on a mobile phone recently, you would know that you can choose between two filters to the real-time stream of content:</p>
<ul>
<li><b>Social</b> &#8211; choose &#8216;Following&#8217; to filter the stream based on your social graph, or social &#8216;circle&#8217; as Google prefers to call it. You will see posts from your friends, and also some public posts from friends-of-friends if the Buzz filtration algorithm thinks you want to flex your social circle.
<li><b>Geo</b> &#8211; choose &#8216;Nearby&#8217; to filter the stream based on your location, as <a href="http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/">detected</a> by your mobile phone. You will see public posts from nearby Buzz users, as a chronological list, or located on a map. Most of the value here comes from the stream being updated in real-time.
</ul>
<p><img src="http://hitching.net/wp-content/uploads/2010/05/buzz_mobile_social_geo.png" style="padding:1px;border:1px solid #CCCCCC;" /></p>
<p>Now, with the release of the new <a href="http://code.google.com/apis/buzz/">Google Buzz API</a> from Google Labs, I have added the real-time stream of geo-located Google Buzz content to <a href="http://www.geome.me">GeoMeme</a>, my pet project.</p>
<p><a href="http://www.geome.me">GeoMeme</a> detects real-time geo-located trends, now based on millions of daily posts from various Google Buzz and Twitter and MySpace mobile apps.</p>
<p>GeoMeme can detect, for example, that <a href="http://www.geome.me/NemWJ">Justin Bieber beats Lady Gaga in New York City</a>.</p>
<p><a href="http://www.geome.me/NemWJ"><img src="http://hitching.net/wp-content/uploads/2010/05/geomeme_with_buzz.png" border="0" /></a></p>
<p>If you&#8217;re curious about Justin Bieber, or about the amount and contents of geo-located Buzz posts, compared to geo-located Twitter and MySpace posts, <a href="http://www.geome.me">check it out</a> and let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/05/23/geomeme-adds-google-buzz-to-detect-real-time-geo-located-trends/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Social Recommendations For Every Site On The Web</title>
		<link>http://hitching.net/2010/04/30/social-recommendations-for-every-site-on-the-web/</link>
		<comments>http://hitching.net/2010/04/30/social-recommendations-for-every-site-on-the-web/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 13:56:05 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[recommendations]]></category>
		<category><![CDATA[social graph]]></category>
		<category><![CDATA[social plugin]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16163</guid>
		<description><![CDATA[Today Facebook announced that over 50,000 websites have implemented Social Plugins in the first week since their launch. My favorite Social Plugin is &#8216;Recommendations&#8217; which lists the pages on a site which have enjoyed the most Sharing activity by Facebook &#8230; <a href="http://hitching.net/2010/04/30/social-recommendations-for-every-site-on-the-web/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<style>
<!--
.bookmarklet {
    position: relative;
    background: #ccc;
    padding: 0.5em;
    font-size: 0.8em;
    background: #555;
    color: #eee;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    box-shadow: 1px 1px 4px #444;
    -webkit-box-shadow: 1px 1px 4px #444;
}
//-->
</style>
<p>Today Facebook <a href="http://developers.facebook.com/blog/post/379">announced</a> that over 50,000 websites have implemented <a href="http://developers.facebook.com/plugins">Social Plugins</a> in the first week since their launch.</p>
<p>My favorite Social Plugin is &#8216;Recommendations&#8217; which lists the pages on a site which have enjoyed the most Sharing activity by Facebook users lately. It&#8217;s a good crowdsourced measure of quality.</p>
<p>But I couldn&#8217;t find the plugin on any of my favorite sites. </p>
<p>So here&#8217;s a handy bookmarklet that allows you to see Social Recommendations for <b>any</b> website, not just those sites which have implemented the plugin. You might call it a Facebookmarklet.</p>
<ol>
<li>Drag this link up to the bookmarks bar of your web browser: <a class="bookmarklet" href="javascript:(function(){var d=document;var b=d.body;if(d.getElementById('fbreci')){b.removeChild(d.getElementById('fbreci'));b.removeChild(d.getElementById('fbrecl'));}else{var l=d.createElement('div');l.id='fbrecl';l.setAttribute('style','background-color:#000000;-moz-opacity:0.75;opacity:0.75;');l.style.position='absolute';l.style.zIndex=10000;l.style.left='0px';l.style.top='0px';l.style.width='100%';l.style.height=window.innerHeight+'px';l.addEventListener('click',function(){delete b.removeChild(d.getElementById('fbreci'));delete b.removeChild(this);},true);b.appendChild(l);var i=d.createElement('iframe');i.src='http://www.facebook.com/plugins/recommendations.php?site='+d.location.hostname+'&#038;height=400';i.id='fbreci';i.style.position='fixed';i.style.zIndex=10001;i.style.left=(window.innerWidth-300)/2+'px';i.style.top=(window.innerHeight-500)/2+'px';i.style.width='300px';i.style.height='400px';b.appendChild(i);}})();">FB-Recommended</a><br />
<br/></p>
<li>Navigate to your favorite site, and click the &#8216;FB-Recommended&#8217; button to see the pages on that site which are most recommended.
</ol>
<p>If you are worried about privacy, don&#8217;t be. The plugin does not require you to be logged in to Facebook. Here&#8217;s the anonymous recommendations on news.bbc.co.uk today. On the site homepage itself, there&#8217;s no mention of Gordon Brown&#8217;s &#8216;bigoted woman&#8217; gaff. But that story tops the list of recommended pages:</p>
<p><img src="http://hitching.net/wp-content/uploads/2010/04/facebookmarklet_bbcnews.png" style="padding:1px;border:1px solid #CCCCCC;" /></p>
<p>If you <b>are</b> logged-in to Facebook, the plugin gives preference to and highlights pages that your friends have shared:</p>
<p><img src="http://hitching.net/wp-content/uploads/2010/04/facebookmarklet_getup.png" style="padding:1px;border:1px solid #CCCCCC;" /></p>
<p>This filtering-by-social-graph is hugely significant and valuable, for users needing to <a href="http://hitching.net/2009/01/07/whats-the-difference-between-user-generated-content-and-user-generated-rubbish-comments-please/">filter the signal from the noise</a>, and for Facebook who can apply the same social filtering algorithms to improve their ad targeting. </p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/04/30/social-recommendations-for-every-site-on-the-web/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to display approximately geo-located Tweets on a map</title>
		<link>http://hitching.net/2010/04/17/how-to-display-approximately-geo-located-tweets-on-a-map/</link>
		<comments>http://hitching.net/2010/04/17/how-to-display-approximately-geo-located-tweets-on-a-map/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 08:18:39 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[place]]></category>
		<category><![CDATA[polytweet]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16140</guid>
		<description><![CDATA[Most geo mashups such as GeoMeme display Tweets and other geo-located content as points on a map, based on exact latitude/longitude coordinates. Easy. At the inaugural Chirp Conference this week, Twitter released its Places feature which instead allows Tweets to &#8230; <a href="http://hitching.net/2010/04/17/how-to-display-approximately-geo-located-tweets-on-a-map/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Most geo mashups such as <a href="http://www.geome.me">GeoMeme</a> display Tweets and other geo-located content as points on a map, based on exact latitude/longitude coordinates. Easy.</p>
<p>At the inaugural <a href="http://chirp.twitter.com">Chirp</a> Conference this week, Twitter released its Places feature which instead allows Tweets to be approximately geo-located, within a &#8216;Place&#8217; of chosen granularity; a city, or a neighborhood, perhaps a restaurant or a park.</p>
<p>This is a great option for users who have &#8216;geo-privacy&#8217; concerns about revealing an exact latitude/longitude.</p>
<p>However, this approach presents a challenge to developers on the Twitter platform: how can approximately-located Tweets be displayed on a map?</p>
<p>Moreover, users need app developers to adopt a standard way of showing these approximately-located Tweets on a map. A consistent approach by developers will help users form a consistent understanding of this Twitter feature, in a similar way that <a href="http://dev.twitter.com/anywhere/begin#hovercards">@anywhere Hovercards</a> provide a consistent approach to showing data about a particular Twitter user.</p>
<p><a href="http://code.google.com/p/polytweet/">polytweet</a> is a javascript library which displays approximately-located Tweets on a Google Map.</p>
<p>I hacked it together at Chirp, because I will need something like this for GeoMeme, and also to share it with other developers and encourage a standard approach.</p>
<div style="cursor:pointer;float:left;width:43px;height:32px;background-image: url(http://twitter.com/images/pin.png);margin-right:10px;" title="hitching in SoMa"><img width="24" height="24" src="http://a3.twimg.com/profile_images/600258273/profile_bw3_normal.jpg"></div>
<p> Exactly-located tweets are represented by a profile image atop a blue pin.<br />
<br clear="all">
<div style="cursor:pointer;float:left;margin-right:10px;" title="hitching in SoMa"><img width="24" height="24" style="-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);filter:alpha(opacity=50);-moz-opacity: 0.5;-khtml-opacity: 0.5;opacity: 0.5;" src="http://a3.twimg.com/profile_images/600258273/profile_bw3_normal.jpg"></div>
<p> Approximately-located tweets are represented by a semi-transparent profile image, placed along one of the edges of the Place polygon, at a consistent position so that zooming in and out does not shuffle the tweets.</p>
<p>Here&#8217;s an example, with thanks to the Twitter API team for sharing their geo-location. The tweet on the left hand side from <a href="http://twitter.com/raffi">@raffi</a> is approximately located:</p>
<p><img src="http://polytweet.googlecode.com/svn/trunk/screenshot_approx_and_exact.PNG" title="This is just a screenshot, don't expect anything to happen when you click it"></p>
<p>Hovering over a marker will trigger the display of any corresponding Place as a semi-transparent polygon. Hence the user can understand the area from which an approximately-located tweet was posted:</p>
<p><img src="http://polytweet.googlecode.com/svn/trunk/screenshot_mouseover.PNG" title="This is just a screenshot, don't expect anything to happen when you click it"></p>
<p>You can see the working demo at <a href="http://bit.ly/polytweetdemo">http://bit.ly/polytweetdemo</a> which includes an added bonus of Hovercards.</p>
<p>See the <a href="http://code.google.com/p/polytweet/">source code</a> for usage instructions and details of how to tweak the style of the markers and polygons.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/04/17/how-to-display-approximately-geo-located-tweets-on-a-map/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GeoMeme Wins MySpace Developer Challenge</title>
		<link>http://hitching.net/2010/03/14/geomeme-wins-myspace-developer-challenge/</link>
		<comments>http://hitching.net/2010/03/14/geomeme-wins-myspace-developer-challenge/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 04:13:38 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16126</guid>
		<description><![CDATA[How exciting! My pet project GeoMeme has been awarded ‘Most innovative use of the Real-Time Stream API’ in the MySpace Developer Challenge. The awards were judged by Mike Jones, MySpace’s new Co-President, and Ron Conway, renowned angel investor, and David &#8230; <a href="http://hitching.net/2010/03/14/geomeme-wins-myspace-developer-challenge/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>How exciting! My pet project <a href="http://www.geome.me">GeoMeme</a> has been awarded ‘Most innovative use of the Real-Time Stream API’ in the <a href="http://www.myspace.com/developerchallenge">MySpace Developer Challenge</a>.</p>
<p><img alt="GeoMeme Wins MySpace Developer Challenge" src="http://hitching.net/wp-content/uploads/2010/03/myspace_developer_challenge.png" style="border:1px solid #CCCCCC;padding:1px" width="198" height="102" /></p>
<p>The awards were judged by <a href="http://www.myspace.com/mike">Mike Jones</a>, MySpace’s new Co-President, and <a href="http://www.crunchbase.com/person/ron-conway">Ron Conway</a>, renowned angel investor, and <a href="http://www.google.com/profiles/dglazer94062">David Glazer</a>, Director of Engineering at Google, and <a href="http://scobleizer.com/">Robert Scoble</a>, tech blogger and uber-geek.</p>
<p>GeoMeme uses the new <a href="http://developerwiki.myspace.com/index.php?title=Category:Real_Time_Stream">MySpace Real-Time Stream API</a> to tap into the flood of geo-located updates being posted by MySpace users all around the world.</p>
<p><a href="http://activitystrea.ms/">Activity Streams</a> from MySpace are mashed up with tweets from a number of mobile Twitter apps, and located onto a Google Map. Local trends are identified using semantic analysis services from Yahoo.</p>
<p>For example, GeoMeme knows that <a href="http://www.geome.me/6anMj">Rihanna beats Lady Gaga in New York</a> and that <a href="http://www.geome.me/vL8Cp">Avatar beats Hurt Locker in Los Angeles</a>.</p>
<p>Beyond the discovery and measurement of real-time local trends, GeoMeme also provides a unique view into local activity streams, as a way to discover new like-minded and nearby friends. You can then buy the t-shirt (really, you can!) to share your trends with your friends.</p>
<p>GeoMeme is a lightning fast web app, and is also available on iPhone as a mobile web app, optimized for mobile using <a href="http://googlegeodevelopers.blogspot.com/2009/11/geolocation-mobile-web-apps-geo.html">Google Maps v3 API</a>. GeoMeme is built on Google App Engine for <a href="http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/">massive scalability</a>.</p>
<p>And congratulations to the other winners of the Challenge:</p>
<ul>
<li>Best New MySpace App: <a href="http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=180074" target="_blank">Paradise Paintball</a></li>
<li>Most innovative use of the Real-Time Stream API: <a href="http://www.geome.me" target="_blank">GeoMeme</a></li>
<li>Most innovative use of the Open Search API: <a href="http://socialmention.com/" target="_blank">Social Mention</a></li>
<li>Most innovative use of the Photos API: <a href="http://www.browsernotincluded.com" target="_blank">Browser Not Included</a></li>
<li>Most innovative MySpace Integration on Mobile: <a href="http://iskoot.com/" target="_blank">iSkoot</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/03/14/geomeme-wins-myspace-developer-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeoMeme adds MySpace real-time local trends</title>
		<link>http://hitching.net/2010/03/04/geomeme-adds-myspace-real-time-local-trends/</link>
		<comments>http://hitching.net/2010/03/04/geomeme-adds-myspace-real-time-local-trends/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 13:10:53 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16105</guid>
		<description><![CDATA[In other news, GeoMeme now measures real-time local trends based on both MySpace and Twitter content. GeoMeme uses the new Real-Time Stream API from MySpace to tap into the flood of geo-located updates being posted by MySpace users all around &#8230; <a href="http://hitching.net/2010/03/04/geomeme-adds-myspace-real-time-local-trends/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In other news, <a href="http://www.geome.me">GeoMeme</a> now measures real-time local trends based on both MySpace and Twitter content.</p>
<p>GeoMeme uses the new <a href="http://developerwiki.myspace.com/index.php?title=Category:Real_Time_Stream">Real-Time Stream API</a> from MySpace to tap into the flood of geo-located updates being posted by MySpace users all around the world.</p>
<p><a href="http://www.geome.me"><img src="http://hitching.net/wp-content/uploads/2010/03/myspace_added.png" /></a></p>
<p>MySpace content is mashed up with tweets from a number of mobile Twitter apps, and located onto a Google Map. Local trends are identified using semantic analysis services from Yahoo. </p>
<p>A couple of example GeoMemes generated by all this real-time geo-located content: <a href="http://www.geome.me/6anMj">Rihanna beats Lady Gaga in New York</a>, and <a href="http://www.geome.me/vL8Cp">Avatar beats Hurt Locker in Los Angeles</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/03/04/geomeme-adds-myspace-real-time-local-trends/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mobile awesomeness, innovation and disruption</title>
		<link>http://hitching.net/2010/03/03/mobile-awesomeness-innovation-and-disruption/</link>
		<comments>http://hitching.net/2010/03/03/mobile-awesomeness-innovation-and-disruption/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 12:20:41 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=16098</guid>
		<description><![CDATA[The good people at MitchelLake recently asked me to write an article about mobile technology. So I created a list of awesomeness, innovation and disruption, including topics such as ‘Mobile is big’, ‘Phones are getting better’, and ‘People pay for &#8230; <a href="http://hitching.net/2010/03/03/mobile-awesomeness-innovation-and-disruption/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="float:left;border:1px solid #CCCCCC;padding:1px;margin-right: 20px;" src="/wp-content/uploads/2010/02/mobile-phone-with-camera-150x150.jpg" />The good people at <a href="http://mitchellake.com">MitchelLake</a> recently asked me to write an article about mobile technology.</p>
<p>So I created a list of awesomeness, innovation and disruption, including topics such as ‘Mobile is big’, ‘Phones are getting better’, and ‘People pay for stuff on their phones’.</p>
<p>Here’s the full article; <a href="http://www.mitchellake.com/news%20item%20details/nitemId/87/catId/2">10 awesome, innovative and disruptive things about mobile</a>.</p>
<p><span id="more-16098"></span></p>
<p>Mobile is an exciting sector to work in. It&#8217;s growing fast, and it&#8217;s being fundamentally disrupted from all sides, by all kinds of awesome innovation.</p>
<p><img style="border:1px solid #CCCCCC;padding:1px;margin-right: 20px;" src="/wp-content/uploads/2010/02/two-people-with-phones-on-head-150x150.jpg" /></p>
<p>Here&#8217;s my current list of awesomeness, innovative and disruption in mobile. If this stuff sounds interesting, you should consider working in mobile. We need your help!</p>
<p><strong>01. Mobile is big</strong></p>
<p>You just won’t believe how vastly, hugely, mind-bogglingly big it is.</p>
<p>The global mobile phone subscriber base is <a title="4.6 billion" href="http://en.wikipedia.org/wiki/Mobile_phone">4.6 billion</a>. By comparison, mankind owns a mere 800 million cars, 1.1 billion PCs and 1.5 billion TV sets.</p>
<p>Mobile phones will become ubiquitous within a few years as manufacturing costs drop as low as US$10 per phone.</p>
<p><img style="border:1px solid #CCCCCC;padding:1px;margin-right: 20px;" src="/wp-content/uploads/2010/02/african-people-mobile-phone-150x150.jpg" /></p>
<p>Mobile internet is already bigger than desktop internet. Over <a title="1 billion people" href="http://www.scribd.com/doc/21365349/Mary-Meeker-s-Internet-Presentation-2009">1 billion people</a> access services using the mobile internet on their phone, more than the number of desktop internet users.</p>
<p><a title="more data" href="http://www.broadband-finder.co.uk/news/broadband/nokia-majority-of-world-accesses-internet-through-a-mobile_19551588.html">More data</a> is consumed on the mobile internet than the desktop internet. Mobile data traffic will grow from 1 petabyte per month to <a title="1 exabyte" href="http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_c11-520862.html">1 exabyte</a> per month in half the time it took fixed data traffic to do so.</p>
<p>And mobile is big business. Mobile data services deliver more than <a title="US$200 billion" href="http://communities-dominate.blogs.com/brands/2009/11/why-mobile-data-services-or-mobile-internet-is-better-than-old-legacy-pc-based-internet.html">US$200 billion</a> of revenue, more than global desktop internet access and internet advertising revenues combined.</p>
<p><strong>02. Phones are getting better</strong></p>
<p>Long after mobile phones become ubiquitous, we will still buy them because of the continual advancement of hardware, battery life and software.</p>
<p>We are buying 1.2 billion new phones every year, gradually upgrading to smartphones (currently there are only 500 million) &amp;/or 3G devices (currently only 1 billion).</p>
<p>At Myriad Group, we write a lot of mobile software to enable high-end smartphone features in lower price-point mobile phones.</p>
<p><strong>03. People pay for stuff on their phones</strong></p>
<p>The huge majority of desktop web users are either unwilling or unable to pay for stuff online.</p>
<p>But on mobile, every subscriber has a billing relationship with a telco, either prepaid or postpaid, that is suitable for micro-payments.</p>
<p>According to <a title="Portio Research" href="http://www.portioresearch.com/resources.html">Portio Research</a>, the market for mobile ringtones, wallpapers, games and other paid mobile content is US$85 billion, bigger that music, Hollywood and videogames combined.</p>
<p><strong>04. App Stores disrupt paid mobile content</strong></p>
<p>Traditionally, most of that revenue from paid mobile content goes to the telcos. However, the telco walled gardens are rapidly crumbling, and thanks to the emergence of the App Stores, revenue from paid mobile content is being redistributed.</p>
<p>By selling apps on iTunes, <a title="Nokia Ovi Store" href="https://store.ovi.com/">Nokia Ovi Store</a> and <a title="Android Market" href="http://www.android.com/market/">Android Market</a>, developers can now expect to keep around 70% of the sale price, with the remainder being shared between the App Store and possibly the telcos</p>
<p>Gartner predicts we will download <a title="4.5 billion" href="http://www.gartner.com/it/page.jsp?id=1282413">4.5 billion</a> apps from various App Stores in 2010, spending US$6.8 billion.</p>
<p>Also disruptive to paid mobile content is <a title="GetJar" href="http://www.getjar.com/">GetJar</a>, the App Store for free J2ME apps, funded by advertising, and currently <a title="bigger than Nokia Ovi Store" href="http://www.gomonews.com/getjar-slams-nokia-claim-to-be-2nd-largest-after-iphone-app-store/">bigger than Nokia Ovi Store</a> and Android Market.</p>
<p><strong>05. Mobile advertising is better</strong></p>
<p>In times or places of information overload, a mobile phone can be an excellent information filtration device.</p>
<p>Mobile phones increasingly know <strong>who</strong> you are (and who your friends are), and <strong>where</strong> you are (even which direction you are looking), meaning that mobile advertising promises to become better targetted than other forms of advertising, including desktop web advertising.</p>
<p>Google recently spent US$750 million on <a title="AdMob" href="http://venturebeat.com/2009/11/09/google-to-buy-mobile-advertising-startup-admob-for-750-million/">AdMob</a>, the biggest mobile ad network.</p>
<p>Personally, I believe that given enough local inventory, mobile advertising will eventually cease to be intrusive and will become useful local information.</p>
<p>Another innovation in this area is <a title="Google Latitude Proximity Alerts" href="http://www.google.com/latitude/apps/history">Google Latitude Proximity Alerts</a>. By recognizing the patterns in your geolocation movements, Google can go beyond the &#8216;who&#8217; and the &#8216;where&#8217; and start to detect the <strong>why</strong>, or your intent, to better target its advertising inventory.</p>
<p>Gartner estimates mobile advertising revenues will leap from US$900 million this year to surpass <a title="US$13 billion by 2013" href="http://www.mediapost.com/publications/?fa=Articles.showArticle&amp;art_aid=112717">US$13 billion by 2013</a>.</p>
<p><strong>06. Push Notifications disrupt SMS and MMS</strong></p>
<p>Over 3 billion people are sending <a title="4 trillion messages" href="http://en.wikipedia.org/wiki/SMS">5 trillion SMS messages</a> per year. SMS is worth US$80 billion to the telcos, and MMS is worth US$27 billion.</p>
<p>Apple&#8217;s <a title="Push Notification Service" href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/WhatAreRemoteNotif/WhatAreRemoteNotif.html">Push Notification Service</a>, launched in 2009, allows an iPhone to receive similar short messages from a server controlled by an app developer. The cost to the sender reduces by a factor of 100, from an average of $0.10 for an SMS, to a few hundred bytes of mobile data, average cost around $0.001.</p>
<p>Why send an expensive SMS when you can send a Facebook message that will be pushed to your iPhone friends?</p>
<p><strong>07. Open source</strong></p>
<p>The mobile operating system, previously a competitive battleground, has recently been commoditized by <a title="Android" href="http://en.wikipedia.org/wiki/Android_%28operating_system%29">Android</a>, the open source mobile platform from Google and its partners, including Myriad Group, in the <a title="Open Handset Alliance" href="http://en.wikipedia.org/wiki/Open_Handset_Alliance">Open Handset Alliance</a>.</p>
<p>Nokia has now also open sourced its Symbian operating system, the most popular on the planet.</p>
<p>Handset manufacturers no longer need to pay a license fee for an operating system; Symbian used to cost about US$4, while Microsoft charges about <a title="US$15" href="http://www.informationweek.com/news/software/open_source/showArticle.jhtml?articleID=208801196">US$15</a> for Windows Mobile, so this represents a significant saving, especially for lower price-point phones.</p>
<p>By not being locked into a closed platform, handset manufacturers and telcos are now able to easily customize mobile phones to suit their brand proposition. This has shifted the competitive battleground to innovation in mobile software and cloud-based services, which will generate a lot of demand for mobile software engineers, and which will <a title="ultimately" href="http://googlepublicpolicy.blogspot.com/2009/12/meaning-of-open.html">ultimately</a> deliver more awesomeness and innovation to the benefit of subscribers.</p>
<p><strong>08. Open contracts</strong></p>
<p>Subscribers can also benefit from the flexibility of not being locked into a two year phone contract.</p>
<p>Since January 2010, subscribers in the US, UK, Hong Kong and Singapore can now choose to buy an unlocked <a title="Nexus One" href="http://www.google.com/phone">Nexus One</a> phone direct from Google rather than subsidized by a telco and locked into a two year contract.</p>
<p>Apple has also announced the iPad as an unlocked device.</p>
<p>This isn’t completely revolutionary. Already in many parts of the world, subscribers buy lower price-point phones directly from manufacturers and switch frequently between telcos competing mainly on voice pricing.</p>
<p>What’s different here is that smartphones consume as much data as <a title="30 lower price-point phones" href="http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_c11-520862.html">30 lower price-point phones</a>, so we should expect mobile data pricing to become more competitive in markets with a high penetration of smartphones.</p>
<p>Elsewhere, the launch of <a title="mobile number portability" href="http://en.wikipedia.org/wiki/Mobile_number_portability">mobile number portability</a> in large markets including China, India and Indonesia will also encourage subscribers to switch and telcos to compete on voice and data pricing.</p>
<p><strong>09. The Facebook Phone</strong></p>
<p>The <a title="INQ Facebook Phone" href="http://www.fiercemobilecontent.com/story/3-unveils-inqs-facebook-phone/2008-11-13">INQ Facebook Phone</a> was launched in 2008 but it wasn&#8217;t a great user experience, IMHO because Facebook wasn&#8217;t deeply integrated into all the places on the phone that it should have been.</p>
<p>Nowadays, Facebook accounts for over <a title="5.5%" href="http://blog.comscore.com/2009/12/facebook_100_million_visitors.html">5.5%</a> of all Internet usage, Facebook Mobile has 100 million monthly active users, and <a title="40%" href="http://www.scribd.com/doc/21365349/Mary-Meeker-s-Internet-Presentation-2009">40%</a> of the UK&#8217;s mobile internet users are using Facebook.</p>
<p>These numbers reveal an emerging market of subscribers who might like to use Facebook as the Address Book and Inbox on their phone, caring more about a decent mobile social networking experience than who manufactures their phone or who is their telco provider.</p>
<p>Facebook works with many handset manufacturers and telcos to distribute their service, so will they have the courage to do <a title="what Google has done" href="http://www.rethink-wireless.com/2010/01/06/nexus-one-ordinary-phone-disruptive-business-model.htm">what Google has done</a> with the Nexus One and launch a phone to compete with those channels? You bet! I would expect Facebook to launch a phone within the next couple of years, probably built on Android, further disrupting both the handset manufacturers and the telcos.</p>
<p>Aligned with this prediction is the interesting fact that Facebook still does not expose friend phone numbers through its API, despite that being the most requested feature by third party developers. We should expect the Facebook Phone to leverage this data as an exclusive differentiator.</p>
<p><strong>0A. Mobile Maps disrupts GPS navigation</strong></p>
<p>There turned out to be more than ten things, so let&#8217;s continue the list in hexadecimal.</p>
<p><a title="60%" href="http://www.scribd.com/doc/21365349/Mary-Meeker-s-Internet-Presentation-2009">60%</a> of the 421 million GPS chips sold in 2009 were put inside a mobile phone.</p>
<p>Google Maps Navigation is a killer mobile app with <a title="lots more features" href="http://www.google.com/mobile/navigation">lots more features</a> than the standalone GPS devices sold by TomTom and Garmin. And it&#8217;s free.</p>
<p>On 28 October 2009, the day when Google announced the app, TomTom&#8217;s <a href="http://online.wsj.com/article/SB10001424052748703574604574501532799439254.html" target="new">share price fell</a> 20% and Garmin&#8217;s dropped 16%.</p>
<p>Recently Nokia (which has invested heavily in geo, including its US$8 billion acquisition of Navteq) announced free voice navigation for its GPS smartphones, resulting in an 11% drop in the share price of TomTom, and a 5.5% drop in the share price of Garmin.</p>
<p>If you are still holding shares in TomTom or Garmin, be aware that Apple is also expected to launch free maps navigation.</p>
<p><strong>0B. VoIP disrupts voice</strong></p>
<p>Apple and AT&amp;T have recently allowed iPhone VoIP calls to be placed over a 3G network connection, dramatically reducing the cost of voice calls, particularly long distance calls.</p>
<p>Previously this was only available over a Wi-Fi connection.</p>
<p><a title="Fring" href="http://www.fring.com/blog/?p=1983">Fring</a> was first to launch its iPhone 3G VoIP app. <a title="Skype" href="http://www.skype.com/download/skype/iphone/">Skype</a> is expected to follow in spades. And might it be a possibility that Facebook becomes a new entrant in the VoIP market?</p>
<p>And it&#8217;s not limited to the iPhone. Any phone with a data connection can potentially make VoIP calls if the telco is willing and able to support it over their data network. It will be interesting to watch how many telcos like AT&amp;T are willing to cannibalize their own voice revenue in this way, and how they will re-shape their voice/data plans to align with this.</p>
<p><strong>0C. Mobile web apps or native apps?</strong></p>
<p>Native apps are great because they currently offer the deepest integration to the full capability of the phone, for example using device APIs to access Contacts, the Camera Roll, an Accelerometer, or the GPS chip.</p>
<p>On the other hand, emerging HTML5-based mobile browsers are aiming to standardise integration to such device APIs, starting with geolocation APIs; meaning that location-aware mobile web apps are now becoming viable.</p>
<p>The deciding factor for me choosing to build a mobile web app for <a title="GeoMeme" href="http://www.geome.me/">GeoMeme</a> rather than a native app was development speed. A mobile web app enjoys far greater code re-use from the desktop web version, and it is possible to push regular updates and improvements to users, without having to wait for iTunes approval or for users to upgrade.</p>
<p>Looking at recent <a title="evidence" href="http://www.readwriteweb.com/archives/mobile_app_or_browser-based_site.php">evidence</a>, mobile web apps are becoming more prevalent than native apps for mobile social applications, shopping and services, while native apps remain preferred for mobile games and entertainment.</p>
<p>It all comes down to the economics of mobile software development and the App Stores. For free apps, including all those funded by mobile advertising, while mobile browsers continue to advance with HTML5, reducing development costs will increasingly outweigh the marginal benefits of native apps. For paid apps, mostly games and entertainment, native apps will survive while the App Stores remain the only way for app developers to make money.</p>
<p><strong>0D. Google Voice disrupts voicemail</strong></p>
<p><a title="Google Voice" href="http://www.google.com/voice/">Google Voice</a> isn&#8217;t VoIP, but it&#8217;s still highly disruptive to telcos.</p>
<p>Innovative features include free voicemail transcription and visual voicemail, free SMS, cheap long-distance calls, and (very useful) call forwarding to multiple phones.</p>
<p>Apple <a title="controversially" href="http://www.tipb.com/2009/08/22/apple-afraid-google-iphone/">controversially</a> un-approved the Google Voice iPhone app, possibly under pressure from AT&amp;T who were <a title="reportedly" href="http://www.techcrunch.com/2009/07/27/apple-is-growing-rotten-to-the-core-and-its-likely-atts-fault/">reportedly</a> a little bit fed up with all this disruption.</p>
<p>Google has since <a title="released" href="http://googlemobile.blogspot.com/2010/01/google-voice-comes-to-iphone-and-palm.html">released</a> Voice as a mobile web app instead of a native app, thus bypassing the iTunes approval process. Touché! The only restriction I can see with the web app is that contacts from your iPhone need to by synced via GMail, because the iPhone Safari browser does not support the <a title="HTML5 Contacts API" href="http://www.w3.org/TR/contacts-api/">HTML5 Contacts API</a>, yet.</p>
<p><strong>0E. Dumb pipe or smart pipe?</strong></p>
<p>One of the common threads here is that telcos are getting a rough deal at the moment, disrupted from all sides.</p>
<p>But the telcos are also busy innovating, adding value to mobile services to become a <a title="smart pipe" href="http://en.wikipedia.org/wiki/Smart_pipe">smart pipe</a> rather than a <a title="dumb pipe" href="http://en.wikipedia.org/wiki/Dumb_pipe">dumb pipe</a>.</p>
<p><a title="Vodafone" href="http://www.vodafone.com/start/media_relations/news/group_press_releases/2009/mobile_internet_experience.html">Vodafone</a> and <a title="Telstra" href="http://www.theaustralian.com.au/australian-it/exec-tech/apps-store-for-telstra/story-e6frgazf-1111118940642">Telstra</a> are among the telcos who have announced App Stores, to leverage their existing billing relationships with subscribers.</p>
<p>And besides plugging an App Store into their billing systems, telcos can also fight back by providing access to their other network infrastructure and information, including subscriber geolocation.</p>
<p>Geolocation can be calculated by telcos even for lower price-point phones without a GPS chip, using triangulation of base station data. Exposing this geolocation data for app developers to build location-based services is a great opportunity for telcos, but also needs to be carefully controlled to avoid privacy abuses.</p>
<p>Another example: at <a title="Xumii" href="http://www.myriadgroup.com/Mobile-Operators/Xumii%20Social%20Networking.aspx">Xumii</a> our Social Stream product allows telcos to play a unique and valuable role in mobile social networking. Push notifications are sent to ordinary mobile phones using telco SMS capacity, and telco authentication systems are used to provide zero-click sign-in to all your social updates from multiple social networks including Facebook, Twitter, MySpace and Flickr.</p>
<p><strong>0F. Hard bloody work</strong></p>
<p>To all the technologists and engineers still reading this; building mobile technology is hard bloody work.</p>
<p>Getting software to run in a tiny memory footprint, with a slow CPU and constrained user interface, then getting the same software to work on 100 other devices, and then on an unreliable telco data connection, forces you to build efficient and elegant and innovative solutions. This is awesome, and mobile is a good place to work if you agree.</p>
<p><strong>10. And there&#8217;s more&#8230;</strong></p>
<p>Finally, check out <a title="WiMax" href="http://www.wimax.com/education">WiMax</a>, <a title="Augmented Reality" href="http://video.google.com/videosearch?q=augmented+reality">Augmented Reality</a>, <a title="Google Goggles" href="http://www.google.com/mobile/goggles/#landmark">Google Goggles</a>, and <a title="Foursquare" href="http://foursquare.com/">Foursquare</a> for more mobile awesomeness, innovation and disruption.</p>
<p>I hope this list has been of interest to those outside of mobile wondering what all the fuss is about.</p>
<p>To those already working in mobile, yes I know this list is incomplete, and biased by my own interests in mobile + geo + social, so let&#8217;s discuss what&#8217;s missing in the comments or via <a title="@hitching" href="http://twitter.com/hitching">@hitching</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2010/03/03/mobile-awesomeness-innovation-and-disruption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Murdoch should worry less about the Googlebot and more about social media</title>
		<link>http://hitching.net/2009/11/14/murdoch-should-worry-less-about-the-googlebot-and-more-about-social-media/</link>
		<comments>http://hitching.net/2009/11/14/murdoch-should-worry-less-about-the-googlebot-and-more-about-social-media/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 13:30:10 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[aol]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[friendfeed]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google social search]]></category>
		<category><![CDATA[googlebot]]></category>
		<category><![CDATA[murdoch]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[retweet]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=15992</guid>
		<description><![CDATA[I remember in January 2000, old media mogul Rupert Murdoch said he was not going to waste his money buying any &#8216;dotcom&#8217; upstarts. The very next day, AOL bought Time Warner. Not the other way around! Murdoch had apparently failed &#8230; <a href="http://hitching.net/2009/11/14/murdoch-should-worry-less-about-the-googlebot-and-more-about-social-media/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I remember in January 2000, old media mogul Rupert Murdoch<span id="li_news" style="margin-left:2px"></span> said he was not going to waste his money buying any &#8216;dotcom&#8217; upstarts. The very next day, AOL<span id="li_aol" style="margin-left:2px"></span> <a href="http://news.bbc.co.uk/2/hi/business/597169.stm">bought</a> Time Warner<span id="li_time" style="margin-left:2px"></span>. <strong>Not the other way around!</strong></p>
<p>Murdoch had apparently failed to grasp the significance of the interwebs.</p>
<p>However, ten years later Time Warner has regained its mojo and is now trying to <a href="http://www.techcrunch.com/2009/11/12/cleaning-house-before-its-ipo-will-cost-aol-200-million-and-up-to-1000-jobs/">offload</a> a spent and jaded AOL. Did Murdoch get it wrong ten years ago, or did it simply take a whole decade for him to be proven right?</p>
<p>In 2009, the mob is rushing once again to the conclusion that Murdoch is losing his marbles, planning to charge for his online content and blocking the Googlebot from <a href="http://www.youtube.com/watch?v=M7GkJqRv3BI">stealing</a> it.</p>
<p>Personally I believe that Murdoch should worry less about the Googlebot, and more about how social media is turning his industry on its head.</p>
<p>The problem is that all of those dotcom upstarts have brought us information overload. There has been an exponential increase in the amount of information and content available to us, way beyond the capacity of the human brain to process.</p>
<p>The solution is social media, which empowers us to easily share the content we care about with our friends and contacts, and adds valuable metadata to that shared content, such as Likes or Retweet counts. This metadata helps us filter the signal from the noise, so that we can focus on just the best quality content from our trusted circle of friends.</p>
<p>This works great for movie reviews. People have always listened to the advice of friends when it comes to choosing what movie to watch. Social media simply provides an efficient and scalable way to do this.</p>
<p>The best example of this social filter is currently <a href="http://friendfeed.com">FriendFeed</a><span id="li_ff" style="margin-left:2px"></span>, although we can expect to soon see something <a href="http://www.youtube.com/watch?v=vUmmvIN4-GU">equally impressive</a> on Facebook<span id="li_fb" style="margin-left:2px"></span>. Twitter<span id="li_tw" style="margin-left:2px"></span> Search could do this even better if only it were possible to search the entire tweet history of just your friends, or a chosen social distance into your social graph, rather then merely search 7 days of the public timeline. I am hoping that the <a href="http://googleblog.blogspot.com/2009/10/introducing-google-social-search-i.html">Google Social Search Experiment</a> will enable this sort of social filter when Google<span id="li_goog" style="margin-left:2px"></span> completes its <a href="http://blog.twitter.com/2009/10/google-nice.html">Twitter integration</a>.<em><br />
</em></p>
<p>Back to Mr. Murdoch&#8230; Social media also works for the filtering of news content, however it&#8217;s more tricky than movie reviews because there is a need for trustworthy fact rather than mere opinion. This is why Eric Schmidt believes that figuring out how to rank real-time social content, perhaps based on a reliable measure of <a href="../2009/01/07/whats-the-difference-between-user-generated-content-and-user-generated-rubbish-comments-please/">reputation and authority</a>, is &#8220;<a href="http://www.readwriteweb.com/archives/google_web_in_five_years.php">the great challenge of the age</a>&#8220;. It also explains why Twitter&#8217;s <a href="http://evhead.com/2009/11/why-retweet-works-way-it-does.html">Retweet</a> feature does not allow the original tweet to be modified, because this makes the Retweet count a more reliable indicator of authority.</p>
<p>So my advice to Rupert Murdoch and other media companies struggling with this; worry less about the Googlebot and more about social media. Focus on improving the quality of your content, so that people share it with their friends.</p>
<p>And if your own social media strategy is not delivering any tangible benefits, try moving it from your Marketing department to your Customer Service department. Use social media to listen more carefully to the needs of your customers, so you can improve the quality of your content to the point where a paid online content model becomes viable.</p>
<p>If Marketing and Customer Service argue about who owns the customer relationship, remind them both that thanks to social media it&#8217;s actually <span style="text-decoration: underline;">the customer</span> who owns and controls the relationship with your business. <strong>Not the other way around!</strong><br />
<script src="http://www.linkedin.com/companyInsider?script&#038;useBorder=yes" type="text/javascript"></script><br />
<script type="text/javascript">
new LinkedIn.CompanyInsiderPopup("li_news","News");
new LinkedIn.CompanyInsiderPopup("li_aol","AOL");
new LinkedIn.CompanyInsiderPopup("li_time","Time Warner");
new LinkedIn.CompanyInsiderPopup("li_goog","Google");
new LinkedIn.CompanyInsiderPopup("li_tw","Twitter");
new LinkedIn.CompanyInsiderPopup("li_ff","Friendfeed");
new LinkedIn.CompanyInsiderPopup("li_fb","Facebook");
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2009/11/14/murdoch-should-worry-less-about-the-googlebot-and-more-about-social-media/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenAustralia Hackfest: &#8216;Mobile + Geo + Social&#8217; slides</title>
		<link>http://hitching.net/2009/11/11/openaustralia-hackfest-mobile-geo-social-slides/</link>
		<comments>http://hitching.net/2009/11/11/openaustralia-hackfest-mobile-geo-social-slides/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 10:44:48 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[gov2.0]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[openaustralia]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=15951</guid>
		<description><![CDATA[I popped into the OpenAustralia Hackfest at the weekend to learn and talk about some of the latest developments in the Gov2.0 revolution. There are now some quite interesting public datasets available, and the developer community is hard at work &#8230; <a href="http://hitching.net/2009/11/11/openaustralia-hackfest-mobile-geo-social-slides/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I popped into the <a href="http://hackfest.openaustralia.org/">OpenAustralia Hackfest</a> at the weekend to learn and talk about some of the latest developments in the Gov2.0 revolution.</p>
<p>There are now some quite interesting public <a href="http://data.australia.gov.au/">datasets</a> available, and the developer community is hard at work turning this data into useful APIs, and building innovative applications to consume the data.</p>
<p>Some of the notable apps to emerge from OpenAustralia include:</p>
<ul>
<li><a href="http://its-buggered-mate.apps.lpmodules.com/">It&#8217;s Buggered, Mate</a> &#8211; from the Canberra Hackfest, a geo app to crowdsource the reporting of broken public infrastructure.</li>
<li><a href="http://www.suburbmatchmaker.com.au/lgabrowser?">Suburb Matchmaker</a> &#8211; the winner of the Sydney Hackfest, a tool to help you find your ideal suburb to live in.</li>
<li><a href="http://fridgemate.creativepossums.net/">FridgeMate</a> &#8211; currently winning the MashupAustralia contest and only a couple of days away from the $10,000 prize. FridgeMate lets you assemble a map of local public amenities to stick on your fridge door. My advice to the Creative Possums behind FridgeMate would be to look at using the <a href="http://www.zazzle.com/magnets">Zazzle API</a> so people could buy the actual fridge magnet.</li>
</ul>
<p>My own presentation focussed on some mobile, geo and social technologies to create location-aware mobile mashups to share OpenGov content with friends on Twitter, friends on Facebook, and *real* friends on a t-shirt. Here&#8217;s the <a href="http://bit.ly/oahack_mgs">deck</a>:</p>
<p><iframe src="http://docs.google.com/present/embed?id=dfs3s34c_58hdnhg5dh" frameborder="0" width="410" height="342"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2009/11/11/openaustralia-hackfest-mobile-geo-social-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Location-aware mobile web apps using Google Maps v3 + geolocation</title>
		<link>http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/</link>
		<comments>http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 09:40:27 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[lbs]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=15909</guid>
		<description><![CDATA[When hiring Engineers, I always look for evidence of pet projects, so recently I thought it was fair to create one of my own: GeoMeme, the fun way to measure and share real-time local twitter trends. Visitors to GeoMeme choose &#8230; <a href="http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When hiring Engineers, I always look for evidence of pet projects, so recently I thought it was fair to create one of my own: <a href="http://www.geome.me/">GeoMeme</a>, the fun way to measure and share real-time local twitter trends.</p>
<p>Visitors to GeoMeme choose a location on the map, and two search terms to compare. GeoMeme then measures and compares the number of matching tweets within the bounds of the map, based on public data from a number of mobile twitter apps.</p>
<p>As an example, GeoMeme can work out that <a href="http://www.geome.me/bGPjK">&#8216;love&#8217; beats &#8216;hate&#8217; in Manhattan</a>:</p>
<p><a href="http://www.geome.me/bGPjK"><img style="border: 1px solid #cccccc;padding:1px;" src="http://hitching.net/wp-content/uploads/2009/11/i_320x356-269x300.png" /></a></p>
<p><a href="http://www.geome.me/">GeoMeme</a> is a desktop web application and also a location-aware mobile web app for iPhone and Android phones. </p>
<p>Implementing the mobile version of GeoMeme as a web app has some advantages and disadvantages, compared to building native iPhone &#038;/or Android applications.</p>
<p>Native apps are great because they currently offer the deepest integration to the full capability of the phone, for example using device APIs to access Contacts, the Camera Roll, an Accelerometer, or the GPS chip. For some applications, this deep device integration is essential and so a native application is beneficial.</p>
<p>On the other hand, emerging HTML5-based mobile browsers are aiming to standardise integration to such device APIs, starting with Geolocation APIs; meaning that location-aware mobile web apps are now becoming viable. Aligned with this development is the new version of the Google Maps API. v3 has been greatly simplified since v2, and is now optimized for use on mobile phones. Less is more.</p>
<p>The deciding factor for me choosing to build a mobile web app for GeoMeme rather than a native app was development speed. A mobile web app enjoys far greater code re-use from the desktop web version, and it is possible to push regular updates and improvements to users, without having to wait for appstore approval or for users to upgrade.</p>
<p>I believe this need for development speed is common among a good proportion of mobile apps that are still in &#8216;rapid iteration&#8217; or &#8216;release early, release often&#8217; mode, so this post is intended to share some of the techniques used in GeoMeme with developers wanting to build their own location-aware mobile web apps.</p>
<p>Let&#8217;s build an example location-aware mobile web app called &#8216;Here I Am!&#8217;, for the photographically challenged. The app will present some local photographs (from Panoramio) which can be shared with friends on Twitter or Facebook.</p>
<h3>Where on earth is that mobile phone..?</h3>
<p>The first job of a location-aware mobile app is to work out where on earth the mobile phone currently is. Unfortunately, at the time of writing, there is still no universally reliable and accurate solution for a mobile web app to detect the location of the mobile phone it is running on. However the following partial solutions can be combined to good effect:</p>
<p><span id="more-15909"></span></p>
<h4>a) Google Loader</h4>
<p>Load the Google Maps v3 API using <a href="http://code.google.com/apis/ajax/documentation/#AutoLoading">Google Loader</a>:</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi?key=YOUR_API_KEY&amp;autoload=%7Bmodules%3A%5B%7Bname%3A%22maps%22%2Cversion%3A3%2Cother_params%3A%22sensor%3Dtrue%22%7D%5D%7D&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
google.setOnLoadCallback(function() {
    // initialize the mobile map...
});
&lt;/script&gt;
</pre>
<p>Google Loader requires developers to sign up for an API key, however the advantage of this approach is that the <a href="http://code.google.com/apis/ajax/documentation/#ClientLocation">approximate location</a> of the user is revealed, based on network IP address.</p>
<p>In the case of a mobile phone user, this network IP address often refers to the mobile operator&#8217;s internet gateway, which can be shared between a large number of subscribers spread over an entire country. This technique becomes more accurate for mobile phones which are connected to the internet via wi-fi rather than GPRS, or becomes less accurate for some phones (e.g. Blackberry) which can connect to the internet via international proxy servers.</p>
<p>Generally, this technique can be successful in working out which country the user is in, but cannot be assumed to be any more accurate than that.</p>
<p>Some example javascript to locate a map based on Google Loader:</p>
<pre class="brush: jscript;">
if (typeof(google.loader.ClientLocation) != 'undefined') {
	var lat = google.loader.ClientLocation.latitude;
	var lng = google.loader.ClientLocation.longitude;
	var position = new google.maps.LatLng(lat, lng);
	map.setOptions({
		center: position,
		zoom: 10
	});
}
</pre>
<h4>b) W3C Geolocation API</h4>
<p>The World Wide Web Consortium (W3C) has been working since 2008 to standardise web <a href="http://dev.w3.org/geo/api/spec-source.html">geolocation APIs</a>.</p>
<p>Mobile Safari on iPhone (since OS3.0) already supports the emerging W3C standard, to expose location information derived from its GPS chip. The new Chrome mobile browser on Android (from 2.0 Eclair) will also support this standard. For example:</p>
<pre class="brush: jscript;">
if (typeof(navigator.geolocation) != 'undefined') {
	navigator.geolocation.getCurrentPosition(function(position) {
		var lat = position.coords.latitude;
		var lng = position.coords.longitude;
		var position = new google.maps.LatLng(lat, lng);
		map.setOptions({
			center: position,
			zoom: 15
		});
	});
}
</pre>
<p>The W3C Geolocation API looks likely to feature as part of HTML5 (the next major revision of HTML), and will also be supported by the next generation of Webkit-based mobile browsers, so expect this technique to start working on an increasing proportion of new mobile phones.</p>
<h4>c) Google Gears for Mobile</h4>
<p>Gears adds a number of HTML5 features, including a Geolocation API, to legacy web browsers. Although it is possible for Windows IE Mobile and Mobile Opera browsers to become location-aware in this way, the bigger opportunity here is that Android phones (from version 1.0 through 1.6) come with Gears already pre-installed. This means that we can detect the location of these Android phones with the following javascript:</p>
<pre class="brush: jscript;">
if (typeof(google.gears) != 'undefined') {
	var geo = google.gears.factory.create('beta.geolocation');
	geo.getCurrentPosition(function(position) {
		var lat = position.latitude;
		var lng = position.longitude;
		var position = new google.maps.LatLng(lat, lng);
		map.setOptions({
			center: position,
			zoom: 15
		});
	});
}
</pre>
<p>Google Gears for Mobile works out the location of a mobile phone from the GPS chip in the phone, or by <a href="http://googlemobile.blogspot.com/2008/06/google-enables-location-aware.html">crowdsourcing</a> the location of the cell-tower to which the mobile phone is connected.</p>
<h3>&#8230; and fetch me some location-based content, fast!</h3>
<p>Once your mobile web app is location-aware, the next thing to do is to retrieve some relevant content, based on current location. <a href="http://www.geome.me/">GeoMeme</a> retrieves local tweets using the Twitter API, but for &#8216;Here I Am!&#8217; we&#8217;ll retrieve local photos from Panoramio (see <a href="http://www.panoramio.com/api/">http://www.panoramio.com/api/</a> for details of the API).</p>
<p>Google Maps v3 API includes a convenient new &#8216;idle&#8217; event which is fired when the map becomes idle after panning or zooming, or after automatic geo-location using the techniques above. By listening for this event, we can fetch the most popular local photos from Panoramio whenever the map is moved. For example:</p>
<pre class="brush: jscript;">
google.maps.event.addListener(map, 'idle', function() {
    loadPhotos();
});

function loadPhotos() {
    var url = 'http://www.panoramio.com/map/get_panoramas.php?order=popularity&amp;set=public&amp;from=0&amp;to=20&amp;size=mini_square&amp;callback=addPhotos';
    var bounds = map.getBounds();
    url += '&amp;minx=' + bounds.getSouthWest().lng().toFixed(6) + '&amp;miny=' + bounds.getSouthWest().lat().toFixed(6);
    url += '&amp;maxx=' + bounds.getNorthEast().lng().toFixed(6) + '&amp;maxy=' + bounds.getNorthEast().lat().toFixed(6);
    url += '&amp;ts=' + new Date().getTime(); // prevent caching

    // use JSONP to retrieve photo data
    // and trigger a callback to addPhotos()
    var script = document.createElement(&quot;script&quot;);
    script.setAttribute(&quot;src&quot;, url);
    script.setAttribute(&quot;type&quot;, &quot;text/javascript&quot;);
    document.body.appendChild(script);
}
</pre>
<p>The above code sends the resulting JSON data to the <span style="font-family: Courier New;">addPhotos()</span> callback function, which handles the display of the photos on the map using <a href="http://code.google.com/apis/maps/documentation/v3/overlays.html#SimpleIcons">Icons</a>, another new feature of Google Maps v3 API.</p>
<p>For speed, we also implement a performance optimization here. Existing Icons are re-used, rather than simply removing and adding new Icons each time the map is relocated:</p>
<pre class="brush: jscript;">
var markers = {};

function addPhotos(data) {
	var new_markers = {};

	for (var i = 0; i &amp;amp;lt; data.photos.length; i++) {
		var photo = data.photos[i];

		// for speed and to reduce flicker,
		// reuse existing markers rather than removing and re-adding
		if (photo.photo_id in markers) {
			new_markers[photo.photo_id] = markers[photo.photo_id];
		} else {
			// create new marker
			marker = new google.maps.Marker({
				position: new google.maps.LatLng(photo.latitude, photo.longitude),
				icon: photo.photo_file_url,
				map: map
			});
			new_markers[photo.photo_id] = marker;
		}
	}

	// remove old markers
	for (var photo_id in markers) {
		if (!(photo_id in new_markers)) {
			markers[photo_id].setMap(null);
			delete markers[photo_id];
		}
	}

	markers = new_markers;
}
</pre>
<h2>&#8216;Here I Am!&#8217; &#8211; a simple location-aware mobile web application</h2>
<p>The final part of &#8216;Here I Am!&#8217; is a feature to share one of the Panoramio photos to friends on Twitter or Facebook. This is done using ordinary web links to Twitter and Facebook share pages. No complex platform integration is required for web apps to do this because, as they say, &#8220;the web is the platform.&#8221; Simply click on a photo on the map and follow the prompts.</p>
<p>Visit <a href="http://j.mp/lbsdemo">http://j.mp/lbsdemo</a> on your mobile phone to try out &#8216;Here I Am!&#8217;</p>
<p><iframe src="http://lbs-postcard.googlecode.com/svn/trunk/hero_frame.html" width="250" height="500" frameborder="0"><br />
<a href="http://lbs-postcard.googlecode.com/svn/trunk/hero_frame.html"><img src="http://lbs-postcard.googlecode.com/svn/trunk/hero_hereiam.png" /></a></iframe></p>
<p>The full source code of &#8216;Here I Am!&#8217; (weighing in at just under 8Kb) can be located <a href="http://code.google.com/p/lbs-postcard/">here</a>.</p>
<p>The app has been tested to work on iPhone, iPod Touch, Android, and Symbian Series 60 (which remains &#8211; for now at least &#8211; the dominant device family for mobile data consumption).</p>
<p>I hope you enjoy using some of these ideas in your own location-aware mobile web apps.</p>
<p><em>This post is one of a <a href="http://googlegeodevelopers.blogspot.com/2009/11/geolocation-mobile-web-apps-geo.html">series</a> that aims to share some of the technology innovation that can be found in <a href="http://www.geome.me/">GeoMeme</a>. Other posts cover topics such as using Google App Engine for <a href="http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/">scalable and fast hosting</a> of your location-based content, and <a href="http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/">fast map re-location</a> using Google Static Maps v2.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Scalable, fast, accurate geo apps using Google App Engine + geohash + faultline correction</title>
		<link>http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/</link>
		<comments>http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 01:00:00 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geohash]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=15953</guid>
		<description><![CDATA[GeoMeme is a web app (and also a mobile web app for iPhone and Android) that I recently developed as a pet project. It measures real-time local twitter trends. Visitors to GeoMeme choose a location on the map, and two &#8230; <a href="http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geome.me/">GeoMeme</a> is a web app (and also a mobile web app for iPhone and Android) that I recently developed as a pet project. It measures real-time local twitter trends. </p>
<p>Visitors to GeoMeme choose a location on the map, and two search terms to compare. GeoMeme then measures and compares the number of matching tweets within the bounds of the map, based on public data from a number of mobile twitter apps.</p>
<p>As an example, GeoMeme can work out that <a href="http://www.geome.me/VrIXq"> <img src='http://hitching.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  beats <img src='http://hitching.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  in San Francisco</a>:</p>
<p><a href="http://www.geome.me/VrIXq"><img src="http://hitching.net/wp-content/uploads/2009/11/w_screenshot-291x300.png" /></a></p>
<p>A large amount of geo-data is generated by GeoMeme, and so arises a need shared by many geo apps: scalable, fast, and accurate spatial queries, used to select a subset of geo-data for display as markers on a <a href="http://www.geome.me/">map</a>, or on <a href="http://earth.geome.me/">Google Earth</a>.</p>
<h3><img style="width: 21px; height: 34px; float: left; margin-left: 0pt; margin-right: 1em;" src="http://chart.apis.google.com/chart?chst=d_map_pin_letter&#038;chld=:)|FF0000|000000" alt=":)" />Google App Engine</h3>
<p><a href="http://appengine.google.com/">Google App Engine</a> is an obvious choice for hosting your geo app. The App Engine datastore is built on top of Google&#8217;s BigTable technology which scales very well, and is optimized for fast data retrieval. And it doesn&#8217;t cost the earth like some traditional GIS database solutions.</p>
<h3><img style="width: 21px; height: 34px; float: left; margin-left: 0pt; margin-right: 1em;" src="http://chart.apis.google.com/chart?chst=d_map_pin_letter&#038;chld=:(|FF0000|000000" alt=":(" /> Inequality constraint</h3>
<p>If you are coming from a background of relational databases, you might think the solution here would be to store the latitude and longitude of all your markers in a database table, and do a simple query to retrieve only those contained within the bounds of the map.</p>
<p>However, the flipside of being optimized for fast data retrieval is that BigTable only allows inequality filters on a single dimension, to avoid the burden of full table scans. For example, the following form of spatial query is not supported because it specifies inequality filters on both latitude and longitude dimensions:</p>
<p><span id="more-15953"></span></p>
<pre class="brush: python;">
SELECT latitude, longitude, title FROM myMarkers
WHERE latitude &gt;= :south AND latitude &lt;= :north
  AND longitude &gt;= :west AND longitude &lt;= :east

&gt;&gt;&gt; BadFilterError: invalid filter: Only one property per query may have inequality filters
</pre>
<h3><img style="width: 21px; height: 34px; float: left; margin-left: 0pt; margin-right: 1em;" src="http://chart.apis.google.com/chart?chst=d_map_pin_letter&#038;chld=:)|FF0000|000000" alt=":)" /> Geohash to the rescue</h3>
<p>Fortunately, there is an answer to this: <strong>geohash</strong>, the geocoding system invented by Gustavo Niemeyer.</p>
<p>My suspicion is that Niemeyer has travelled back in time after working out how to collapse two-dimensional space into a single dimension, but you might want to read the Wikipedia explanation of <a href="http://en.wikipedia.org/wiki/Geohash">the algorithm</a> instead.</p>
<p>An example: the location of the Sydney Opera House can be specified in two dimensions as {latitude: -33.858, longitude: 151.215}, or in a single dimension as {geohash: <a href="http://geohash.org/r3gx2ur29zzg7">r3gx2ur29zzg7</a>}.</p>
<p>Schuyler Erle has written an open source geohash <a href="http://mappinghacks.com/code/geohash.py.txt">python module</a>, which enables the following form of spatial query on Google App Engine, because the inequality filter is specified only on a single dimension:</p>
<pre class="brush: python;">
sw_geohash = Geohash((west, south))
ne_geohash = Geohash((east, north))

SELECT latitude, longitude, title FROM myMarkers
WHERE geohash &gt;= :sw_geohash AND geohash &lt;= :ne_geohash
</pre>
<h3><img style="width: 21px; height: 34px; float: left; margin-left: 0pt; margin-right: 1em;" src="http://chart.apis.google.com/chart?chst=d_map_pin_letter&#038;chld=;(|FF0000|000000" alt=";(" />Don&#8217;t hash me, coz I&#8217;m close to the edge</h3>
<p>However&#8230;! We&#8217;re not done yet, because an artifact of the geohash algorithm is that queries like the one above can often return rogue markers which are outside of the required bounds, when the map spans what we shall call a geohash &#8220;faultline&#8221;.</p>
<p>This problem is particularly evident near the equator and the Greenwich Meridian, which are the biggest faultlines, but there are actually faultlines all over the place at every zoom level.</p>
<h3><img style="width: 21px; height: 34px; float: left; margin-left: 0pt; margin-right: 1em;" src="http://chart.apis.google.com/chart?chst=d_map_pin_letter&#038;chld=:D|FF0000|000000" alt=":D" />Faultline correction</h3>
<p>GeoMeme solves this problem using &#8220;faultline correction&#8221;, an approach that I would like to share here:</p>
<ul>
<li>If a spatial query is vulnerable to faultlines, it is split into multiple sub-queries that do not cross the faultline.</li>
<li>Sub-query limits are approximately weighted according to their relative size.</li>
<li>Sub-queries are executed in parallel, taking advantage of BigTable&#8217;s distributed goodness, and the results combined, so all this happens very fast.</li>
<li>Even though the sub-queries are executed in parallel without any significant impact on user experience, App Engine CPU costs can increase to around 2x the CPU cost of a single less accurate query. Sub-query results are memcached to reduce this CPU overhead.</li>
</ul>
<p>Here&#8217;s a demo showing the effect of geohash faultlines, and the relative accuracy of spatial queries with or without faultline correction. Rogue markers are shown in the area surrounding the map. Switch between Correction: off / on / double and compare the accuracy.</p>
<p><iframe src="http://geohash-fcdemo.appspot.com/" width="600" height="450" frameborder="0"><br />
<a href="http://geohash-fcdemo.appspot.com/"><img src="http://geohash-fcdemo.googlecode.com/svn/trunk/screenshot.png" /></a></iframe></p>
<p>Note: &#8220;double&#8221; correction is an advanced option which splits the sub-queries into sub-sub-queries so that they do not cross any faultlines either. This can further increase accuracy, but with further CPU cost (up to 8x the CPU cost of a single less accurate query).</p>
<p>All the source code can be found <a href="http://code.google.com/p/geohash-fcdemo/">here</a>, including ffGeoSearch, a python module to handle faultline-friendly geo search, if you want to use this technique on your own geo app.</p>
<p>Enjoy!</p>
<p><em>This post is one of a <a href="http://googlegeodevelopers.blogspot.com/2009/11/geolocation-mobile-web-apps-geo.html">series</a> that aims to share some of the technology innovation that can be found in <a href="http://www.geome.me/">GeoMeme</a>. Other posts cover topics such as <a href="http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/">fast map re-location</a> using Google Static Maps v2, and <a href="http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/">location-aware mobile web apps</a> using Google Maps v3.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Fast map re-location using Google Static Maps v2 + geocoder</title>
		<link>http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/</link>
		<comments>http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 01:00:00 +0000</pubDate>
		<dc:creator>bob hitching</dc:creator>
				<category><![CDATA[mobile geo social]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[geo-autocomplete]]></category>
		<category><![CDATA[geocode]]></category>
		<category><![CDATA[geomeme]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[static maps]]></category>

		<guid isPermaLink="false">http://hitching.net/?p=15938</guid>
		<description><![CDATA[GeoMeme is a pet project of mine. It&#8217;s a web app, and also a mobile web app for iPhone and Android, that measures real-time local twitter trends. Visitors to GeoMeme choose a location on the map, and two search terms &#8230; <a href="http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geome.me/">GeoMeme</a> is a pet project of mine. It&#8217;s a web app, and also a mobile web app for iPhone and Android, that measures real-time local twitter trends.</p>
<p>Visitors to GeoMeme choose a location on the map, and two search terms to compare. GeoMeme then measures and compares the number of matching tweets within the bounds of the map, based on public data from a number of mobile twitter apps.</p>
<p>As an example, GeoMeme can work out that <a href="http://www.geome.me/Rebr1">&#8216;District 9&#8242; beats &#8216;Inglorious Basterds&#8217; in Manhattan</a>.</p>
<p>As well as offering users the normal pan and zoom controls to move the map around, GeoMeme also introduces an innovative geo-autocomplete control which is powered by the geocoder service from <a href="http://code.google.com/apis/maps/documentation/v3/">Google Maps v3 API</a> and the new <a href="http://code.google.com/apis/maps/documentation/staticmaps/">Static Maps v2 API</a>.</p>
<p><img style="width: 301px; height: 314px; border: 1px solid #cccccc; padding: 1px;" src="http://www.geome.me/i/help1.png" /></p>
<p>This blog post shares some details of how the geo-autocomplete control works, and offers some code so you can build your own geo-autocomplete controls.</p>
<p><strong>1. Based on a partial location typed by the user, obtain a list of possible matching locations</strong>:</p>
<p>If the user has already typed &#8216;San&#8217; into a form field, we can obtain a list of possible matching locations by passing this partial location to the geocoder service from Google Maps v3 API, as follows:</p>
<p><span id="more-15938"></span></p>
<pre class="brush: jscript;">
var partial_location = document.getElementById(&quot;location&quot;).value;
var geocoder = new google.maps.Geocoder();

geocoder.geocode({'address': partial_location}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        document.getElementById(&quot;results&quot;).innerHTML = '';
        for (var i = 0; i &lt; results.length; i++) {
            showResult(results[i]);
        }
    } else {
        document.getElementById(&quot;results&quot;).innerHTML = 'Geocode was not successful for the following reason: ' + status;
    }
});

function showResult(result) {
    document.getElementById(&quot;results&quot;).innerHTML += 'It could be: ' + result.formatted_address + '&lt;br/&gt;';
}
</pre>
<p><strong>2. Decorate these possible matching locations with a Static Maps thumbnail to help the user choose the right one:</strong></p>
<p>The geocoder returns more than just a formatted address. The full response is a JSON object of the following form:</p>
<pre class="brush: jscript;">
results[]: {
    types[]: google.maps.GeocoderLocationType,
    formatted_address: String,
    address_components[]: {
        short_name: String,
        long_name: String,
        types[]: String
    },
    geometry: {
        location: LatLng,
        location_type: String,
        viewport: LatLngBounds,
        bounds: LatLngBounds
    }
}
</pre>
<p><strong style="font-family: Courier New;">geometry.viewport</strong> represents the recommended viewport for each returned result, from which we can derive the required Static Maps URL, as follows:</p>
<pre class="brush: jscript;">
function showResult(result) {
    var src = 'http://maps.google.com/maps/api/staticmap';

    // the visible parameter specifies one or more locations
    // to show on the map. so we need to specify the south-west
    // and north-east corners of geometry.viewport
    src += '?visible=' + result.geometry.viewport.getSouthWest().toUrlValue() + '|' + result.geometry.viewport.getNorthEast().toUrlValue();

    // other parameters as per http://code.google.com/apis/maps/documentation/staticmaps/#URL_Parameters
    src += '&amp;size=100x100&amp;maptype=terrain&amp;key=YOUR_API_KEY&amp;sensor=false';

    document.getElementById(&quot;results&quot;).innerHTML += '&lt;img src=&quot;' + src + '&quot; /&gt; ' + result.formatted_address + '&lt;br/&gt;';
}
</pre>
<p>Working out the required Static Maps URL is now a much simpler task with v2 of the Static Maps API, because there is no longer any need to manually calculate a zoom level or latitude / longitude span values.</p>
<p>You can see this working on <a href="http://www.geome.me/Q9zbo">GeoMeme</a> by clicking on the location control at the top of the screen and entering a partial location. When you choose from the list of possible matches, the main map is moved to that location, providing a refreshingly quick way for users to re-position the map.</p>
<p>You can also download a hello world example <a href="http://code.google.com/p/geo-autocomplete/">here</a>, built as a jQuery plugin to work with a modified version of the excellent Autocomplete plugin:</p>
<p><iframe src="http://geo-autocomplete.googlecode.com/svn/trunk/demo/index.html" width="550" height="470" frameborder="0"><br />
<a href="http://geo-autocomplete.googlecode.com/svn/trunk/demo/index.html"><img src="http://geo-autocomplete.googlecode.com/svn/trunk/demo/screenshot.png" /></a></iframe></p>
<p>Using this <a href="http://code.google.com/p/geo-autocomplete/">geo-autocomplete</a> plugin is recommended because it includes a number of features which protect the geocoder service from being hit too often. Including; waiting for keystrokes to stop before sending a request to the geocoder, waiting for a minimum number of characters to by typed, and caching geocoder responses to avoid duplicate requests. Options are also available to set the size and maptype of the Static Map thumbnails.</p>
<p>Enjoy!</p>
<p><em>This post is one of a <a href="http://googlegeodevelopers.blogspot.com/2009/11/geolocation-mobile-web-apps-geo.html">series</a> that aims to share some of the technology innovation that can be found in <a href="http://www.geome.me/">GeoMeme</a>. Other posts cover topics such as <a href="http://hitching.net/2009/11/10/location-aware-mobile-web-apps-using-google-maps-v3-geolocation/">location-aware mobile web apps</a> using Google Maps v3, and <a href="http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/">scalable geo apps</a> using Google App Engine.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://hitching.net/2009/11/10/fast-map-re-location-using-google-static-maps-v2-geocoder/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
