I have been using a wiki on my development machine to record the various items of interest I have found in my research thus far.
I have spent most of my time thus far getting familiar with the Windows Mobile development environment. I have had a desire to learn how to create research papers applications for my mobile device for some time and this is a great opportunity to do so.
I am actually doing my development on a machine that is running Apple OS X.
Below is a partial list of the software I am using
I have had experience developing applications with Visual Studio in the past, but never with C# and never for a Mobile device. Having no real prior knowledge of development for windows mobile means that I have to spend a lot of time learning new things.
I have been primarily using the various websites which will be listed in the link section. However, I have found a great resource .NET Compact Framework Programming with C#. This is the entire book online for free thanks to UT's subscription to safari.
randy dodgen likes the following c# books.
murachs c# 2005 - walks you through a common application
The eventual goal of this project is for it to be able to work on mobile hardware. Due to this I have obtained the various pieces of hardware that will enable to fully test my software.
Here are the specs:
What is great about the phone is that I can get on the internet with it anywhere that I have cell phone reception. It also has a gigabyte of storage, a camera, and bluetooth.
For this project to work I need to have a gps receiver. Unfortunately, my phone does not have one built in. On a side note I suspect that within 2 years most “smartphones” will start coming with gps receiver integrated in them.
I purchesed a gps receiver from geeks.com for $44.99.
I had a great deal of difficulty actually getting my pda to connect to the gps receiver. This was primarily because the device, the bt-5, came with 1 page of documentation for an operation system that I wasn't even using. To compound this problem the device is literally a blackbox. There is no trace of even the manufactures name on it. The only marking what so ever is the FCC identification number. After much hardship and gashing of teeth I finally got the blasted thing to work using the documentation for some other company for a similar device. online casino
Thus far the code I have been working with is largely based on a sample that was provided by Microsoft for interfacing the a GPS device using windows mobile 5. However, I have had limited success with it. The primary problem that I face is that I am doing most of my development using Device Emulator which allows me to emulate mobile devices. Yes, that is right, I am emulating a pda on a machine that is emulated. Aside from being abysmally slow it is also unable to connect to my bluetooth gps receiver. Because of this I have attempted to emulate a gps receiver on the pda. My attempts to do so thus far have resulted in failure. However, it should be possible using the previously mentioned guide. If I can not get this to work my other option is to use a virtual gps device on windows and have my emulated mobile device connect to it using Virtual Machine Network Driver for Microsoft Device Emulator
here is a screen shoot of my emulated windows mobile 2005 device running my gps software
The following is the code used for my application.
map serial 0 to com3
gpslib likes to have $GPGGA , and $GPGSV maybe just 1 will do it must have $GPRMC
pywin32 for python 2.5
http://exogen.case.edu/projects/geopy/ - geo python tools
I am also keeping a google notebook full of links that I come across. I use this tool because it allows me to seamlessly make notes as I find things on the net without loosing my train of thought.
The page for this project can be found at
http://www.webrpc.com/service.jsp - WebRPC - Geocode lookup - useful for geodata aggregation
http://www.tma.dk/gps/ - another fellow who has cobbled together useful info
http://abhijitbhosale.com/Knowledgebase/GPS_data_PPC_2002_emulator.htm - how to connect serial to emulated device
http://conferences.oreillynet.com/where2007/ – gps conf
http://www.developerfusion.co.uk/show/4634/ – gps app dev guide
http://www.opennetcf.org/home.ocf – .net libs
http://www.gpsvisualizer.com - good viz data
http://com0com.sourceforge.net/ - virtual null modem, perfect
http://users.hol.gr/~dzach/gpsfeed/ - gpsfeed
http://gps-earth.sourceforge.net/ – gps sim maybe
Navizon provides virtual gps devices to windows mobile devices that do not have gps receivers by using various wifi and cellphone towers as reference points. This could make the project useful to many more people.
Framework for real-time exchange of geospatial data for mobile devices
Create a framework that would provide an easy method for associating data with GPS coordinates. This data would then be publicly accessible and modifiable in real time. Users of mobile devices are the target audience.
To paint a clear picture of the idea I think examples of how it will be used are useful, so I have provide a few.
1) You are visiting a city for the first time, and you would like to explore it on your own. With this project you would be able to walk around the city and when in the proximity of objects of interest the device could alert you. You could decide to view the information for the point. This information might be in the form of a wiki article, audio, or even video.
I intend to make this program work both ways. I want the users to be able to pull information off of the net about the locations that they are at. I also want the user to be able to edit information about the location that they are at.
I envision having categories that people can subscribe to. For instance there might be a “trees of interest” category, or a “cheap burgers” category. These could vary based on your location. They would be live and change all the time.
2) Kids going to houses on Halloween. They designate what each houses are providing the best and worst candy. They proceed to share this information with their friends using this project.
3) Image that it is around lunch time, and you and several of your friends don’t have any clue where they would like to eat. Using this program someone could pull out their pda and find all restaurants within a specified range. The users could look at the reviews of each place, and perhaps any specials which they might have that day. It would be possible for that place to have their entire menu the wiki page associated with it.
4) Publish your physical position to the net in real time. Allow your friends to view this information, perhaps in the form of an RSS feed. You could also have your friends locations sent to your pda so that you would know when they are near, or make it easy to find them.
5) A botanist is walking around in a forest, finds some plant of interest. They take a photo of said plant, record the position, and write a short description of the plant. If out of the range of their cell tower then the data could be stored on the pda until it was united with the Internet. This would be the asynchronous mode. After the information is put on the database. The botanist and others can modify it. Perhaps adding useful info etc.
Later on another person could be walking around in the woods with and have that plant show up as a nav point.
This will be a web-based project. Users would be allowed to submit information for GPS coordinates, and metadata about those points such as tags. This data would be unrestricted, allowing the users to upload photos, audio, video, or any other data they have.
The data could be stored in a MySQL database. Then it could be delivered in a form of XML. I would likely output the data as GeoRSS.
Because I intend to use open standards it should not be very difficult to port the client to many platforms. However, for the scope of this project I will focus the client development to one platform.
I intend to design this program for my Windows Mobile device, which is the HTC Wizard. I have an external GPS device that interfaces with the device. I will code the client program with Visual Studio 2005 using C# as the programming language. This program will be designed with the assumption the PDA has a constant Internet connection. However, a cached offline mode would be possible as well.
More information can be found at my wiki: http://josh.gourneau.com/wiki/doku.php?id=soc
The primary function of the client would be to get the GPS location of the user, and upload that location to the web. Then the server could provide useful information that is near the user.
The users identify categorize that they like, and only get the data which might be interesting to them.
The users would also be able to modify and create data about points. This data would be uploaded to the server and added to the databases.
This idea will not escape me. The first record I have of it is a sound recording that I made created on 09-17-2006. This was because I felt it was as if the idea was going to make me explode if I did not let it free. I proceeded to tell anyone about it who would listen.
Audio recordings from the time are available at my blog: http://josh.gourneau.com
My method for determining if an idea is good is very simple. If you can think of situations when the idea would be useful, then it is a good idea. I can’t walk around outside without thinking about using this idea.
I think this is an exciting idea. Never before in the history of humans has this instant form of communication been possible. It is almost as if one can tap into the global mind. Having a device that is aware of its location and able to find a wealth of information about that point. This is what the web is about, sharing information. I am a holder of the view that we are humans at our greatest are informavores. That is that we exists to create and understand information.
I recently read an article on cognitive load and user interface (http://tantek.com/log/2007/02.html#d19t1813). It basic idea that is that the easier you make some technical process the more likely users are to use it, just because it is easy. I really believe that is key for successful. I want this idea to be so simple and easy to use that feels like it is part of the user, a mind augmentation.
There are many fantastic open source tools that can be used to accomplish this objective. What is important is build a community of people to use it. When people really being to realize how it can change lives simply because of this instant access to information. It will be an amazing time. I am in love with this idea and am convinced that it has the potential to change the way that people think about the world around them.
I acknowledge that the timing for this project might not be just perfect because of the requirements for adoption, but that time is near. There are projects like http://placelab.org/ that are helping to create location aware devices that are not dependent on GPS. The foundation has been laid, it just now simply a matter of assembling the pieces and making it something that everyone can use and benefit from. People may not realize it now, but data like this will change the way that humans interact with our environment.
This might sound like I am a ranting lunatic, but I believe that this is something to get excited about. The idea is not complex, and the technology exists to make this happen with relative ease. Indeed, there are many services to associate data with GPS. My objective is to make a standard compliant open source framework for everyone to use. I want to remove any software barriers that might exist.
I want to get this idea out of my head, and into the world. I want to share it, I want people to adopt it, I want it to grow and take on a life of its own. See my essay.