Appending Run Data Can Cause DEATH!


I wanted to write an interesting possibly DEADLY consequence of appending run data to a previously recorded run
The Scene is the beautiful Blue Mountains west of Sydney Australia a place of many many cliffs
Bill Philips is doing the tourist thing and decides to track a run in the bushland on the top of the escarpment
Later Bill stops tracking his run
Then not long after Bill resumes tracking his run and appending run data 100M down the track

A year later Bill Philips visits the same location and thinks that he will do that run again
The track is a little overgrown since his last visit and Bill is finding it hard to pick his way through
Bill ended up at the place where he stopped tracking and his device is pointing him to where he resumed tracking.

Bill thinks he as found the path heading to where he resumed tracking
But instead Bill finds the edge of the cliff which he promptly falls off and Bill is never seen since
so you could say that Bill was killed by his own app

You may think that this is a far fetched story but in the Blue Mountains tourists wandering off the edge of the cliff
is not an uncommon event because in places the vegetation hides the edge of the cliff, I know of one case of a geo-cacher who was led off a cliff by his GPS.

so really this kind of feature /bug can be VERY DANGEROUS


You could log into the database the event of stop and start so that someone following a run knows the recorded path ends at stop and don’t blindly follow on a straight line from the point the run stopped to the point it re-started.

It would be fun to implement this as it would need the use of the onUpgrade method to update the database schema to add a column for this extra data. Other status could be an id cause for the stop (rest, lunch, shoot photo at this place, etc…) or maybe a text comment or a photo.

Also, if for some reason the phone went out of battery while tracking, upon restarting the track for an existing run you should insert a stop event at the last location for the run if it does not exist.