Crate locators

Crate locators 

Source
Expand description

§Background

We had a need for identifiers that could be used by humans.

The requirement to be able to say these over the phone complicates matters. Most people have approached this problem by using a phonetic alphabet. The trouble comes when you hear people saying stuff like “A as in … uh, Apple?” (should be Alpha, of course) and “U as in … um, what’s a word that starts with U?” It gets worse. Ever been to a GPG keysigning? Listen to people attempt to read out the digits of their key fingerprints. …C 3 E D 0 0 0 0 0 0 0 2 B D B D… “Did you say ‘C’ or ‘D’?” and “how many zeros was that?” Brutal.

So what we need is a symbol set where each digit is unambiguous and doesn’t collide with the phonetics of another symbol. This package provides English16, a set of 16 letters and numbers that, when spoken in English, have unique pronunciation and have been very successful in verbal communications over noisy links.

Ironically, however, when used in written applications the English16 set is a bit restrictive. When looking at them they don’t have much variety (it turned out they’re very blocky—so much so you have to squint). If the application is transcription or identification visually then the criteria is shapes that are distinct, rather than their sound. For these uses we provide Latin25, a set of 25 symbols useful for identifiers in automated systems that nevertheless have to be operated or debugged by humans.

Finally, also included is code to work in base 62, which is simply ['0'-'9', 'A'-'Z', and 'a'-'z']. These are frequently used to express short codes in URL redirectors; you may find them a more useful encoding for expressing numbers than base 16 hexadecimal.

Modules§

base62
Machine identifiers without punctuation.
english16
Locators humans can exchange when speaking aloud.
latin25
An alternate character set chosen for visual distinctiveness.