Neo 1973 comes with (A)GPS. GPS opens a lot of new opportunities – which ones you can decide. Nevertheless, one need to figure out a good way of utilize this in a more general level. The purpose of this post isn’t to discuss the Neo 1973 as a specific product, but to lift the considerations regarding location-based software to a higher – and more general – level.
Until now GPS has primary been used for navigation (please don’t take this to literal – I know it’s been used for a lot of other stuff, too, but this is merely a statement used to widen the mind and open it for new/other approaches), but as several different kinds of products with GPS appear, one has to rethink the whole idea in order to take proper advantage of the fact of GPS (as one might call it).
(As an aside, I would like to refer to OpenMoko to justice the generalization of location-based software: it would be stupid not to have a common location-library – pick an arbitrary name for it of your own choice – instead of every little application should implement general location events on their own.)
Personally I have a couple ideas to location-based software: location-based profiling (mute, non-vibrating among others) and location-based reminders. The first is probably more self-explained than the latter, which is thought of as a when you should be reminded of something on behalf of location instead of time. These ideas has forced me to try to think of location-based software in a generic way.
The first realization is that a generic type of usage is event-driven/-based. Others probably exist, but in this post I’ll stay with the event-driven-types.
This would probably be an appropriate time to excuse for my English, and for you to accept my apology and get a cop of black power aka. coffee, tea, or whatever you fancy the most at this particular time.
As earlier mentioned, GPS has primarily been used for navigation. Here the events are whenever the driver should do anything else than just driving straight ahead, e.g. taking a turn, exiting the highway or whatever. Several software products come with ability to make favourite positions, too, and in that way creating a quick route from a favourite location. In the case of navigation, GPS is used intensely every time – assuming that it’s mostly used at new routes. The case with position-base software is slightly different – at least in some situations. In particular, I’m thinking of the two examples given earlier with location-base profiles and reminders. Here whole areas has to be saved (“Home”, “Work”, “School”, …) in such a way that it can be identified and acted upon, i.e. execution of a (system)event.
Two key observations, with a basis in the two examples given, are that it is required – or desired - to identify whenever entering or leaving an area. The solution to this problem depends highly on in which way an area is created. First the term “area” should be defined: a area is a named collection of positions. Then areas can be created in at least the following different ways:
- a radius of the current position making the area circular; all positions are interconnected
- a set of positions not necessarily interconnected (if some positions of the intended area are unavailable, e.g. due to access limitation)
Data-wise it is often less demanding to use the first option, but it requires more computations (it is really enough to save one location and a radius – from that it would be easy to calculate when the current position is inside that area or not). Reversely, the locations in the second option should just be saved in an appropriate data structure and then searched with a good search algorithm (depends of course on the chosen data structure). Both methods (and more?) could be offered, but the crucial question probably is, how big cells/positions are? Maybe several introductory experiments should be made. In addition, distinct users may have distinct needs, so maybe it’s best to make the location software so generic, that these and more can all be used. It’s certainly a point of interest and one requiring further focus.
Lastly I would, too, like to add another important application: the interface and cooperation with other triggers (such as time). Maybe a user would like to have a reminder when leaving an area, or at least at 3 p.m. This should be made in a natural way, and that requires a significant amount of thoughts leading to a sound architecture.
Well, still looking forward to receive my Neo 1973 so I really can address these issues. In the meanwhile I’ll start addressing these problems in an abstract level as done hitherto.