Google code

The source code for the Android version of I Am Here is now hosted on Google code GitHub, under an Apache 2.0 licence.

Posted in Uncategorized | Leave a comment

Amazing Android Apps for Dummies

The I Am Here application has been reviewed in the new book Amazing Android Apps for Dummies, by Daniel Begun. It goes on sale through bookstores March 6th, and is already available on the Kindle.

Posted in Uncategorized | Leave a comment

Another blog

While I will continue to write about GeoSMS news here, I have also set up another blog to write about other research I’m doing. If you’re interested, come visit

Posted in Uncategorized | Leave a comment

Why embedded URLs should not be used for geotagging

Many previous attempts at SMS geotagging have simply incorporated a Google Maps URL into the message body. While this maximizes the chances that an existing handset can display the location, it has many drawbacks that make it unsuitable as a future geotagging standard.

  • It relies on the receiving device having internet access. That is not a valid assumption. Some might argue that devices without internet access can’t display locations, but that’s not true. Many devices contain pre-installed maps, and others might choose to display the location with, say, a compass needle and distance counter.
  • URLs are verbose. An SMS is limited to 160 characters, so every letter counts. The overhead for a Google Maps URL is or 30 characters, versus four characters for geo:. In theory you could set up a shorter URL, but you’d never get down to four characters.
  • URLs change. We think of Google Maps as a permanent part of the internet’s infrastructure, but it’s only been around for five years. Some time in the future Google may go out of business, start charging for the service, or change the syntax.
  • Google Maps URLs have no way to specify altitude or accuracy. Maybe you could set up a different mapping service that does take those parameters, but you’d have to make the website as reliable as Google, available around the clock and able to handle heavy loads.
  • The receiving handset has no discretion over how to display the location. It will be displayed as a pushpin on an English-language Google Map, and that’s it. No way to show your current position as well. No way to show the rest of the geotagged message at the same time. And no way to display the direction and distance to the location.
  • In general, a URL geotag is not unambiguously machine-readable. A parser may do a decent job of extracting the latitude and longitude from a Google Maps URL, but for arbitrary URLs it’s not possible to do this reliably. Why does it matter? Because there are applications where the location has to be processed by a machine. Imagine an SMS-a-Taxi service where you send your desired pickup location. A server on the back end has to be able to parse the location and route the SMS to the nearest available taxi without any human intervention.

The aim of geotagging is to transmit a location, but the function of a URL is to display one, which is a different thing. The URL only contains a view of the location, not necessarily the location itself. It’s the difference between sending someone a fax of a printed document versus e-mailing them the file. The fax might be human-readable, but it’s useless to machines. The file itself can be put to many uses.

So in conclusion, URLs are not suitable as a geotagging standard. If you really want to make sure that a receiving handset can display a location, use a proper geotagging standard such as geosms and include a URL. It’ll cost an extra 20-30 characters, but in the long run it will be more useful to the recipient.

Posted in Uncategorized | 1 Comment

Added satellite view to Android app

The I Am Here Android application has been updated again. The 1.04 release now has the option to view maps in either satellite mode or the usual map mode. The feature was requested by some people who use the application in remote areas.

Posted in Uncategorized | Leave a comment

The GeoSMS name

So you’ve figured out a way to geotag SMSes. What are you going to call it? GeoSMS of course. Too bad everyone else had the same idea.

Here are all the examples of GeoSMS we’ve come across –

  1. The GeoSMS standard. That’s us. Our Android application is called I Am Here.
  2. The Open GeoSMS Standard Working Group at the Open Geospatial Consortium. Their application is called OpenGeoSMSer.
  3. The GeoSMS Android application, published by Geeksville Industries.
  4. The GeoSMS Google Maps mashup that displays SMSes at their tagged location.
  5. The GeoSMS HTML5 web application.
  6. The geosms server-side application, part of the InSTEDD Golden Shadow project.
  7. The GeoSMS 1.0 Java application for mobile. According to the blurb “Send and receive sms in your language. For example: Georgian, Armenian, Azeri,
    chinese etc.”
  8. The geo sms blogspot blog. Not sure why it’s called geo sms. May geo has a special meaning in Urdu.

All very confusing. I’m thinking maybe we should have called our standard GeoTXT instead.

Posted in Uncategorized | 1 Comment

A history of SMS geotagging

When we were designing the GeoSMS standard we looked around for other examples of SMS geotagging to see if it had already been done. It turns out there were quite a few previous applications, but nothing with a published standard.

In early 2007 the E-TEN Glofish M700 was launched, one of the first GPS-equipped smart phones to hit the market. Bundled with the phone was an application called Location SMS that let you send your GPS coordinates in human-readable form.

Based solely on the screen shot, it seems to use the reader-friendly B DD:MMSS.SS format to represent the location.



The TrekBuddy application, which runs on Java-enabled GPS devices, has had an SMS capability since September 2006. The SMS format wasn’t officially published, but it was mentioned in a forum post

$TBMYT,1179735361,5000.29965,N,01749.65780,E,Be quick*00

  • Header $TBMYT or $TBIAH – TrekBuddy My You There or I Am Here
  • Timestamp in secs (currentTimeMillis / 1000)
  • Coordinates in the same format as in NMEA
  • User message (ie. “Be quick” in this example)
  • And end as NMEA (*00), but checksum is not implemented

The GeoSMS service was established by Coldbeans Software, a Moscow-based company, in November 2007. If you send an SMS of the form *location* message to +7909 921 3670 your message will be displayed on their on-line Google map at the specified location.

Although this is technically a published standard, the definition of location is “anything understood by the Google Geocoding API”. This means the receiving application needs an internet connection. It’s also not that accurate, unless you want to specify your location down to the street number. In which case, why bother with geotagging?

From the same group of Muscovites came another GeoSMS service in September 2009, part of their Geo Messages suite. This is an HTML5 application that lets you send your current location, formatted as a Google Maps URL.

Google Maps URLs, to be honest, are probably the best way to send a location to another person given the currently-deployed handsets, since they have the best chance of being displayed correctly. But they aren’t suitable as a geotagging standard because they require the receiving device to have internet access, and they rely on a proprietary Google interface. The use of has similar problems, plus it’s at the mercy of the Libyan government.

Finally, there’s the GeoSMS Android application, released by Geeksville Industries in March 2010. This application also uses Google Maps URLs to encode the location.


Posted in Uncategorized | 2 Comments