DEV Community

Cover image for 20 Project Names You've Been Pronouncing Wrong (with creator receipts)
alvinan
alvinan

Posted on • Originally published at pronounce.renlab.ai

20 Project Names You've Been Pronouncing Wrong (with creator receipts)

20 Project Names You've Been Pronouncing Wrong (with creator receipts)

Every developer has had the moment. You're in a standup, you say "n-jinx" out loud, someone gently corrects you to "engine-x", and you spend the next two minutes mentally re-cataloging every other tool you've been mispronouncing for years.

Some of these are settled by the creators themselves. Some are genuine debates with two camps. Most of them you can be wrong about for six months before anyone tells you. So I built a community dictionary that catalogs them with sources — and a tiny CLI that plays them out loud, three times each, through your macOS speakers so the right reading actually lands.

Here are the 20 most surprising ones from the list. Each entry is sourced; some are documented on the project's own page, some are still community readings waiting for a citable source. Where there are real debates, both readings are in the dictionary so you can hear them side by side.

🌐 pronounce.renlab.ai · ⭐ github.com/anzy-renlab-ai/pronounce

say-it terminal demo

1. GIF → "jif"

The most famous pronunciation argument in tech. Steve Wilhite, the creator, stood at a podium at the 2013 Webby Awards and said: "It's pronounced JIF, not GIF." Half the internet still says "gif" anyway — both readings are real, and the dictionary records both.

$ say-it GIF
🔊 jif. jif. jif. or: gif.
Enter fullscreen mode Exit fullscreen mode

2. kubectl → "koob-control"

Not "kub-cuttle". Not "K-U-B-E-C-T-L". Kelsey Hightower and most Kubernetes maintainers say "koob-control" — short for "kube control". "Cube-cuddle" is a running meme but not the dominant reading. Letter-by-letter is for the spec-respecting holdouts.

$ say-it kubectl
🔊 koob control. koob control. koob control. or: cube cuddle. or: kube C T L.
Enter fullscreen mode Exit fullscreen mode

3. nginx → "engine-x"

Two syllables. "EN-jin-EKS". Igor Sysoev, the creator, confirms this on the official site. You're not pronouncing the letters; you're pronouncing it like "engine" + the letter X.

4. GNU → "g-noo"

Hard G. One syllable. The GNU Project has a dedicated pronunciation FAQ. Rhymes with "new", but with the G voiced — not silent, not letter-by-letter.

5. JSON → "jay-son"

Douglas Crockford prefers "JAY-son", like the name. "JEE-son" (long E) is also widely used and the Wikipedia § Pronunciation entry notes the variance. Both are in the dictionary; the JS-adjacent community leans toward "JAY-son".

6. Linux → "LIN-ux"

Short I. Schwa on the U. Not "LYE-nuks", not "LEE-nooks". Linus Torvalds has said it on camera; the Wikipedia § Pronunciation section documents the canonical reading.

7. LaTeX → "lay-tek"

Or "lah-tek". Never "lay-teks". Leslie Lamport documented this on the LaTeX project about page. The X is a Greek chi.

8. TeX → "tek"

Same logic, same Greek chi. Donald Knuth: like "tech".

9. char → "char" (rhymes with "car")

In C and C++ communities. Some say "care", some say "kar". The C/C++ camp insists on "char" with a hard CH like "charcoal", which is the original Kernighan reading. The Java world drifted toward "care" in some pockets.

10. Django → "JANG-go"

The D is silent. Named after jazz guitarist Django Reinhardt. The Django FAQ confirms.

11. GUI → "gooey"

If you're a Mandarin speaker, this maps to 故意 (gù yì) — a fun overlap. The mainstream reading is "GOO-ee" as one word. RMS and some old-school Unix folks still say "G-U-I" letter-by-letter.

12. Vue → "view"

One syllable. Like the verb. Not "VOO-eh", not "vyoo". Evan You has said it in conference talks; the Vue docs treat it as obvious.

13. Vite → "veet"

Pronounced like the English word "veet". French for "quick" — the project name is intentional. The Vite docs and the Vite community both use "veet".

14. Knative → "KAY-native"

The K is voiced, not silent. Two clear words: "KAY" then "native". A surprising number of engineers default to "native" by analogy with k8s; the maintainers correct that.

15. etcd → "et-cee-dee"

Brandon Philips, one of the creators, documented in the etcd FAQ that the name expands to "et-cetera-distributed". In conversation it collapses to "et-C-D" letter-by-letter.

16. Pydantic → "pie-DAN-tic"

Samuel Colvin has said it in podcasts; the community accepts "pie-DAN-tic" (rhymes with "pedantic" with an initial "pie"). Not "pidd-antic", not "pee-dantic".

17. PostgreSQL → "post-gres-Q-L"

Officially. The PostgreSQL FAQ documents this. "Post-gres-sequel" is the common informal. Just "Postgres" is universally fine.

18. SQL → "sequel" or "S-Q-L"

Real fork. ANSI says "S-Q-L". Practitioners — especially long-time SQL Server folks and the Oracle community — say "sequel" because SEQUEL was the original IBM name before the trademark fight. Both are in the dictionary; the alternate is one keypress away (say-it --alt SQL).

19. Anthropic → "an-THROW-pick"

The company that built Claude. Three syllables. Stress on the second. Some Mandarin speakers say "an-truh-PICK" — not wrong, but the English-native reading is "an-THROW-pick".

20. NaN → "nan" or "N-A-N"

IEEE 754's "not a number". Pure word ("nan" rhymes with "can") is the most common in scientific computing. Letter-by-letter is fine and unambiguous. Both ship.

How to hear it

The CLI is a ~250-line Bash script wrapping macOS say:

git clone https://github.com/anzy-renlab-ai/pronounce.git
cd pronounce && ./install.sh

say-it kubectl                  # primary × 3, then "or: <alt>" for each alternate
say-it --alt GIF                # focus on the alternate ("gif" instead of "jif")
say-it --all SQL                # primary AND every alternate, each repeated
say-it --why JSON               # print the dict entry with source URL
Enter fullscreen mode Exit fullscreen mode

When a word is multi-reading, the audio chains the alternates after the primary with a spoken "or: <alt>" so you hear the debate without having to read the terminal.

There's also a Claude Code skill bundled — once installed, "how do you pronounce X?" prompts in Claude Code get answered with audio + a source URL instead of a phonetic guess.

How the dictionary works

data/pronunciations.tsv is a tab-separated file with one row per word and ten columns:

word | ipa | respelling_us | alt_ipa | alt_respelling_us | source_url | source_label | category | confidence | notes
Enter fullscreen mode Exit fullscreen mode

The confidence column is honest: creator-clarified only when a real source documents a creator quote; community-consensus for widely-used readings without a single citable source; contested for genuine debates. The dictionary deliberately under-claims rather than fabricating sources.

The respelling_us column is what the CLI feeds to say. Why English-like respellings instead of IPA or Apple's phoneme markup? Because modern macOS say doesn't parse phoneme commands or SSML tags — both fall through as literal text. Respelling rides the TTS engine's built-in letter-to-sound rules, which work acceptably for short English-shaped strings. (The IPA column is retained for display and for future cloud-TTS / Windows-SAPI backends, both of which do honor SSML phoneme tags.)

A surprising technical finding

Two things broke my mental model while building this:

  1. [[inpt PHON]] is dead on modern macOS. Apple's Speech Synthesis Programming Guide still documents the legacy phoneme-injection syntax, but the modern say(1) CLI does not parse it. say "[[inpt PHON]]k AE1 t[[inpt TEXT]]" produces ~3.5 seconds of mumbled character reading, not "cat". SSML <phoneme alphabet="ipa" ph="kæt"> falls through the same way. The whole architecture pivoted to respelling once I'd measured this.

  2. [[slnc N]] IS still honored. Same dialect, same brackets, completely different fate. The dictionary uses [[slnc 400]] between repetitions of the same word and [[slnc 700]] before the "or:" alternates, which makes the audio breathe properly rather than clipping tails. Real silence, not punctuation pauses.

  3. macOS Samantha has internal lexicon overrides. say "giff" produces the same audio as say "jif" — the engine has a hard-coded rule. To force the hard-G reading for GIF's alternate, the dictionary uses single-letter "gif" (no double F, lowercase), which bypasses the override.

These three findings are why the project's respelling_us column has the slightly weird shapes it does ("koob control", not "kʊbkəntroʊl"; "jif" and "gif" not "jiff" and "giff").

What's coming

The CLI is macOS-only today. On the roadmap:

  • Windows backend via PowerShell + System.Speech.SpeechSynthesizer. SAPI does parse SSML phoneme tags, so Windows can use the IPA column directly.
  • Linux backend via espeak-ng for offline, plus an opt-in cloud TTS path for higher quality.
  • Cloud TTS (ElevenLabs / OpenAI) — opt-in, env-var-keyed, for the names native TTS still mangles.
  • VS Code / Cursor extension — hover over a project name in code, hear the pronunciation.
  • Anki export for vocabulary drills.

Contribute

The dictionary needs entries for hundreds of project names still missing — Dapr, Backstage, Karpenter (oh wait, that one's already in), Pulumi, Pinia, OpenObserve, and dozens more. There's a pinned wishlist issue listing the most-requested ones.

Adding an entry is a one-row PR. The CONTRIBUTING.md documents the column format and how to verify your respelling actually sounds right with say.

Editorial constraints:

  • Tech terms only. The dictionary's scope is project / product / programmer-jargon names. Everyday English vocabulary is out of scope.
  • General American English only. Regional accent variations are deliberately not in scope.
  • Honest confidence levels. creator-clarified only when the source URL actually documents a creator quote. Otherwise community-consensus. Source URL blank rather than fabricated.

🌐 pronounce.renlab.ai · ⭐ GitHub (MIT)

The site has a play button on every entry, a search box (press / to focus), and a JSON API at /api/word/<slug>.json if you want to consume it from a bot or an agent.

If this saves you from saying "n-jinx" or "kub-cuttle" one more time — drop a star.

Top comments (0)