A while ago I worked on a product which created a lot of media files for the user, and these files all needed to be named in a unique - yet human-pronouncable manner.
We considered using something like what3words[1], but then one bright dev came up with a way of constructing a filename using phonemes derived from the names of Austrian philosophers ..
This worked so well, for some reason - whether selection bias in the list created by the CEO for the purpose (putting that degree to good use, finally), or maybe just because Austrian philosophers all have great names for the purpose.
I confess that I do think about this a lot, as I am lost in the endless maze of Ikea stuff on my way for some meatballs.
Edit: I couldn't resist, it looks something like this:
-- Unique filename generator based on phonemes derived from the top 10
-- most well-known Austrian philosophers (per Pantheon HPI ranking):
-- 1. Ludwig Wittgenstein
-- 2. Karl Popper
-- 3. Martin Buber
-- 4. Paul Feyerabend
-- 5. Josef Breuer
-- 6. Ivan Illich
-- 7. Otto Weininger
-- 8. Alfred SchĂŒtz
-- 9. Otto Neurath
-- 10. Jean Améry
--
-- Phonemes / syllable units extracted from the names (approximating
-- German/English pronunciation for pronounceability):
local PHONEMES = {
-- Wittgenstein
"wit", "gen", "stein", "wig", "stein",
-- Popper
"pop", "per", "popr",
-- Buber
"bu", "ber", "bub",
-- Feyerabend
"fey", "er", "a", "bend", "abend",
-- Breuer
"breu", "er", "breuer",
-- Illich
"il", "lich", "ill", "ich",
-- Weininger
"wei", "nin", "ger", "wein",
-- SchĂŒtz (approximated without diacritics for filename safety)
"schu", "etz", "schutz", "shuets",
-- Neurath
"neu", "rath", "neur",
-- Améry
"a", "me", "ry", "amer", "ery"
}
--- Generates a unique, pronounceable filename.
-- The random selection of phonemes is seeded from the current timestamp.
-- @param extension (optional) file extension without the leading dot (default: "txt")
-- @param syllable_count (optional) number of phoneme units to combine (default: 3)
-- @return string A filename of the form: <phoneme-combo>.<ext>
function generate_austrian_philosopher_filename(extension, syllable_count)
extension = extension or "txt"
syllable_count = syllable_count or 3
-- Safety: ensure we have at least 2 syllables and a sensible upper bound
if syllable_count < 2 then syllable_count = 2 end
if syllable_count > 6 then syllable_count = 6 end
-- Seed the PRNG from the current timestamp for this generation
math.randomseed(os.time())
local parts = {}
for i = 1, syllable_count do
local idx = math.random(1, #PHONEMES)
parts[i] = PHONEMES[idx]
end
-- Combine into a readable base name (hyphenated for clarity)
local base = table.concat(parts, "-")
return string.format("%s.%s", base, extension)
end
-- Example usage:
-- print(generate_austrian_philosopher_filename())
-- â e.g. "stein-neu-ber.txt"
--
-- print(generate_austrian_philosopher_filename("log", 4))
-- â e.g. "fey-wit-pop-rath.log"
[1] -
https://en.wikipedia.org/wiki/What3words