<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUIMQHw6eyp7ImA9WhRVF0w.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383</id><updated>2012-01-16T23:39:41.213+11:00</updated><category term="carvings" /><category term="Google Maps" /><category term="google+" /><category term="sms" /><category term="My Tracks" /><category term="jak" /><category term="html5" /><category term="swing" /><category term="geocoder" /><category term="apple" /><category term="lists" /><category term="robot" /><category term="model railway" /><category term="fonts" /><category term="ipad" /><category term="historic" /><category term="gpx" /><category term="open source" /><category term="blobstore" /><category term="tinywebdb" /><category term="photos" /><category term="mtb" /><category term="chrome" /><category term="htc desire" /><category term="uluru" /><category term="cancellation" /><category term="iphone" /><category term="stringbuffer" /><category term="python" /><category term="class" /><category term="google buzz" /><category term="video" /><category term="csv" /><category term="google os" /><category term="wave" /><category term="wadframework" /><category term="nearmap" /><category term="arduino" /><category term="java" /><category term="tips and tricks" /><category term="kml" /><category term="datastore" /><category term="katoomba" /><category term="music" /><category term="mapping" /><category term="ted" /><category term="overlay-tiler" /><category term="swt" /><category term="gae" /><category term="netbeans" /><category term="kariong" /><category term="gps" /><category term="App Inventor" /><category term="io" /><category term="android" /><category term="e-zine" /><category term="google earth" /><category term="city" /><category term="software" /><category term="physical computing" /><category term="chromium" /><category term="glass" /><category term="nmt" /><category term="commuting" /><category term="fitness first" /><category term="google" /><title>Coxys' Blog</title><subtitle type="html">A place for everything...</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://coxydave.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/cHAeR" /><feedburner:info uri="blogspot/chaer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0cMRHcycSp7ImA9WhdbGU4.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-4509941238745768591</id><published>2011-10-18T21:51:00.000+11:00</published><updated>2011-10-18T21:51:25.999+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T21:51:25.999+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="overlay-tiler" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps" /><title>Google Maps - Image Overlay Tutorial</title><content type="html">&lt;br /&gt;
I have recently been working with my father on expanding our family tree and adding information to individuals. One of the items he had was some annotated maps produced by his uncle showing the various pieces of property owned by the family in a small country town in NSW.&lt;br /&gt;
&lt;br /&gt;
When I first saw these maps I immediately thought that it would be a good idea to have them overlayed onto a Google map to allow other members of the family to view them in context.&lt;br /&gt;
&lt;br /&gt;
At the time, I had no idea of how to do this, but had seen the results on some other history websites. It was only when I watched the '&lt;a href="http://www.youtube.com/watch?v=ATfdi-oYWzw"&gt;Map Your Business - Inside and Out&lt;/a&gt;' presentation from Google IO 2011 that I obtained the necessary knowledge and tools to produce these maps.&lt;br /&gt;
&lt;br /&gt;
Although this presentation told me what tools were required to build the maps it was lacking in instructions on how to use the tools. I am hoping this blog post will provide a bit more guidance and some helpful hints on getting a result from these tools.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The general workflow for producing a map overlay from a hand-drawn or annotated map is:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Obtain Source Maps&lt;/li&gt;
&lt;li&gt;Geo Reference the Source Maps&lt;/li&gt;
&lt;li&gt;Produce Overlay Tiles&lt;/li&gt;
&lt;li&gt;Build Page to display Overlap Map on Google Maps.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Obtain Source Maps&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
My source maps were hand-annotated maps that had been scanned as TIFF files. I resized these images and uploaded them to my hosting account. This was necessary to use the Overlay-Tiler tool in the next section. For the purposes of this tutorial I will use a historic map from Gosford, NSW.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Geo-reference the Source Maps&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The first step to displaying these maps as overlays on Google Maps is to determine the latititude/longitude for the corners of the map. To make this easier, the Maps team from Google has provided a tool called Overlay-Tiler. This is an interactive map where you can drag the corners of a overlay image around until it lines up with the underlying Google Map. The output of this tool is a GDAL_TRANSLATE command line script which you can run against the image to produce a geo-referenced TIFF.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 1.&lt;/u&gt;&lt;br /&gt;
Open the &lt;a href="http://overlay-tiler.googlecode.com/svn/trunk/upload.html"&gt;Overlay-Tiler&lt;/a&gt;&amp;nbsp;web application in Chrome. The initial screen below allows you to specify the image location (published on web-site) and the initial location for the Google Map.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8keDd3L1pvc/Tp0R1HwsMdI/AAAAAAAAIl8/XY508oT2oyo/s1600/screenshot.2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-8keDd3L1pvc/Tp0R1HwsMdI/AAAAAAAAIl8/XY508oT2oyo/s320/screenshot.2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 1 - Provide Overlay Image and Initial Location&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;u&gt;Step 2.&lt;/u&gt;&lt;br /&gt;
Pressing the Upload button will display the main screen for the Overlay-Tiler application. Your initial map will be displayed along with a semi-transparent overlay of your map image. This image is shown with control-points on three corners to allow you to drag and rotate the image to match the underlying Google Map.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EKNepzC0wTI/Tp0TsqL9kkI/AAAAAAAAImE/zkrievorlFs/s1600/screenshot.4.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="165" src="http://1.bp.blogspot.com/-EKNepzC0wTI/Tp0TsqL9kkI/AAAAAAAAImE/zkrievorlFs/s320/screenshot.4.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 2 - Overlay Image displayed on Google Map&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;u&gt;Step 3.&lt;/u&gt;&lt;br /&gt;
By dragging the handles of overlay image and changing the zoom levels of the underlying Google Map it should be possible to line up major features of both maps. This can be quite time-consuming depending on the accuracy of the overlay map.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-teglTNeOcXo/Tp0Tvu7ZdYI/AAAAAAAAImM/D1PW3oiT0og/s1600/screenshot.5.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="165" src="http://2.bp.blogspot.com/-teglTNeOcXo/Tp0Tvu7ZdYI/AAAAAAAAImM/D1PW3oiT0og/s320/screenshot.5.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 3. Overlay Map&amp;nbsp;re-sized&amp;nbsp;and rotated to line-up with Google Maps&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;u&gt;Step 4.&lt;/u&gt;&lt;br /&gt;
Once the overlay map has been aligned to the Google Map the GDAL_TRANSLATE command line will be displayed in the box in the bottom right-hand corner of the screen. Copy this command line to a safe place. I store these in the same directory as my maps.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-iZfp-g1Z_Ck/Tp0VFUc_1HI/AAAAAAAAImU/qnciGgB0dpY/s1600/screenshot.6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="99" src="http://1.bp.blogspot.com/-iZfp-g1Z_Ck/Tp0VFUc_1HI/AAAAAAAAImU/qnciGgB0dpY/s320/screenshot.6.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The GDAL_TRANSLATE command line script will produce a new geo-referenced image. To run this command you will need to have the GDAL tools installed on your machine. Various versions of this toolset exist for most operating systems. I am using Windows so I downloaded and installed the desktop version of &lt;a href="http://trac.osgeo.org/osgeo4w/"&gt;OSGeo4W (Open Source GEO for Windows)&lt;/a&gt;. This will install an environment on your machine to run GDAL tools.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 5.&lt;/u&gt;&lt;br /&gt;
To produce the geo-referenced image, start the OSGeo4W command prompt and copy the command line script from Step 4 above. The '\' characters will need to be removed from the command script.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-LILdeErVLsA/Tp0WFk2PqkI/AAAAAAAAImc/qyrNgbepFM0/s1600/screenshot.7.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="161" src="http://2.bp.blogspot.com/-LILdeErVLsA/Tp0WFk2PqkI/AAAAAAAAImc/qyrNgbepFM0/s320/screenshot.7.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 5 - Run the GDAL_TRANSLATE script to produce the geo-referenced image.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
The output from this section is a PNG image that includes embedded geo information. &lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Produce Map Tiles for your map&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The final output from this process is a collection of tiles that can be referenced by the Google Maps API to overlay over the standard Google Maps tiles. A common way to produce these tiles is to use the GDAL2TILES Python script. This will produce a series of tiles that are named appropriately to publish and use in Google Maps API. As I do not currently have a Python environment installed I decided to use the MapTiler application which is a Graphical Interface to the GDAL2TILES script.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 1.&lt;/u&gt;&lt;br /&gt;
Run the MapTiler desktop application. Select the type of Tileset to create. We are creating a Google Map overlay so will select the first option.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-4BUfMXjuYo0/Tp0YE_-ebXI/AAAAAAAAInE/JXxZR4Qvs_0/s1600/screenshot.8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-4BUfMXjuYo0/Tp0YE_-ebXI/AAAAAAAAInE/JXxZR4Qvs_0/s320/screenshot.8.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;u&gt;Step 2.&lt;/u&gt;&lt;br /&gt;
Add a new Source Data file (Overlay Image created in the previous section). If the geo-referencing has occurred correctly, the Georeference column will show 'GCPs'. &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oaQ2Ez5Sp90/Tp0X5n9ZEEI/AAAAAAAAIms/BUR0DWDYP64/s1600/screenshot.9.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-oaQ2Ez5Sp90/Tp0X5n9ZEEI/AAAAAAAAIms/BUR0DWDYP64/s320/screenshot.9.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 2 - Add a Source Data File&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;u&gt;Step 3.&lt;/u&gt;&lt;br /&gt;
Select a Spatial Reference System - for Google Maps overlays the most appropriate is WGS84.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-g6McX3LiGWI/Tp0X-omjquI/AAAAAAAAIm0/GjOE5dUoy6g/s1600/screenshot.10.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-g6McX3LiGWI/Tp0X-omjquI/AAAAAAAAIm0/GjOE5dUoy6g/s320/screenshot.10.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 3 - Confirm the Spatial Reference System&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;u&gt;Step 4.&lt;/u&gt;&lt;br /&gt;
The next step in the MapTiler application is to select the Google Map zoom levels your overlay will be shown on. The application will default to the most appropriate zoom levels however you can adjust the levels &amp;nbsp; to suit. The higher zoom levels will require a higher resolution image to avoid 'jaggies'.&lt;br /&gt;
&lt;br /&gt;
You can also select the file format at this point.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sUAB5ZXU63U/Tp1FsMG9ZFI/AAAAAAAAInM/1Hum6nQARwM/s1600/screenshot.11.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-sUAB5ZXU63U/Tp1FsMG9ZFI/AAAAAAAAInM/1Hum6nQARwM/s320/screenshot.11.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 4 - Tile Pyramid&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;u&gt;Step 5&lt;/u&gt;&lt;br /&gt;
Enter the location where you would like the files to created.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-3KdPOFjzIjM/Tp1KWXVWptI/AAAAAAAAInU/tGDWztuCops/s1600/screenshot.12.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-3KdPOFjzIjM/Tp1KWXVWptI/AAAAAAAAInU/tGDWztuCops/s320/screenshot.12.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 5 - File Location&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;u&gt;Step 6&lt;/u&gt;&lt;br /&gt;
Select the Web Viewers you would like MapTiler to generate. These are a HTML page that contains the appropriate code to display the overlay on either a Google Map or OpenLayers Map. These can be used as a base for your own pages.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GvggLht9pMg/Tp1Lkverp2I/AAAAAAAAInc/-ZPFauGzNAI/s1600/screenshot.13.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-GvggLht9pMg/Tp1Lkverp2I/AAAAAAAAInc/-ZPFauGzNAI/s320/screenshot.13.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 6 - Selection of Web Viewer&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;u&gt;Step 7&lt;/u&gt;&lt;br /&gt;
The next step in the process is to configure the Google Maps API Key. If you are testing only on your local machine you do not require a Maps API Key. If you want to publish on the web you will need to obtain a &lt;a href="http://code.google.com/apis/maps/signup.html"&gt;Google Maps API Key&lt;/a&gt;. This key is restricted to a single domain.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-v8NSvgvT-nI/Tp1PNLd2HxI/AAAAAAAAInk/-0foW1Hkpe8/s1600/screenshot.14.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-v8NSvgvT-nI/Tp1PNLd2HxI/AAAAAAAAInk/-0foW1Hkpe8/s320/screenshot.14.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 7 - Enter Google Maps API Key&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;u&gt;Step 8&lt;/u&gt;&lt;br /&gt;
The final step of the process is to Render the tiles. This will create a series of image tiles at each zoom level and the Map Viewer HTML.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-atle1itpF_s/Tp1RotMNkFI/AAAAAAAAIns/T7JuKktRME0/s1600/screenshot.15.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-atle1itpF_s/Tp1RotMNkFI/AAAAAAAAIns/T7JuKktRME0/s320/screenshot.15.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Step 8 - Render the Tiles&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Publish your Map&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The output from the MapTiler application is the collection of tiles (at various zoom levels) and one or two HTML Pages (depending on map options selected).&lt;br /&gt;
This directory structure can be copied directly to your web host, where it can be viewed as a full page map. Due to the simplicity of the HTML it is very&amp;nbsp;strait-forward&amp;nbsp;to modify the layout and contents of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Using this technique to show overlay maps on Google Maps is a great way to show historic mapping in context of the current day. It also allows the overlay of other information (floor plans, evacuation maps)&lt;br /&gt;
&lt;br /&gt;
The following examples show a Google Map and OpenLayers Map created as part of this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.davidcox.id.au/blog/BlogMap/googlemaps.html"&gt;Google Map Example&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.davidcox.id.au/blog/BlogMap/openlayers.html"&gt;OpenLayers Example&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I hope you find this tutorial useful. Feedback is always welcome.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-4509941238745768591?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FAYZfvP2mRSgAfrdAAx2WDkeXPA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FAYZfvP2mRSgAfrdAAx2WDkeXPA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FAYZfvP2mRSgAfrdAAx2WDkeXPA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FAYZfvP2mRSgAfrdAAx2WDkeXPA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/9dPxgBp11ak" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/4509941238745768591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/10/google-maps-image-overlay-tutorial.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4509941238745768591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4509941238745768591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/9dPxgBp11ak/google-maps-image-overlay-tutorial.html" title="Google Maps - Image Overlay Tutorial" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8keDd3L1pvc/Tp0R1HwsMdI/AAAAAAAAIl8/XY508oT2oyo/s72-c/screenshot.2.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/10/google-maps-image-overlay-tutorial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQARHs7fCp7ImA9WhdQFUU.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7702097447287861186</id><published>2011-08-17T21:25:00.001+10:00</published><updated>2011-08-17T21:25:45.504+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-17T21:25:45.504+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android App Inventor - MIT Center for Mobile Learning</title><content type="html">Google &lt;a href="http://googleresearch.blogspot.com/2011/08/new-mit-center-for-mobile-learning-with.html"&gt;announced&lt;/a&gt; today that Google App Inventor will be a key part of the MIT Centre for Mobile Learning. MIT will take stewardship of the project and will actively develop and promote the service as a teaching tool.&lt;br /&gt;
&lt;br /&gt;
Given the track record MIT have with open source software this is good news for the App Inventor community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7702097447287861186?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vx_vNhUOq1ylRJXwK2t3U9dId_o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vx_vNhUOq1ylRJXwK2t3U9dId_o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vx_vNhUOq1ylRJXwK2t3U9dId_o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vx_vNhUOq1ylRJXwK2t3U9dId_o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/SNWyR5ax2Yg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7702097447287861186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/08/android-app-inventor-mit-center-for.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7702097447287861186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7702097447287861186?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/SNWyR5ax2Yg/android-app-inventor-mit-center-for.html" title="Android App Inventor - MIT Center for Mobile Learning" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/08/android-app-inventor-mit-center-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QCQH85eyp7ImA9WhdQEEg.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-3709237736252490197</id><published>2011-08-11T19:35:00.000+10:00</published><updated>2011-08-11T19:36:01.123+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-11T19:36:01.123+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android App Inventor - Closing Down</title><content type="html">With the winding down of Google Labs, Google has &lt;a href="http://www.googlelabs.com/show_details?app_key=agtnbGFiczIwLXd3d3IUCxIMTGFic0FwcE1vZGVsGPOaIgw"&gt;announced&lt;/a&gt; that Android App Inventor will no longer be supported by Google and will be converted to an Open Source application.&lt;br /&gt;
&lt;br /&gt;
The service will remain available until at least the end of the year, however the URL will change in the near future. The viability of the product will depend on a benefactor taking control of the project and providing hosting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-3709237736252490197?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T1HdZyAkmJg2B8yBpPbeZfhqReQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T1HdZyAkmJg2B8yBpPbeZfhqReQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T1HdZyAkmJg2B8yBpPbeZfhqReQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T1HdZyAkmJg2B8yBpPbeZfhqReQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/euEkck7kR5w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/3709237736252490197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/08/android-app-inventor-closing-down.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/3709237736252490197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/3709237736252490197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/euEkck7kR5w/android-app-inventor-closing-down.html" title="Android App Inventor - Closing Down" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/08/android-app-inventor-closing-down.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMBRHs7eSp7ImA9WhdTF0Q.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-8091903288716320191</id><published>2011-07-16T14:25:00.000+10:00</published><updated>2011-07-16T14:27:35.501+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-16T14:27:35.501+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="csv" /><category scheme="http://www.blogger.com/atom/ns#" term="tinywebdb" /><category scheme="http://www.blogger.com/atom/ns#" term="datastore" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="blobstore" /><title>Android App Inventor - Load CSV File to Datastore</title><content type="html">In a previous &lt;a href="http://coxydave.blogspot.com/2011/04/android-app-inventor-tinywebdb.html"&gt;post&lt;/a&gt; I described how to use the TinyWebDB component within the Android App Inventor. This post described using the Google supplied TinyWebDB web service to store data on the web.&lt;br /&gt;
&lt;br /&gt;
I was recently asked a question about how to pre-load the web service with data. Google provides a &lt;a href="http://code.google.com/appengine/docs/python/tools/uploadingdata.html"&gt;bulk-uploader&lt;/a&gt; service that you can use to load values from a file. After doing some research into the bulk-uploader it seemed to be very complex and I started to think of other ways to achieve a similar result.&lt;br /&gt;
&lt;br /&gt;
The solution I created was using the web interface provided in the web service to upload a comma-separated file to the blobstore and subsequently loading the value into the datastore. I have attached the &lt;a href="http://blog.davidcox.id.au/files/coxytinywebdb.zip"&gt;source&lt;/a&gt; code of this new version of the TinyWebDB web service to my &lt;a href="http://coxydave.blogspot.com/p/app-inventor-source.html"&gt;source code page. &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The main visible change to the application is the addition of a page to handle the uploads of the CSV files to the App Engine Blobstore. This uses a standard File Upload form control to display the File Open Dialog.&lt;br /&gt;
&lt;br /&gt;
The page also displays the uploaded files along with an option to load the contents of the CSV file to the App Engine Datastore.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Kf3UwFkf-uM/TiEGmsFAo6I/AAAAAAAAIi8/lRF2SLCrOR4/s1600/Upload.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://2.bp.blogspot.com/-Kf3UwFkf-uM/TiEGmsFAo6I/AAAAAAAAIi8/lRF2SLCrOR4/s200/Upload.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The main logic of the Blobstore Upload was courtesy of User: &lt;a href="http://stackoverflow.com/users/451007/010110110101"&gt;010110110101&lt;/a&gt; on StackOverflow who provided a great example of using Blobstore to store files in App Engine. I added this logic to the TinyWebDB web service code.&lt;br /&gt;
&lt;br /&gt;
With the file uploaded to the blobstore, the web service then uses the Python CSV reader to read the file and load each key/value pair into the datastore. These key/value pairs are then available to the AppInventor application through the standard operations. &lt;br /&gt;
&lt;br /&gt;
Feel free to use/modify this code for your own purposes. Enjoy.&lt;br /&gt;
&lt;br /&gt;
My other App Inventor tutorials are:&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html"&gt;App Inventor - Simple SMS&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html"&gt;App Inventor - Location Services&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html"&gt;App Inventor - Lists&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/04/android-app-inventor-tinywebdb.html"&gt;App Inventor - TinyWebDB&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Links&lt;br /&gt;
&lt;a href="http://appinventor.googlelabs.com/learn/reference/other/tinywebdb.html"&gt;TinyWebDB Web Service&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/81451/upload-files-in-google-app-engine/4787543#4787543"&gt;Blobstore Python Code&lt;/a&gt; - StackOverflow&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/5491616/access-tab-separated-value-content-stored-in-a-gae-blob-but-using-universal-newl"&gt;CSV Reader in AppEngine&lt;/a&gt; - StackOverflow&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-8091903288716320191?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qdayWo95iCPF4BTu6_aIZyTPnFQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qdayWo95iCPF4BTu6_aIZyTPnFQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qdayWo95iCPF4BTu6_aIZyTPnFQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qdayWo95iCPF4BTu6_aIZyTPnFQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/TZfQM0-FlXM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/8091903288716320191/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/07/android-app-inventor-load-csv-file-to.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/8091903288716320191?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/8091903288716320191?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/TZfQM0-FlXM/android-app-inventor-load-csv-file-to.html" title="Android App Inventor - Load CSV File to Datastore" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Kf3UwFkf-uM/TiEGmsFAo6I/AAAAAAAAIi8/lRF2SLCrOR4/s72-c/Upload.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/07/android-app-inventor-load-csv-file-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AFQ30-eCp7ImA9WhZaE0k.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7823973798406588386</id><published>2011-06-29T22:08:00.001+10:00</published><updated>2011-06-29T22:15:12.350+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T22:15:12.350+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google+" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google+</title><content type="html">After years of speculation, Google has &lt;a href="http://googleblog.blogspot.com/2011/06/introducing-google-project-real-life.html"&gt;released details&lt;/a&gt; of its answer to Facebook. Google+ aims to make sharing and dissemination of information easy and targeted, no more spamming all your friends with a link only a handful will appreciate.&lt;br /&gt;
&lt;blockquote&gt;We’d like to bring the nuance and richness of real-life sharing to  software. We want to make Google better by including you, your  relationships, and your interests.&lt;/blockquote&gt;&amp;nbsp;Information about the site is limited to the original blog post as well as a post on &lt;a href="http://www.wired.com/epicenter/2011/06/inside-google-plus-social/"&gt;Wired&lt;/a&gt; describing the service. Access is limited to 'invite-only' at this time and there is a &lt;a href="https://services.google.com/fb/forms/googleplus/"&gt;form&lt;/a&gt; available to register your interest. &lt;br /&gt;
&lt;br /&gt;
Once I receive my invite I will post my impressions.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Links&lt;/i&gt;&lt;br /&gt;
&lt;a href="http://googleblog.blogspot.com/2011/06/introducing-google-project-real-life.html"&gt;http://googleblog.blogspot.com/2011/06/introducing-google-project-real-life.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.wired.com/epicenter/2011/06/inside-google-plus-social/"&gt;http://www.wired.com/epicenter/2011/06/inside-google-plus-social/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7823973798406588386?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/omVONxLefg1voGBVnHFUKmZ6yPk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/omVONxLefg1voGBVnHFUKmZ6yPk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/omVONxLefg1voGBVnHFUKmZ6yPk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/omVONxLefg1voGBVnHFUKmZ6yPk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/ZYgawNICe-U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7823973798406588386/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/06/google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7823973798406588386?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7823973798406588386?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/ZYgawNICe-U/google.html" title="Google+" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/06/google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMFRn85eyp7ImA9WhZUGEg.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7255674672451395275</id><published>2011-06-12T14:53:00.000+10:00</published><updated>2011-06-12T14:53:37.123+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-12T14:53:37.123+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nearmap" /><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><title>Nearmap Aerial Mapping</title><content type="html">&lt;a href="http://www.nearmap.com/"&gt;Nearmap&lt;/a&gt; is a Photomap and location-based media company that provides high resolution aerial photography of Australias major population centres. These photographs are updated on a regular basis and the historical imagery is available.&lt;br /&gt;
&lt;br /&gt;
A majority of the imagery is at 7.5cm resolution. This means that each pixel in the image represents 7.5cm of the earth surface. This means these images show more detail than many other mapping services.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-W7COQpj6nYU/TfRAENi3XrI/AAAAAAAAIck/JX-QJMKUeXA/s1600/Overall.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/-W7COQpj6nYU/TfRAENi3XrI/AAAAAAAAIck/JX-QJMKUeXA/s320/Overall.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Sample Image from Nearmap&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;One of the more unique features of the Nearmap service is the fact that the imagery is updated on a regular basis. Many metropolitan areas are updated on a monthy basis and the other major population centres are updated quarterly. Once captured and processed these new images are available very quickly. As the older imagery is also available it is possible to view and compare images from one month to the next.&lt;br /&gt;
&lt;br /&gt;
Nearmap also provide a &lt;a href="http://www.nearmap.com/documentation/browsermap/"&gt;Javascript API&lt;/a&gt;&amp;nbsp; to allow developers to embed maps into their own webpages. I have a simple example of this API &lt;a href="http://blog.davidcox.id.au/nearmap.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Overall, I find this service extremely useful. It is well worth signing up to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7255674672451395275?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hutWJt2GSsNdZJNosZ9Qx33K0Ec/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hutWJt2GSsNdZJNosZ9Qx33K0Ec/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hutWJt2GSsNdZJNosZ9Qx33K0Ec/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hutWJt2GSsNdZJNosZ9Qx33K0Ec/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/7qsknBqVcv4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7255674672451395275/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/06/nearmap-aerial-mapping.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7255674672451395275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7255674672451395275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/7qsknBqVcv4/nearmap-aerial-mapping.html" title="Nearmap Aerial Mapping" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-W7COQpj6nYU/TfRAENi3XrI/AAAAAAAAIck/JX-QJMKUeXA/s72-c/Overall.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/06/nearmap-aerial-mapping.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAAQn08fip7ImA9WhZWE0g.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-5875325864530743855</id><published>2011-05-14T15:59:00.000+10:00</published><updated>2011-05-14T15:59:03.376+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T15:59:03.376+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="html5" /><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google I/O 2011 - Keynote Day 2</title><content type="html">Here is the Day 2 Keynote from Google I/O. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/MiYND_zvIc0/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MiYND_zvIc0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/MiYND_zvIc0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Todays keynote was about Chrome, Chromebooks and HTML5.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-5875325864530743855?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ERk5ZPLWDHJjizq5pfKssVuNGfU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ERk5ZPLWDHJjizq5pfKssVuNGfU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ERk5ZPLWDHJjizq5pfKssVuNGfU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ERk5ZPLWDHJjizq5pfKssVuNGfU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/xxD3VenLdKI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/5875325864530743855/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/05/google-io-2011-keynote-day-2.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5875325864530743855?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5875325864530743855?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/xxD3VenLdKI/google-io-2011-keynote-day-2.html" title="Google I/O 2011 - Keynote Day 2" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/05/google-io-2011-keynote-day-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YBSHkycCp7ImA9WhZWEUw.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7196460285624666262</id><published>2011-05-11T21:39:00.001+10:00</published><updated>2011-05-11T21:59:19.798+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-11T21:59:19.798+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="physical computing" /><title>Google I/O 2011 - Keynote Day 1</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;For those developers not able to attend Google I/O 2011, here is the link to the Keynote for Day 1.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/OxzucwjFEEs/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OxzucwjFEEs&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/OxzucwjFEEs&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
So far Google has announced:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://music.google.com/"&gt;Google Music&lt;/a&gt;, &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.android.com/guide/topics/usb/adk.html"&gt;Android Open Accessory Developer Kit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mashable.com/2011/05/10/android-at-home/"&gt;Android @ Home&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.golang.org/2011/05/go-and-google-app-engine.html"&gt;GO Language Support in Google App Engine&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;More to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7196460285624666262?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Voef6ATuM2OPAkTIFtVaqVp91cc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Voef6ATuM2OPAkTIFtVaqVp91cc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Voef6ATuM2OPAkTIFtVaqVp91cc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Voef6ATuM2OPAkTIFtVaqVp91cc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/qWcenpZZxlU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7196460285624666262/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/05/google-io-2011-keynote-day-1.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7196460285624666262?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7196460285624666262?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/qWcenpZZxlU/google-io-2011-keynote-day-1.html" title="Google I/O 2011 - Keynote Day 1" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/05/google-io-2011-keynote-day-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNQHgyeip7ImA9WhZRGU0.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-4482591207943940830</id><published>2011-04-05T15:22:00.001+10:00</published><updated>2011-04-16T08:44:51.692+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-16T08:44:51.692+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tinywebdb" /><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android App Inventor - TinyWebDB</title><content type="html">The next post in my series on Android App Inventor makes use of one the 'Not for Primetime' components. The &lt;a href="http://appinventor.googlelabs.com/learn/reference/components/notready.html#TinyWebDB"&gt;TinyWebDB &lt;/a&gt;component allows you to store data on a web service. This means that the data can be accessed by the Android phone as well as a web application.&lt;br /&gt;
&lt;br /&gt;
For testing purposes Google have provided a test web service at &lt;a href="http://appinvtinywebdb.appspot.com/"&gt;http://appinvtinywebdb.appspot.com/&lt;/a&gt;.&amp;nbsp; This service is a limited service and will only store 1000 entries. Due to these limitations it should NOT be used for your applications. Google provides &lt;a href="http://appinventor.googlelabs.com/learn/reference/other/tinywebdb.html"&gt;instructions&lt;/a&gt; on how to create your own web service using Python and the Google App Engine.&lt;br /&gt;
&lt;br /&gt;
The following example uses the application I built for the &lt;a href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html"&gt;Android App Inventor - Lists&lt;/a&gt; post. This post will show how to store the contents of a list to the TinyWebDB web service and also retrieve the contents of a list from the TinyWebDB web service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To begin we need add two buttons (btnStoretoWeb &amp;amp; btnGetListfromWeb).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IE9BMrBINwQ/TZqXbUAyfII/AAAAAAAAIUw/l6r1jLKkHOQ/s1600/GUI_StoreGet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="36" src="http://4.bp.blogspot.com/-IE9BMrBINwQ/TZqXbUAyfII/AAAAAAAAIUw/l6r1jLKkHOQ/s320/GUI_StoreGet.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7IN7WTtVJ6Y/TZqXd7gHvzI/AAAAAAAAIU0/N3xBUWAEz5Q/s1600/GUI_StoreGet_Buttons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-7IN7WTtVJ6Y/TZqXd7gHvzI/AAAAAAAAIU0/N3xBUWAEz5Q/s1600/GUI_StoreGet_Buttons.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
We also need to add the TinyWebDB component. I have also added a Notifier component to allow us to return a message to the user when the data is stored.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2gr6WjwDHV4/TZqX089oMqI/AAAAAAAAIU4/PG1W7gRQU10/s1600/GUI_NonVisible.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="104" src="http://4.bp.blogspot.com/-2gr6WjwDHV4/TZqX089oMqI/AAAAAAAAIU4/PG1W7gRQU10/s320/GUI_NonVisible.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;The TinyWebDB1 control needs to have the ServiceURL set to the debug URL: &lt;a href="http://appinvtinywebdb.appspot.com/"&gt;http://appinvtinywebdb.appspot.com/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rMcRis_sf7M/TZqX2c40czI/AAAAAAAAIU8/5hCvCwoExUM/s1600/GUI_NonVisible_Details.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-rMcRis_sf7M/TZqX2c40czI/AAAAAAAAIU8/5hCvCwoExUM/s1600/GUI_NonVisible_Details.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Once the GUI has been configured we start the block editor and create the logic to save the list to the TinyWebDB.&lt;br /&gt;
&lt;br /&gt;
To store a value on the web service we add the btnStoretoWeb.Click event. Within the event we call the TinyWebDB1.StoreValue method. This method has two parameters. The 'tag' parameter allows you to assign a key to the data. The second parameter is the list you are going to store.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-feZTaqbHjgc/TZqajji7PkI/AAAAAAAAIVA/jke-47NOvTk/s1600/StoreToWeb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://3.bp.blogspot.com/-feZTaqbHjgc/TZqajji7PkI/AAAAAAAAIVA/jke-47NOvTk/s320/StoreToWeb.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The second event shown above is the TinyWebDB1.ValueStored event. When a value is stored in the TinyWebDB this event is triggered. I have used it to provide a notification to the user that it worked.&lt;br /&gt;
&lt;br /&gt;
The next step is to retrieve the values from the web service and repopulate the list. In this case I have used a button to manually trigger the load of the list. In a production application you may want to put this code into the Screen.Initialize event.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1Wmh413F3sQ/TZqfoUoXqJI/AAAAAAAAIVE/xOuNFZsEmig/s1600/GetFromWeb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://4.bp.blogspot.com/-1Wmh413F3sQ/TZqfoUoXqJI/AAAAAAAAIVE/xOuNFZsEmig/s320/GetFromWeb.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;In the btnGetFromWeb.Click event we call the TinyWebDB1.GetValue method with the name of the 'tag' we want to retrieve. In this case it is the MyStoredList tag.&lt;br /&gt;
&lt;br /&gt;
Once the GetValue call is sent we need to wait for the TinyWebDB1.GotValue event to be called. This ensures that our application can remain responsive even if the call to the web service is slow to respond. When the event is triggered the application has access to the parameter valuefromWebDB. This contains the list we stored previously.&lt;br /&gt;
&lt;br /&gt;
We can then store this value into the list. We also update the label to show the number of items in the list. I also load the ListPicker1 component.&lt;br /&gt;
&lt;br /&gt;
I hope this tutorial has been helpful. Please feel free to comment if you need further information.&lt;br /&gt;
&lt;br /&gt;
I have added a link to the App Inventor source &lt;a href="http://coxydave.blogspot.com/p/app-inventor-source.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My other App Inventor tutorials are:&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html"&gt;App Inventor - Simple SMS&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html"&gt;App Inventor - Location Services&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html"&gt;App Inventor - Lists&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-4482591207943940830?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rw1OT1AL2aF3x50uCQp8xYhz3vE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rw1OT1AL2aF3x50uCQp8xYhz3vE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rw1OT1AL2aF3x50uCQp8xYhz3vE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rw1OT1AL2aF3x50uCQp8xYhz3vE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/90Lu0_jIYas" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/4482591207943940830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/04/android-app-inventor-tinywebdb.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4482591207943940830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4482591207943940830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/90Lu0_jIYas/android-app-inventor-tinywebdb.html" title="Android App Inventor - TinyWebDB" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-IE9BMrBINwQ/TZqXbUAyfII/AAAAAAAAIUw/l6r1jLKkHOQ/s72-c/GUI_StoreGet.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/04/android-app-inventor-tinywebdb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUCQHc9eip7ImA9WhZSGUs.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-5886097992046705431</id><published>2011-04-05T11:51:00.000+10:00</published><updated>2011-04-05T11:51:01.962+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T11:51:01.962+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="commuting" /><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Commuting Time - Productive?</title><content type="html">As I spend around 3 hours of my day on a train commuting I found this article by Dave Burke very interesting. It shows that with the right technology it is possible to be productive even when you re travelling.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;&lt;a href="http://googleblog.blogspot.com/2011/03/20-percent-time-spent-coding-in-clouds.html?m=1"&gt;Official Google Blog: 20 percent time spent coding in the clouds&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;In the past I have typically used the time on the train to read or sleep but due to the better mobile data plans I am able to login to services such as &lt;a href="http://appinventor.googlelabs.com/"&gt;App Inventor&lt;/a&gt; to&amp;nbsp; develop applications for my Android phone.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;Now instead of 3 hours of wasted time I can be productive. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-5886097992046705431?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lJEJ7MuNhqIm_1Y5ghLIQ9tJeuI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJEJ7MuNhqIm_1Y5ghLIQ9tJeuI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lJEJ7MuNhqIm_1Y5ghLIQ9tJeuI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJEJ7MuNhqIm_1Y5ghLIQ9tJeuI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/7EK8w6-zDrI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/5886097992046705431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/04/commuting-time-productive.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5886097992046705431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5886097992046705431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/7EK8w6-zDrI/commuting-time-productive.html" title="Commuting Time - Productive?" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/04/commuting-time-productive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04EQ3gzcSp7ImA9WhZTFkw.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7214465237617813473</id><published>2011-03-04T17:05:00.001+11:00</published><updated>2011-03-20T21:11:42.689+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-20T21:11:42.689+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="lists" /><title>Android App Inventor - Lists</title><content type="html">This post will explain the use of lists and list controls in Android App Inventor.&lt;br /&gt;
&lt;br /&gt;
There are three parts to this post. In the first part I will examine how to create a list and add items to the list via the GUI, the second part will show how to make use of items in a list directly and thirdly I will show how to link a list to a GUI list control to select and display items.&lt;br /&gt;
&lt;br /&gt;
To create a list we go to the Block Editor and define a new variable called 'list'. We can then call a 'make a list' method which will create a blank list. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-K3tt8JWFKHk/TXB6Kc3b5GI/AAAAAAAAIQo/xXXX_9WF6_w/s1600/Android+Lists+-+Block+-+Add+Item.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="https://lh5.googleusercontent.com/-K3tt8JWFKHk/TXB6Kc3b5GI/AAAAAAAAIQo/xXXX_9WF6_w/s320/Android+Lists+-+Block+-+Add+Item.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the GUI add a textbox and button. The textbox will be where you add the value you want added to the list. The button will call the btnAddText.Click event to add the text in the textbox to the list.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-RNLQAP2B3ck/TXB68tmrJxI/AAAAAAAAIQs/q93y0OMWTxw/s1600/Android+Lists+-+GUI+-+Insert+Entry.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-RNLQAP2B3ck/TXB68tmrJxI/AAAAAAAAIQs/q93y0OMWTxw/s1600/Android+Lists+-+GUI+-+Insert+Entry.png" /&gt;&lt;/a&gt;&lt;/div&gt;The code will also update the label underneath the button to show the current number of items in the list. &lt;br /&gt;
&lt;br /&gt;
The next step is to make use of this list. In the screenshot below I have added a button and a label to the screen.&amp;nbsp; The label is not visible as it is empty at the moment.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-4-cYd4tZDgA/TXB7w7XInEI/AAAAAAAAIQw/m1bzqRD7j9Q/s1600/Android+Lists+-+GUI+-+Show+Random.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-4-cYd4tZDgA/TXB7w7XInEI/AAAAAAAAIQw/m1bzqRD7j9Q/s1600/Android+Lists+-+GUI+-+Show+Random.png" /&gt;&lt;/a&gt;&lt;/div&gt;When the button is selected on-screen the btnRandom.Click event is called. This event will randomly select one of the list items and display it in the label. The call to the random function is surrounded by an IF block to ensure that the list is not empty.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-Qk7zP9KP1j8/TXB8eookoeI/AAAAAAAAIQ0/fFhHajBA7zQ/s1600/Android+Lists+-+Block+-+Show+Random.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="96" src="https://lh3.googleusercontent.com/-Qk7zP9KP1j8/TXB8eookoeI/AAAAAAAAIQ0/fFhHajBA7zQ/s320/Android+Lists+-+Block+-+Show+Random.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Finally, the last thing to do is associate this list with an on-screen control that we can access to select items.&lt;br /&gt;
&lt;br /&gt;
On the GUI a ListPicker control has been added. We also add a Label to show the returned value.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-GF-v07AhlhU/TXB-YVTZfYI/AAAAAAAAIQ4/rYXjJr4O2vQ/s1600/Android+Lists+-+GUI+-+Launch+List+Selection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-GF-v07AhlhU/TXB-YVTZfYI/AAAAAAAAIQ4/rYXjJr4O2vQ/s1600/Android+Lists+-+GUI+-+Launch+List+Selection.png" /&gt;&lt;/a&gt;&lt;/div&gt;This control will display a list of values and when the user selects one it will return the value back to the user. To associate a List with a ListPicker control we call pass the list into the ListPicker.Elements method.&lt;br /&gt;
&lt;br /&gt;
In our example this is done as part of the btnAddText.Click method. This ensures that the list control is updated each time an item is added to the List. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-K3tt8JWFKHk/TXB6Kc3b5GI/AAAAAAAAIQo/xXXX_9WF6_w/s1600/Android+Lists+-+Block+-+Add+Item.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="https://lh5.googleusercontent.com/-K3tt8JWFKHk/TXB6Kc3b5GI/AAAAAAAAIQo/xXXX_9WF6_w/s320/Android+Lists+-+Block+-+Add+Item.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now that we have associated the list to the ListPicker control we can use a ListPicker.AfterPicking block to show the returned value on the Label.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-6Wq1Mfh78QE/TXB_tD8Q1NI/AAAAAAAAIQ8/wPfVpjPXyks/s1600/Android+Lists+-+Block+-+Select+from+List.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="82" src="https://lh5.googleusercontent.com/-6Wq1Mfh78QE/TXB_tD8Q1NI/AAAAAAAAIQ8/wPfVpjPXyks/s320/Android+Lists+-+Block+-+Select+from+List.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The following is some screenshots showing the overall GUI design with the names of the controls. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-bdqySrOROCs/TXCAkibArKI/AAAAAAAAIRA/WHpZUqo2me4/s1600/Android+Lists+-+GUI+-+Overall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="https://lh3.googleusercontent.com/-bdqySrOROCs/TXCAkibArKI/AAAAAAAAIRA/WHpZUqo2me4/s320/Android+Lists+-+GUI+-+Overall.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I hope this tutorial has been helpful. Please feel free to comment if you need further information.&lt;br /&gt;
&lt;br /&gt;
My other App Inventor tutorials are:&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html"&gt;App Inventor - Simple SMS&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html"&gt;App Inventor - Location Services&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7214465237617813473?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xvWAXSX7uXMlp6_mIjwlI_7oDgk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xvWAXSX7uXMlp6_mIjwlI_7oDgk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xvWAXSX7uXMlp6_mIjwlI_7oDgk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xvWAXSX7uXMlp6_mIjwlI_7oDgk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/F-YHyRz624g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7214465237617813473/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7214465237617813473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7214465237617813473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/F-YHyRz624g/android-app-inventor-lists.html" title="Android App Inventor - Lists" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-K3tt8JWFKHk/TXB6Kc3b5GI/AAAAAAAAIQo/xXXX_9WF6_w/s72-c/Android+Lists+-+Block+-+Add+Item.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIHRH85fSp7ImA9WhZRGU0.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7107892681280507932</id><published>2011-02-24T21:40:00.002+11:00</published><updated>2011-04-16T08:45:35.125+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-16T08:45:35.125+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="sms" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android App Inventor - Simple SMS</title><content type="html">Recently, I have been doing some further development on Android App Inventor. My focus for this work was getting the application to send and receive SMS messages. To aid others in doing this I put together this tutorial which shows this.&lt;br /&gt;
&lt;br /&gt;
The first part of the tutorial shows how to send an SMS from within an App Inventor App. This is relatively simple and requires a a couple of text boxes (Mobile Number &amp;amp; Message Text) and a button to press to send the message.&lt;br /&gt;
&lt;br /&gt;
You will also need to add a non-visual Texting component to the form.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-E5GG8tk3cxI/TWY1WZS80uI/AAAAAAAAIOU/-HVvP2uZyx4/s1600/Send+SMS+-+GUI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="157" src="http://1.bp.blogspot.com/-E5GG8tk3cxI/TWY1WZS80uI/AAAAAAAAIOU/-HVvP2uZyx4/s320/Send+SMS+-+GUI.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Once the form has been created, the Blocks required to send a message should be configured as in the following image.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vCz4ERmvX8c/TWY1McmnueI/AAAAAAAAIOQ/OPNukjnSpDI/s1600/Send+SMS+-+Blocks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="109" src="http://3.bp.blogspot.com/-vCz4ERmvX8c/TWY1McmnueI/AAAAAAAAIOQ/OPNukjnSpDI/s320/Send+SMS+-+Blocks.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This block of code is executed when the user clicks the Send Message button. The first two actions are to set the Mobile Number and Message text on the Texting object to the values in the text boxes.&lt;br /&gt;
&lt;br /&gt;
The last action calls the Texting.SendMessage method to actually send an SMS. Simple.&lt;br /&gt;
&lt;br /&gt;
Note: This code does not do any error checking or validation. Erroneous data may cause the application to Force Close.&lt;br /&gt;
&lt;br /&gt;
The second part of the tutorial will show how to make an App Inventor application respond to an SMS that it receives. For this application there is no GUI as the application handles the logic in the background. All we need are some blocks to intercept the SMS messages received.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AKx9PYzdC1s/TWY0-0JZ3ZI/AAAAAAAAIOM/Ox8GuqnAUFA/s1600/Respond+SMS+-+Blocks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="163" src="http://3.bp.blogspot.com/-AKx9PYzdC1s/TWY0-0JZ3ZI/AAAAAAAAIOM/Ox8GuqnAUFA/s320/Respond+SMS+-+Blocks.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This block of code is executed when the phone gets a SMS message.&lt;br /&gt;
&lt;br /&gt;
The MessageRecieved method exposes two values: number and messageText. You can store these in a couple of variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second thing this block does is to check the message to see if it contains the text 'Status?' If this text is in the message it will create a new TextMessage using the received number and respond with the message 'All Good!'. This is a simple application for this but could be used for such things as responding with a user location or responding with a simple message if the user is unavailable.&lt;br /&gt;
&lt;br /&gt;
I hope this tutorial has been helpful. Please feel free to comment if you need further information.&lt;br /&gt;
&lt;br /&gt;
I have added a link to the source code &lt;a href="http://coxydave.blogspot.com/p/app-inventor-source.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My other App Inventor tutorials:&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html"&gt;App Inventor - Location Services&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html"&gt;App Inventor - Lists&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7107892681280507932?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xXp-PwpTMpR_nj2IQ6cR4Ko4bLI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xXp-PwpTMpR_nj2IQ6cR4Ko4bLI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xXp-PwpTMpR_nj2IQ6cR4Ko4bLI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xXp-PwpTMpR_nj2IQ6cR4Ko4bLI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/TPRMHPpmc7E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7107892681280507932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7107892681280507932?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7107892681280507932?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/TPRMHPpmc7E/android-app-inventor-simple-sms.html" title="Android App Inventor - Simple SMS" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-E5GG8tk3cxI/TWY1WZS80uI/AAAAAAAAIOU/-HVvP2uZyx4/s72-c/Send+SMS+-+GUI.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMDRnc5eyp7ImA9Wx9bEU8.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7108612618605731835</id><published>2011-02-20T01:07:00.000+11:00</published><updated>2011-02-20T01:07:57.923+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-20T01:07:57.923+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="geocoder" /><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="gps" /><category scheme="http://www.blogger.com/atom/ns#" term="gpx" /><title>GPS Visualiser</title><content type="html">One of the online tools I use regularly while working with GPX files and mapping is the &lt;a href="http://www.gpsvisualizer.com/"&gt;GPS Visualizer&lt;/a&gt; website. The GPS Visualizer website is a collection of tools that work with GPX files to produce maps and profiles of GPS tracks.&lt;br /&gt;
&lt;br /&gt;
The main functions I use on the website are:&lt;br /&gt;
&lt;br /&gt;
1. &lt;a href="http://www.gpsvisualizer.com/map_input"&gt;Draw a Map&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The Draw a Map page allows you to select a GPX file and display it overlayed on a variety of different map types including Google Streetmap, Google Satellite and Google Terrain. Once created the image can be captured as an image file.&lt;br /&gt;
&lt;br /&gt;
2. &lt;a href="http://www.gpsvisualizer.com/profile_input"&gt;Draw a Profile&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The Draw a Profile page allows you to select a GPX file and display a elevation profile for this GPX file. The profile can be colorcoded to show elevation, speed, heart rate and other data points. Where a GPX file does not include elevation data the form gives the ability to add elevation data from a DEM dataset.&lt;br /&gt;
&lt;br /&gt;
3. &lt;a href="http://www.gpsvisualizer.com/elevation"&gt;Lookup Elevations&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.gpsvisualizer.com/elevation"&gt;&lt;/a&gt;The Lookup Elevation page allows you to recreate the elevation data for a GPX track using a DEM dataset. This is useful if the existing GPX file does not have elevation data or the data is incomplete. Rather than directly rendering a profile (as in point 2) the page gives you the option to save a new GPX file.&lt;br /&gt;
&lt;br /&gt;
As well as these easy to use functions there are a multitude of ways to make use of the GPS Visualizer service. If you are using GPX files on a regular basis this service is a very handy addition to your tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7108612618605731835?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6AYFdxy8TdGPXlQXwm9W7rr48qw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6AYFdxy8TdGPXlQXwm9W7rr48qw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6AYFdxy8TdGPXlQXwm9W7rr48qw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6AYFdxy8TdGPXlQXwm9W7rr48qw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/6fBh6KE25Sw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7108612618605731835/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2011/02/gps-visualiser.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7108612618605731835?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7108612618605731835?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/6fBh6KE25Sw/gps-visualiser.html" title="GPS Visualiser" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2011/02/gps-visualiser.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ESXszeip7ImA9Wx5aEU8.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-431825758173011897</id><published>2010-11-07T22:20:00.000+11:00</published><updated>2010-11-07T22:20:08.582+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T22:20:08.582+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="gps" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Endomondo Android Application</title><content type="html">In previous posts &lt;a href="http://coxydave.blogspot.com/2010/09/my-tracks-for-android.html"&gt;here&lt;/a&gt; and &lt;a href="http://coxydave.blogspot.com/2009/06/gps-mapping.html"&gt;here&lt;/a&gt; I documented how I use GPS enabled mobile phones to record my mountain bike rides. I have recently been evaluating &lt;a href="http://www.endomondo.com/home"&gt;Endomondo&lt;/a&gt;. Endomondo is an Android application which records your rides, runs, swims, and any other exercise.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_8hltD7DetW8/TNaJ9OwjkII/AAAAAAAAHfk/xcP56MyQPMc/s1600/Mobile-app-CMYK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://3.bp.blogspot.com/_8hltD7DetW8/TNaJ9OwjkII/AAAAAAAAHfk/xcP56MyQPMc/s320/Mobile-app-CMYK.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The Endomondo service consists of a mobile application (Android, iPhone, Blackberry and Symbion) that makes use of the GPS functionality of the phone to track your workouts. This is paired with a web-based service that will store a history of your workouts along with allowing you to see your workouts overlayed on a Google Map.&lt;br /&gt;
&lt;br /&gt;
Some of the key features of the Endomondo service which make it interesting to use are:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Audio Coach: the Audio Coach uses the text to speech functionality on your Android phone to announce your current progress at each kilometer. It means you do not need to constantly check your progress on your phone.&lt;/li&gt;
&lt;li&gt;Live Tracking: if you have a mobile connection active on your phone, the application will constantly update the web service with your progress. This will allow interested people to follow your progress via your profile page. An interesting addition to this is the ability for someone to send a message to your device which will then be read out by your device.&lt;/li&gt;
&lt;li&gt;Routes: if you have a favourite ride/run this can be published as a route on the web service which means that anybody can ride/run this course and compare their times to yours.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_8hltD7DetW8/TNaKM6FLYoI/AAAAAAAAHfo/kPS9tZ9HwqU/s1600/Workout-CMYK.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="205" src="http://2.bp.blogspot.com/_8hltD7DetW8/TNaKM6FLYoI/AAAAAAAAHfo/kPS9tZ9HwqU/s320/Workout-CMYK.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Overall, the application and web service work together very well. The workout history is reasonably comprehensive and the statistics collected can be used to see how many kilometers are ridden in a year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-431825758173011897?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zRmb2yiinMl9FCVq6ZJmPayj-Gg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zRmb2yiinMl9FCVq6ZJmPayj-Gg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zRmb2yiinMl9FCVq6ZJmPayj-Gg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zRmb2yiinMl9FCVq6ZJmPayj-Gg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/zmvJWyzvUr8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/431825758173011897/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/11/endomondo-android-application.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/431825758173011897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/431825758173011897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/zmvJWyzvUr8/endomondo-android-application.html" title="Endomondo Android Application" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_8hltD7DetW8/TNaJ9OwjkII/AAAAAAAAHfk/xcP56MyQPMc/s72-c/Mobile-app-CMYK.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/11/endomondo-android-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEEQXs7cSp7ImA9WhZRGU0.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7627645469673313119</id><published>2010-10-17T17:27:00.003+11:00</published><updated>2011-04-16T08:46:40.509+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-16T08:46:40.509+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="App Inventor" /><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="gps" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android App Inventor - Location</title><content type="html">&lt;div style="margin: 0px auto 10px; text-align: center;"&gt;&lt;div style="text-align: left;"&gt;I &lt;a href="http://coxydave.blogspot.com/2010/09/htc-desire-android-phone.html"&gt;recently&lt;/a&gt; got a new HTC Desire phone. One of the main reasons for purchasing an Android phone was the ability to write and deploy my own applications to it. Just prior to getting the phone I had seen a post from Google regarding the new &lt;a href="http://appinventor.googlelabs.com/about/"&gt;App Inventor for Android&lt;/a&gt; tool. The tool is in beta at this time so I signed up hoping that I would get an invite and I would be try out this new tool. Last week I got the invite and started playing with App Inventor.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;As I am interested in GPS and location aware applications I decided to develop a small application that would show the current location, current address and the option to launch the Google Maps application on the phone.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;The Android App Inventor is a web application that has a visual GUI builder to create the GUI and uses 'blocks' in place of code to provide the logic in the application.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;The screenshot below shows the GUI builder with the 4 controls used to display the current latitude and longitude and the street address if known from the Google geocoding service. It also has a button to initiate the display of a Google map centered on the current co-ordinates.&lt;br /&gt;
&lt;br /&gt;
To obtain the GPS co-ordinates you will need to add a &lt;a href="http://appinventor.googlelabs.com/learn/reference/components/sensors.html#LocationSensor"&gt;LocationSensor&lt;/a&gt; to the non-visible components. This sensor allows you to access the built-in GPS on Android devices. It includes methods to enable/disable the internal location sensor, read the sensors and get the current address.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_8hltD7DetW8/TLmjGVQOd2I/AAAAAAAAHYo/EU9Vs3lXeSM/s1600/Location_GUI.jpg"&gt;&lt;img alt="" border="0" src="http://3.bp.blogspot.com/_8hltD7DetW8/TLmjGVQOd2I/AAAAAAAAHYo/EU9Vs3lXeSM/s320/Location_GUI.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;The next screenshot shows the logic required to display the latitude, longitude and address on the screen whenever the phone is moved.&lt;br /&gt;
&lt;br /&gt;
It also shows the logic for the ActivityStarter to create and display a Google Map. Information on how to setup the properties for the Google Maps ActivityStarter is in the &lt;a href="http://appinventor.googlelabs.com/learn/tutorials/maptour/maptour.html"&gt;MapTour&lt;/a&gt; tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin: 0px auto 10px; text-align: center;"&gt;&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_8hltD7DetW8/TLmjGlR9ZxI/AAAAAAAAHYw/kiXZjtyXQRk/s1600/Location_Block.jpg"&gt;&lt;img alt="" border="0" src="http://3.bp.blogspot.com/_8hltD7DetW8/TLmjGlR9ZxI/AAAAAAAAHYw/kiXZjtyXQRk/s320/Location_Block.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
Once the properties are configured you will need to generate the URI to pass to the Map Activity. I have shown this above as it took a couple of attempts to get this right. As it is not currently possible to simulate the location sensor in App Inventor the app will need to be compiled and deployed to either the Android SDK emulator or a real phone.I did this a number of times prior to getting it to work.&lt;br /&gt;
&lt;br /&gt;
I hope this information helps if you are trying to use LocationSensor and Google Maps activities on App Inventor.&lt;br /&gt;
&lt;br /&gt;
I have added a link to the source code &lt;a href="http://coxydave.blogspot.com/p/app-inventor-source.html"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
My other App Inventor tutorials are here:&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/03/android-app-inventor-lists.html"&gt;App Inventor - Lists&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://coxydave.blogspot.com/2011/02/android-app-inventor-simple-sms.html"&gt;App Inventor - SMS Services&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7627645469673313119?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8aIoLPaBk7vSUkrFSDYzSPcGgJ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8aIoLPaBk7vSUkrFSDYzSPcGgJ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8aIoLPaBk7vSUkrFSDYzSPcGgJ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8aIoLPaBk7vSUkrFSDYzSPcGgJ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/dp1R9EhITBk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7627645469673313119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7627645469673313119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7627645469673313119?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/dp1R9EhITBk/android-app-inventor-location.html" title="Android App Inventor - Location" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_8hltD7DetW8/TLmjGVQOd2I/AAAAAAAAHYo/EU9Vs3lXeSM/s72-c/Location_GUI.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/10/android-app-inventor-location.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEDQ3g-fCp7ImA9Wx5XFkw.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-400357830593223317</id><published>2010-09-16T16:29:00.001+10:00</published><updated>2010-09-16T16:31:12.654+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-16T16:31:12.654+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="My Tracks" /><category scheme="http://www.blogger.com/atom/ns#" term="mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="gps" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>My Tracks for Android</title><content type="html">In the past I have done some mapping of the various mountain bike tracks around the Central Coast. In a previous &lt;a href="http://coxydave.blogspot.com/2009/06/gps-mapping.html"&gt;blog post&lt;/a&gt; I documented how I used my Nokia phone and a bluetooth GPS dongle to do mapping.&lt;br /&gt;
&lt;br /&gt;
Now I have a HTC Desire this process has now become much easier to do and I only have to carry one device while I ride.&lt;br /&gt;
&lt;br /&gt;
The key to using the HTC Desire for mapping is the &lt;a href="http://mytracks.appspot.com/"&gt;My Tracks for Android&lt;/a&gt; application. This application was built by some Google engineers in their 20% time and the results have been open-sourced for the community to benefit.&lt;br /&gt;
&lt;br /&gt;
The My Tracks application uses the GPS in your Android device to record your location as you walk, run or ride. The resulting information can then be exported to either Google Documents to record the details or Google Maps to visualise the route.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a map produced by the My Tracks application.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="300" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com.au/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=115873633534979095170.00048ff413bbb75b52274&amp;amp;ll=-33.420338,151.34697&amp;amp;spn=0.021492,0.025749&amp;amp;z=14&amp;amp;output=embed" width="300"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;small&gt;View &lt;a href="http://maps.google.com.au/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=115873633534979095170.00048ff413bbb75b52274&amp;amp;ll=-33.420338,151.34697&amp;amp;spn=0.021492,0.025749&amp;amp;z=14&amp;amp;source=embed" style="color: blue; text-align: left;"&gt;2GO Track&lt;/a&gt; in a larger map&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
An example of the data collected and archived in Google Docs is &lt;a href="https://spreadsheets.google.com/pub?key=0AgBLDBeAYYrBdG9fd195dXBzTDVXbDRlQXdOUHA2ZkE&amp;amp;hl=en&amp;amp;output=html"&gt;here&lt;/a&gt;&lt;br /&gt;
.&lt;br /&gt;
My experience so far with Google My Tracks has been very positive and I will continue to use it for both my riding and running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-400357830593223317?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m0cyVUc0Mk3NC3L9BuRqwKDUvf8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m0cyVUc0Mk3NC3L9BuRqwKDUvf8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m0cyVUc0Mk3NC3L9BuRqwKDUvf8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m0cyVUc0Mk3NC3L9BuRqwKDUvf8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/lHJgdzq5BUk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/400357830593223317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/09/my-tracks-for-android.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/400357830593223317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/400357830593223317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/lHJgdzq5BUk/my-tracks-for-android.html" title="My Tracks for Android" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/09/my-tracks-for-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04ASXY9fip7ImA9Wx5XEkU.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-356382255124613172</id><published>2010-09-12T21:12:00.000+10:00</published><updated>2010-09-12T21:12:28.866+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-12T21:12:28.866+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="htc desire" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>HTC Desire - Android Phone</title><content type="html">Two weeks ago I got myself a &lt;a href="http://www.htc.com/www/product/desire/overview.html"&gt;HTC Desire&lt;/a&gt;. For the last couple of months I have been watching the release of various Android phones to decide which one I should get once my contract was up on my old Nokia. The winner was the HTC Desire. It was universally billed as one of the best Android phones available today.&lt;br /&gt;
&lt;br /&gt;
I had decided to get an Android phone because as a developer I would like to be able to create applications for my phone. The other reason to get an Android rather than a iPhone (iOS) was that all the tools required to develop applications are freely available and run on Windows or Linux.&lt;br /&gt;
&lt;br /&gt;
Over the coming months I will try to document my attempts at building some simple applications for the HTC Desire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-356382255124613172?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EcNkeCH8Rd9XVR75VOR9DTGKyl4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcNkeCH8Rd9XVR75VOR9DTGKyl4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EcNkeCH8Rd9XVR75VOR9DTGKyl4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EcNkeCH8Rd9XVR75VOR9DTGKyl4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/voF3rGzuVig" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/356382255124613172/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/09/htc-desire-android-phone.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/356382255124613172?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/356382255124613172?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/voF3rGzuVig/htc-desire-android-phone.html" title="HTC Desire - Android Phone" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/09/htc-desire-android-phone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQ348fCp7ImA9Wx5RFkk.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-79247574093645075</id><published>2010-08-24T21:23:00.000+10:00</published><updated>2010-08-24T21:23:42.074+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-24T21:23:42.074+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Don Norman - Business of Software Conference Talk</title><content type="html">In my first year of university, one of the first subjects used a book called '&lt;a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1282648183&amp;amp;sr=8-1"&gt;The Design of Everyday Things&lt;/a&gt;' by Don Norman. It was an interesting look at the design of normal objects and some of the mistakes made by designers when it comes to interface design.&lt;br /&gt;
&lt;br /&gt;
Last year Don Norman was a speaker at the Business of Software Conference. This &lt;a href="http://blog.businessofsoftware.org/2010/06/don-norman-at-business-of-software-2010.html"&gt;post &lt;/a&gt;from the Business of Software blog includes his presentation from the conference. Well worth watching for anybody in the software development field.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-79247574093645075?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ksrr9dWQorDKUyAprYGfBccbKH4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ksrr9dWQorDKUyAprYGfBccbKH4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ksrr9dWQorDKUyAprYGfBccbKH4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ksrr9dWQorDKUyAprYGfBccbKH4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/8CRTumkCDWY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/79247574093645075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/08/don-norman-business-of-software.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/79247574093645075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/79247574093645075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/8CRTumkCDWY/don-norman-business-of-software.html" title="Don Norman - Business of Software Conference Talk" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/08/don-norman-business-of-software.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8EQXo7eCp7ImA9Wx5SGUk.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-9179293468765037824</id><published>2010-08-16T17:30:00.000+10:00</published><updated>2010-08-16T17:30:00.400+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-16T17:30:00.400+10:00</app:edited><title>Gigapixel Photos</title><content type="html">Gigapixel images are large images made using special panoramic camera rigs.&amp;nbsp; Images are created from 100's and 1000's of individual images taken using a digital cameraand stitched together using panorama software.&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://gigapan.org/"&gt;Gigapan&lt;/a&gt; website includes a large number of images and the tools required to build your own gigapixel images.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; &lt;a href="http://gigapan.org/gigapans/56602/"&gt;Lavendar Bay, North Sydney&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://70gigapixel.cloudapp.net/"&gt;Budapest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gigapan.org/gigapans/48492/"&gt;Dubai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gigapan.org/gigapans/2934/"&gt;Boston&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gigapan.org/gigapans/7536/"&gt;Bath&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&amp;nbsp;This is a really interesting technology and could have uses other than just for landscape photographs. Imagine a photo of an item that you could zoom into to see detail. For example a circuit board would be visible at both the high level as well as at a very macro level to show traces and connects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-9179293468765037824?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GT3XW8p51wP9YFINdUEeNPSGTBA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GT3XW8p51wP9YFINdUEeNPSGTBA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GT3XW8p51wP9YFINdUEeNPSGTBA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GT3XW8p51wP9YFINdUEeNPSGTBA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/xM3ZTiAILFA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/9179293468765037824/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/08/gigapixel-photos.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/9179293468765037824?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/9179293468765037824?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/xM3ZTiAILFA/gigapixel-photos.html" title="Gigapixel Photos" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/08/gigapixel-photos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAHRHw4eSp7ImA9Wx5SEE0.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-7786162407096077992</id><published>2010-08-05T20:05:00.000+10:00</published><updated>2010-08-05T20:05:35.231+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-05T20:05:35.231+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="wave" /><title>Google Wave is being discontinued.</title><content type="html">According to the Official Google Blog, Google Wave will no longer be developed as a standalone product. Although the product was reasonably well received internally and by Google fans it never managed to be embraced by the general public.&lt;br /&gt;
&lt;br /&gt;
The underlying technology will continue to be developed as part of other products and the site will be maintained till at least the end of the year.&lt;br /&gt;
&lt;br /&gt;
For more information refer to the &lt;a href="http://googleblog.blogspot.com/2010/08/update-on-google-wave.html"&gt;Official Google Blog&lt;/a&gt; post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-7786162407096077992?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EUC6J9NKyY7e0_cAXZzts2Xh6Xk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EUC6J9NKyY7e0_cAXZzts2Xh6Xk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EUC6J9NKyY7e0_cAXZzts2Xh6Xk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EUC6J9NKyY7e0_cAXZzts2Xh6Xk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/D-7l4getN-k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/7786162407096077992/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/08/google-wave-is-being-discontinued.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7786162407096077992?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/7786162407096077992?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/D-7l4getN-k/google-wave-is-being-discontinued.html" title="Google Wave is being discontinued." /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/08/google-wave-is-being-discontinued.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4HQX89eSp7ImA9WxFaEU0.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-50706145346173573</id><published>2010-07-14T20:55:00.000+10:00</published><updated>2010-07-14T20:55:30.161+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-14T20:55:30.161+10:00</app:edited><title>The Joys of Engineering Leadership - Google I/O 2010 TechTalk</title><content type="html">An interesting talk was given by&lt;span style="font-size: small;"&gt; Brian W. Fitzpatrick and Ben Collins-Sussman at Google I/O 2010. For anybody who leads a team of software engineers this has some great pointers on how to be a successful leader. &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Watch the video &lt;a href="http://code.google.com/events/io/2010/sessions/lose-friends-alienate-people-engineering-leadership.html"&gt;here&lt;/a&gt;. A PDF containing the slides from the presentation is available from this page.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;Enjoy.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-50706145346173573?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3X7AJaS8pm7RxSzToJd3DGfDuLs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3X7AJaS8pm7RxSzToJd3DGfDuLs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3X7AJaS8pm7RxSzToJd3DGfDuLs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3X7AJaS8pm7RxSzToJd3DGfDuLs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/HDKm6pBoi5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/50706145346173573/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/07/joys-of-engineering-leadership-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/50706145346173573?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/50706145346173573?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/HDKm6pBoi5k/joys-of-engineering-leadership-google.html" title="The Joys of Engineering Leadership - Google I/O 2010 TechTalk" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/07/joys-of-engineering-leadership-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4ARH44eSp7ImA9WxFVFUQ.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-3757599081772889760</id><published>2010-06-15T20:15:00.000+10:00</published><updated>2010-06-15T20:15:45.031+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-15T20:15:45.031+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google I/O 2010 - Session Videos</title><content type="html">If you didn't get to go to Google I/O this year the next best thing is to watch the videos. Most come with a PDF of the slide pack to follow along.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/events/io/2010/sessions.html"&gt;Google I/O 2010 Session Videos&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A large variety of different talks covering most of the major Google products. Something for everyone.&lt;br /&gt;
&lt;br /&gt;
Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-3757599081772889760?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2F8MjK3jgTly9_R0XUprZH83GOU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2F8MjK3jgTly9_R0XUprZH83GOU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2F8MjK3jgTly9_R0XUprZH83GOU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2F8MjK3jgTly9_R0XUprZH83GOU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/PRo4pDMUw8Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/3757599081772889760/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/06/google-io-2010-session-videos.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/3757599081772889760?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/3757599081772889760?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/PRo4pDMUw8Q/google-io-2010-session-videos.html" title="Google I/O 2010 - Session Videos" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/06/google-io-2010-session-videos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUDSHc-fSp7ImA9WxFWFUs.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-4809659864202965938</id><published>2010-06-03T21:57:00.000+10:00</published><updated>2010-06-03T21:57:59.955+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-03T21:57:59.955+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><title>First Look at the Arduino Duemilanove</title><content type="html">Received my &lt;a href="http://arduino.cc/"&gt;Arduino Duemilanove&lt;/a&gt; from &lt;a href="http://www.toysdownunder.com/"&gt;Toysdownunder&lt;/a&gt; today. It was ordered yesterday morning and shipped late yesterday afternoon. I got it just after lunch today.I am very impressed by Toysdownunder and their fast turnaround time.&lt;br /&gt;
&lt;br /&gt;
I purchased the &lt;a href="http://toysdownunder.com/arduino-inventors-kit.html"&gt;Arduino Inventors Kit&lt;/a&gt; due to the larger number of sensors and other pieces like servos and motors that are included. The other notable inclusion is a booklet of simple projects showing how to use the various sensors included in the kit. &lt;br /&gt;
&lt;br /&gt;
After I got&amp;nbsp; home tonight I installed the Arduino IDE and connected the Arduino to the USB port. After installing the USB Serial Port drivers the Arduino was immediately recognised by the PC.&lt;br /&gt;
&lt;br /&gt;
Once the Arduino was connected to the PC I started the IDE and loaded the 'Blink' sketch. After compiling and loading it to the Arduino using the IDE. Almost immediately the small yellow led on the board starts flashing.&lt;br /&gt;
&lt;br /&gt;
Over the next couple of days I will run through the various circuits in the booklet. As I have not had any experience with electronics previously it should be an interesting couple of weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-4809659864202965938?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/g8MTFaGY4RUaKcwhTpkXxGbUUlY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g8MTFaGY4RUaKcwhTpkXxGbUUlY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/g8MTFaGY4RUaKcwhTpkXxGbUUlY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/g8MTFaGY4RUaKcwhTpkXxGbUUlY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/veWW64OVsuE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/4809659864202965938/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/06/first-look-at-arduino-duemilanove.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4809659864202965938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/4809659864202965938?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/veWW64OVsuE/first-look-at-arduino-duemilanove.html" title="First Look at the Arduino Duemilanove" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/06/first-look-at-arduino-duemilanove.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYNQXc6fSp7ImA9WxFXGUw.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-6225369854598187717</id><published>2010-05-27T08:49:00.000+10:00</published><updated>2010-05-27T08:49:50.915+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-27T08:49:50.915+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="uluru" /><category scheme="http://www.blogger.com/atom/ns#" term="photos" /><title>Moonrise over an Ayers Rock Sunset</title><content type="html">&lt;a href="http://4.bp.blogspot.com/_8hltD7DetW8/S_2kfzK5zMI/AAAAAAAAG5o/4LXUf8eKI1E/s1600/DSCN0386.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_8hltD7DetW8/S_2kfzK5zMI/AAAAAAAAG5o/4LXUf8eKI1E/s320/DSCN0386.JPG" width="320" /&gt;&lt;/a&gt;Taken on Wednesday May 26th 2010 from the &lt;a href="http://www.ayersrockresort.com.au/sounds-of-silence/"&gt;Sounds of Silence&lt;/a&gt; location.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-6225369854598187717?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/S9Qd0bQO6WaaHsXcoMPezIsUK_o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S9Qd0bQO6WaaHsXcoMPezIsUK_o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/S9Qd0bQO6WaaHsXcoMPezIsUK_o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S9Qd0bQO6WaaHsXcoMPezIsUK_o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/w8pK_mIzqxY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/6225369854598187717/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/05/moonrise-over-ayers-rock-sunset.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/6225369854598187717?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/6225369854598187717?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/w8pK_mIzqxY/moonrise-over-ayers-rock-sunset.html" title="Moonrise over an Ayers Rock Sunset" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_8hltD7DetW8/S_2kfzK5zMI/AAAAAAAAG5o/4LXUf8eKI1E/s72-c/DSCN0386.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/05/moonrise-over-ayers-rock-sunset.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08CQ3k5eip7ImA9WxFXFkk.&quot;"><id>tag:blogger.com,1999:blog-4242155376565829383.post-5227990783459291793</id><published>2010-05-23T09:27:00.003+10:00</published><updated>2010-05-24T07:24:22.722+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-24T07:24:22.722+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Google I/O 2010 - Keynotes</title><content type="html">Google I/O 2010 finished two days ago. Lots of interesting news for HTML5 and Android. Here are the two Keynotes from Day 1 and Day 2.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/a46hJYtsP-8&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/a46hJYtsP-8&amp;amp;hl=en_US&amp;amp;fs=1" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object height="295" style="background-image: url(http://i2.ytimg.com/vi/IY3U2GXhz44/hqdefault.jpg);" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/IY3U2GXhz44&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/IY3U2GXhz44&amp;amp;hl=en_US&amp;amp;fs=1" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4242155376565829383-5227990783459291793?l=coxydave.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3v84zWRXNpoqc6_1cWtf1F_lU9Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3v84zWRXNpoqc6_1cWtf1F_lU9Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3v84zWRXNpoqc6_1cWtf1F_lU9Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3v84zWRXNpoqc6_1cWtf1F_lU9Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/cHAeR/~4/va-zlCGT-_Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://coxydave.blogspot.com/feeds/5227990783459291793/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://coxydave.blogspot.com/2010/05/google-io-2010-keynotes.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5227990783459291793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4242155376565829383/posts/default/5227990783459291793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/cHAeR/~3/va-zlCGT-_Q/google-io-2010-keynotes.html" title="Google I/O 2010 - Keynotes" /><author><name>Dave Cox</name><uri>http://www.blogger.com/profile/03571763707968242416</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://coxydave.blogspot.com/2010/05/google-io-2010-keynotes.html</feedburner:origLink></entry></feed>

