21 comments

[ 3.9 ms ] story [ 64.2 ms ] thread
Reminder that you should avoid what3words. Still unfortunate that some governments fell into using them.

https://shkspr.mobi/blog/2019/03/why-bother-with-what-three-...

> The algorithm used to generate the words is proprietary. You are not allowed to see it. You cannot find out your location without asking W3W for permission.

> If you want permission, you have to agree to some pretty long terms and conditions. And understand their privacy policy. Oh, and an API agreement. And then make sure you don't infringe their patents.

> You cannot store locations. You have to let them analyse the locations you look up. Want to use more than 10,000 addresses? Contact them for prices!

Oh geez I didn't know any of this. We have planned to explore using this tool for one of our products. This effectively kills it.
Plus codes seem to be a much better solution https://plus.codes/

Kinda curious why you would be using something like this?

There are a few more open specification Geohash algorithms out there as well.

What's silly about W3W is that their entire "proprietary algorithm" is going to be the same as all of these, except with /usr/share/dict/words instead of A-Z0-9 as the alphabet.

The only reason they need Kubernetes clusters on AWS is to keep their word list secret, every open-spec code can run offline.

I don't understand how they thought this business model would ever work.

Have they patented the idea of using english words to encode numbers? Because I've seen patterns of 2-3 english words used in the past to communicate things like keys and confirmation codes.

Lobbying and bribery. Check out who is using them, its quite unnatural.
We're looking for a global addressing system that can span cities and states (not necessarily countries), and for one that doesn't depend on lat/lon (because that has inherent error margins in it). It should be global and consistent so we can build tools on top of it, rather than have to learn each country's addressing system. Also these coordinates would be used by our system internally as identifiers, but the users would just see the artifacts that matter to them, like roads etc.
> doesn't depend on lat/lon (because that has inherent error margins in it).

What do you mean by that?

To map a particular point (like a house) with latitude and longitude, you have to be accurate to 5 or 6 decimal points. If you have the right data, then yes you absolutely can map this.

But if you're taking, say a telemetry point from a truck moving across the city and trying to map it to an address, there's going to be some drift in that number. And you're going to use that coordinate to say "what's the nearest house to this" – but due to that potential drift, you might match with a different house.

This is not life or death stuff. But then it becomes harder to "cluster" points together to say "all these datapoint correspond to this house". Having a slightly larger grid system allows you to say "anything in this 100sq foot square will be associated with this house" which allows you to have some margin of error, while still being able to address individual addresses.

So then instead of -72.883322, 38.128312 being treated differently from -72.883320, 38.128317, they all cluster around one "square" which makes it easy to just group them.

But What3Words is trying to give each of those "squares" a unique english word identifier, whereas other coordinate systems probably just use alphanumeric codes. I didn't know their algorithm was proprietary. That's bullshit because there is no "algorithm" per se – it's just mapping numbers to word lists. That's it.

But that's marketing.

You are making point (location) in polygon (building) queries anyways, if I understood you correctly. GNSS can be off, there is not much you can do about this for free. Any other location-description will be the same. You cannot fix GNSS accuracy by using different representation of location.

If you just want to snap your coordinates to a grid, check s2 or h3 or just make your own grid in your country's authorative coordinate system or even snap your coordinates to a lower precision.

W3W is really dumb.

H3 looks awesome I’ve been searching for a solution to that problem for my hobby project!

I wouldn’t say that W3W is dumb. I like the idea as a global mnemonic device. But it is a hard sell.

I meant dumb as simple in a technological sense. The idea is quite attractive but there are so many problems with their wordlists and algo that I don't consider it a system worth using, even it was not proprietary and unlawfully patented
You're doing the Lord's work reustle.

Really irked that they bill themselves as a solution in the public safety (emergency response) space while objectively being detrimental in that domain.

There are better services out there.

How is this worthless scam still in business?
Moreover, how do they have so much code that they need k8s? Isn't their product just a proprietary function that converts lat/lon to three words and vice versa?
I agree and I'm always surprised to see how complex the backend of very simple businesses are.

I'm always amazed to find 10 Infra engineers and 15 backend engineers to maintain a very simple webApp for example.

100%. This could be done entirely in JS on the client in probably < 5k characters.
Not sure if you are being sarcastic but they still need to keep their algorithm secret so client side wouldn't work.
Wikipedia says they use a dictionary of 40,000 words. So it's not going to fit in a few kb.
I feel like as soon as you have more than one program to manage, you need some sort of orchestration. You could build your own that's simpler than Kubernetes, or you can just click the checkbox on your cloud provider and not think about it for a long while. Type in 10 lines of YAML for a Deployment and maybe a LoadBalancer if you're feeling adventurous, and your app is deployed. Need another replica to deal with increased popularity? Change one line. Split up some code into another app? Just kubectl apply another deployment.

There is certainly overhead (kubelet, master) over running your PHP app on bare metal or whatever, not to mention having to figure out what deployments, pods, services, kube-proxy, etc. are... but once you've done that, it's pretty easy. Especially if you use something like GCP, you don't pay for your master, and there is a web UI for doing everything that's simple. I would recommend it once you need to scale beyond 1 computer.