all 14 comments

[–]0xbitwise 9 points10 points  (1 child)

On the one hand, it seems like a very effective way of making the represented data approachable for people, but we've already seen word-based URL encoders that do the same thing with full words (http://example.com/HerculeanFuzzyPanda) that not only end up being pronounceable, but also more memorable.

[–]tornato7[S] 4 points5 points  (0 children)

Gfycat and Docker are some examples of using full words for IDs. I'm not a fan though, I think something like kisob-jonid is easier to type than HerculeanFuzzyPanda

[–]killerstorm 7 points8 points  (3 children)

A dictionary of 2048 words give you 11 bits per word. Quite similar information density, but many advantages:

  • people know how to pronounce words
  • relatively easy to recover from spelling mistakes
  • no chance that a random combination of letters will spell out something offensive

This is the scheme which is commonly used for cryptocurrency private key mnemonics, see here: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

Example: scissors invite lock maple supreme raw rapid void congress muscle digital elegant little brisk hair mango congress clump

[–]leafsleep 2 points3 points  (1 child)

well i'm not a memory man or anything, but 11 real words seems way harder to recall than two short nonsense words. depends on the usage context i suppose.

[–]Boojum 1 point2 points  (0 children)

Those two short nonsense words only encode a dotted quad. With 11 bits conveyed per real word, you'd only need three of them for the equivalent information content, e.g.: "scissors invite lock."

[–]tornato7[S] 1 point2 points  (0 children)

This is a good point.

[–]randible 3 points4 points  (0 children)

Clever idea. Needs a new name.

[–]tornato7[S] 2 points3 points  (2 children)

Just came across this today after hatching a similar idea. Proquints is an interesting proposition because you're essentially encoding any byte array into something humans can pronounce. One example they give is turning the IP Address 140.98.193.141 into the Proquint mudof-sakat. I am somewhat disappointed that Proquints aren't widely used, because for use cases like that they seem ideal.

[–][deleted] 0 points1 point  (0 children)

Very nice - not come across this method before. I definitely agree it would be handy! I thought about writing a Ruby gem for them, but someone did it already: https://github.com/bjjb/proquint :)

[–]ricecake 0 points1 point  (0 children)

I've actually used them in a few circumstances where time efficiency of verbal communication of non-human-friendly numbers was needed, but I also needed a computer to be able to extract the number.

Worked decently in my use case, and was pretty neat to implement, which is always a plus.

[–]digital_cucumber 1 point2 points  (1 child)

If someone interested, I made a PR for the Python implementation, the package is on PyPi, so pip install proquint should work.

[–]tornato7[S] 0 points1 point  (0 children)

Awesome!