Geohash - What It Is and Where It Can Be Useful

I had wanted to write a post about Geohash for a long time. I've had screenshots for it lying around for several years, but never got around to it.
I'm not going to go into too much detail here; this will be more of a note-style post.
Geohash is an algorithm for turning 2 coordinates like 37.571309, 55.767190 (longitude, latitude) into 1 string. You can read about how it works on Wikipedia. There are also plenty of libraries on the internet in different languages for converting coordinates to the Geohash format and back.
And at work we used Geohash to show nearby venues on a map. Suppose we have a restaurant and know its coordinates. The task is to display venues that are nearby.
What we did was convert the restaurant coordinates into a geohash and get a string like «ucftqbne6vww».
Accordingly, for every restaurant we had both coordinates and a geohash. And the whole point is that restaurants that are close to each other have geohashes that partially match. For example:
ucftqbne6vww
ucftqbne6vat
The more precise the coordinates are (the more digits after the decimal point), the longer the geohash. The more matching characters we require, the closer to the original point we search. By chopping characters off the end of the geohash, we get a certain rectangular area. The more characters we cut off, the larger that area is. The nice part is that if we compare 2 geohashes and the required number of characters matches (the precision we need), that means both restaurants fall into this rectangular area. Accordingly, we can consider them to be nearby.

In the screenshot above, we set lower precision (fewer characters for the geohash) and got an area so large that it does not even fit on the screen.

And here we increased the precision. More characters in Geohash means higher precision and a smaller area/spread.
In the end, on AllCafe (well, back when it was ours) the results of selecting nearby venues on the map looked like this:

It seems this solution still works to this day. Since we had CouchDB, Geohash was calculated once for all restaurants there with Map/Reduce. Having that dataset, we then searched for nearby venues with the required precision.
An obvious downside of this solution is that if you remove 1 character, the search step changes. In other words, you cannot set an arbitrary search area size. And those steps can be huge.
Later, for the mobile version, we started using Bounding Box to show on phones only those venues that fall inside the map area currently visible on screen, without loading extra markers that may not fit on the screen and only eat memory. So there are options :)
Well, that's one more long-pending item done :) I could not write this note for several years, and even the screenshots are from the days when I still used Ubuntu.
By the way, for playing around there is the site http://geohash.org - you enter coordinates and it gives you a Geohash plus a link. So that is another possible use for it: giving an http link to specific coordinates. If you are interested, go play with it.