Title text: Saturday is game night
Geohashing is a sport created by Randall based on reaching a random location determined by an algorithm that uses a hash function that involves the current date, location and the Dow opening price. The Dow Jones Industrial Average is a stock market index dealt in New York City.
The algorithm is built in a way that:
- Makes it impossible to plan a meeting in advance - because of the Dow.
- Changes every day.
- Gathers people that are nearby - everyone within the same 1°×1° grid square gets the same position.
The algorithm works as follows:
- Take the current date in the format yyyy-mm-dd- and append the most recent opening value for the Dow Jones Industrial Average.
- Pass this string through the MD5 algorithm.
- Divide the hash value into two 16 character halves, and convert each half to a decimal.
- Take the integer portions of your current current coordinates and append the decimal hash values.
MD5 is a cryptographic hashing algorithm, and converts plaintext data into a seemingly random 128-bit (32 character) string. A good hashing algorithm should have three main properties: it is non-reversible and you cannot generate any plaintext data back from the hash, a given sample of data will always produce the same hash value, but even a tiny change to the original plaintext should produce an entirely different hash.
The example co-ordinates are for the Google headquarters in California, as you can see here: 37.421542 -122.085589.
Originally intended as a joke, there are people which do geohashing regularly. Please see the link to the xkcd wiki above.
- Date (example): 2005-05-26
- That date's (or most recent) DOW opening: 10458.68
- [Concatenate, with a hyphen: 2005-05-26-10458.68]
- md5: db9318c2259923d08b672cb305440f97
- [Split it up into two pieces:]
- 0.db9318c2259923d0, 0.8b672cb305440f97
- To decimal: 0.857713..., 0.544544...
- Your location (example): 37.421542, -122.085589
- [Combine integer part of location with fractional part of hash:]
- Destination Coordinates: 37.857713, -122.544544
- Sample Implementation: http://xkcd.com/geohashing/
- In response to comic 353: Python, the Python developers implemented the module
antigravityin version 2.7+. This module contains a reference geohashing function.