Wednesday, March 14, 2007

GeoTracing: A GeoTagging Platform

If you are looking for a tracking, geotagging platform check GeoTracing and the applications developed with it. KeyWorx the underlying framework "has been under development at Waag Society for the last 5 years."

Waag Society is the same group behind the really cool Locative Media. GeoTracing is Open Source and headed by Just van den Broecke.

On a Mac running OSX and a Bluetooth GPS receiver you can run one of the applications developed with it. Grab a copy of GPSDoor and install it. Launch the app, configure the GPS receiver and if all goes well you will be able see your location on Google Maps (based on MeHere).

Create an account, login and you can then track yourself live using TraceLand, one of the apps that uses the framework.

You can also use a J2ME Midlet, Mobitracer on a Nokia phone with Bluetooth support to send your position to a server and log tracks. The application also allows photo uploads.

News Front

. A patent for GPS underwater surfaced at New Scientist via Slashdot

. Location Intelligence Conference announced. It will be happening April 16-18 2007 in San Francisco, CA

. Is Galileo in trouble?

. NXT (a Philips company) announced the availability of GPS enabled chipsets for geotagging devices.

. Rave Wireless has GPS-based apps that some universities are making use of. Among them one for checking bus schedules and another for tracking.

. Not really GPS based, but Mobio has location-based applications for mobile phones.

. Is there a phone coming in Google's future?

. Want to find a latitude and longitude? Try Naffis.

uLocate Widgets for AGPS phones

uLocate announced availability of Where , a markup language for widget scripting and a developer program for those interested in writing location based applications for some CDMA-based phone models offered by Sprint.

To run the widget hosting application on a phone you pay $2.99 a month. This is the same framework used to develop Buddy Beacon on the Helio phones.

Based on AGPS capabilities the built-in functions supported by uLocate's markup language include GpsStart, GpsStop, GpsSend (to send a given position) and Load to obtain among others values latitude, longitude, speed, heading and altitude. From the code examples:

function showMyLocation() {
var lat = load('pos_lat');
var lng = load('pos_lng');
document.mylocation.text='I am at ' + lat + ', ' + lng;
There is an equivalent set of variables that can be loaded with data obtained from cell towers triangulation.

The cool thing is that it makes things really easy for someone that wants to script widgets based on this platform. This will also make life easier for Sprint. Now they can just say go use uLocate's scripting.

Sites like PubWalk will be using Where.

A company that worked in the past with uLocate is Flagr which provides a way to flag locations online and through mobile phones.

First on GigaOm, Press Release.

Wednesday, March 07, 2007

PPC Dev Tools: eMbedded Visual C++

If you look after tools and libraries for Windows Mobile development you might want to start with Embedded Visual C++ 4.0.

EVC is a freely available (242Mbytes) download from Microsoft's website. You can use this tool for native code development.

By going native you are cutting off support for managed .NET development from the scene. But you are sticking to performance and small footprint on your executables. The idea behind frameworks is that you can write code faster.

With EVC++ 4.0 can target PocketPC's and Smartphones devices running PPC 2003 (Windows CE 4.2) with the emulators distributed with the Pocket PC 2003 SDK (a separate download).

Check this article on Development Tools at MS website and in particular the matrix at the bottom of the page with a comparison of their IDE's capabilities. Here is another article describing Pocket PC development tools.

eMbedded Visual C++ 4.0

Be aware that you will need an installation key which can be found towards the bottom of the download page. Notice the latest version of the corresponding Service Pack available (currently SP4 is the latest).

Don't install older IDE's after newer ones as described at the end of the "Introduction to Development Tools" paper. Embedded VC++ 4.0 installs an older versions of the Platform Manager, version 4.0 which includes the Virtual PC/Windows CE Emulator Driver.

After that you will start seeing a ballon saying that 'Virtual PC/Windows CE Emulator' will cause Windows to become unstable. Windows has prevented these drivers from loading.' Check this post about how to stop getting it (it does take quite a few steps).

The install also includes the Standard Windows CE SDK .NET (1.0 SP1).

The IDE provides Wizards for ATL and MFC code generation with support for a whole list of CPU's where Win CE runs. You will need corresponding emulators for each of these CPU's to run the compiled code.

For that download the corresponding SDK, in this case Pocket PC 2003 (84Mbytes) in order to obtain the necessary emulators (OS Validation required).

You can find a version of STL (Standard Template Library) for eMbedded Visual C++, an Open Source Library that remove exception handling from the original STL here.

MarshallSoft has a GPS library for eVC++ that includes code examples showing how to read and parse NMEA sentences from a serial port.

Check also another download called "Developer Resources for Windows Mobile 2003 Second Edition" with White Papers and code examples (Validation of Windows OS version also required).

Friday, March 02, 2007

GPSylon: Tracking Open Source

Looking for a way to read from a serial port from Java code I ran into RxTx, an OSS library that provides native support for Windows, Linux, Sun and Mac.

RxTx is used by GPSylon, an OSS project headed by Christof Dallermassl that reads data from a GPS receiver and displays its current position on a moving map with data obtained from Expedia servers.

GPSylon supports several Garmin models, NMEA log files, output from the gpsd daemon and connections from a serial port.

You can import/export tracks to/from GPX formated files. Location marks (waypoints) that can also be imported/exported are stored in a HyperSonic Java database by default. Directions are provided for use of MySql for larger datasets for better performance.


The project source and binaries are hosted by SourceForge. To run GPSylon you need Java JRE/JDK version 1.4 or greater (it doesn't support 1.3).

For Windows XP copy the native DLL located at \gpsylon_bin-0.5.2\lib\native\Windows XP\x86\rxtxSerial.dll to a directory listed in your PATH environment variable. The easiest (but not the cleanest) way is to copy it to \Windows\System32.


With Java installed and accessible from a command-line window go to the directory you extracted GPSylon and run the following command:

java -jar gpsylon-0.5.2.jar

At the first run you will be asked about creating a new database and support files to keep track of map downloads.

Moving Map

I tried it with a Bluetooth receiver through a serial connection. Set the COM port under File | Preferences | GPS Device. Apply the changes, close the app and relaunch it. Under Layers, check the "Position layer".

Now under GPS check "Follow me" and "Automatic Map Download". If GPSylon can read good data from your receiver you should be able to see a map of the region. Zooming in will work up to a point. Moving around will leave "bread crumbs" by default. You can control colors and intervals from the Preferences dialog.

If you loose connection with the receiver you might need to restart the process all over, it seems that getting Java and native code to stay in sync requires a bit of work. You can check the raw NMEA data from GPSTool | View GPS Raw Data.

In fact, GPSTool can be used as a command-line tool to read data from a GPS receiver (and NMEA log files). You can also load tracks generated with GPSDrive, another open-source project.

According to its documentation GPSylon uses the OpenMap framework (in particular its MapBean class). It provides a plugin architecture so it can be extended to provide extra features. Its current version includes plugins for altitude tracking, map data management, XML data import from Kismet (wi-fi sniffer) and average position calculation.

If you want to get your hands dirty with some Java code and Open Source this is a great place to start.