Feedback? Corrections? Suggestions? Write me here!
An interactive display of Oakland’s flag in 101 ancient, modern, technical, and fictional languages

Quick Facts:
– Hardware: Raspberry Pi 4B, standard digital projector, custom pushbutton controller wired to the Pi GPIO interface, MOSFET circuits controlling the green/red LED pause button illumination, custom wiring, modified plastic tote container, standard rear-projection screen
– Software: Custom Python program to 1. Display the flag images (two per flag, one without the flag name and one with) cross-faded in a continuous loop, 2. Control the pause / forward / back functionality, 3. Display the navigation icons, and 4. Control the green/red LEDs on the pause button
– Art: Flag images created digitally with online and software tools (primarily GIMP and Nano Banna), selected for maximum variety and interest, ordered alphabetically









vexillingual (adj., coined) — pertaining to the intersection of flags (vexillology) and languages (linguistics)

Take Oakland’s flag (adopted in 1952, for the city’s centennial) and translate OAKLAND 100 different ways–it was a simple idea but a big challenge, linguistically, graphically, technically, and artistically.
Of the 1,000s of possible choices, I picked a combination of:
– Latin-script living languages that translate OAKLAND (Tongan, Hawaiian)
– Non-Latin script living languages that translate or transliterate OAKLAND in either alphabetic (e.g., Korean, Balinese, Arabic, the Indics, the Cyrillics) or non-alphabetic (e.g., Chinese) fashion
– Ancient Languages (usually phonetic approximations; Phonecian, Hieroglyphic, Ogham, Linear B)
– Fictional Languages (Wakandan [Black Panthers], Auerebesh [Star Wars], Tengwar [J. R. R. Tolkien])
– Other writing and signaling systems (Braille, Semaphore, Morse Code, Shorthand)
– Computer languages (Binary, Hex, Unicode, barcode, QR code)
– Just Plain Fun (LEET, Emoji, Spongebob, Pokemon, Minecraft, though some of these are more typographical variation than language translations)
I chose 101 as a round number that would fit comfortably into about 10 minutes of display time.

- Akkadian (conjectural): 𒍝𒀀𒅗𒇽𒀀𒉈𒁲
- Amharic (Ethiopia): ኦክላንድ
- Anagram: NODALAK (one of 2520 possibiliites)
- Arabic: أوكلاند
- Aramaic (Syriac script):
- Armenian: ՕՔԼԵՆԴ
- ASCII / UTF-8 (hex): 4F 41 4B 4C 41 4E 44
- ASL (fingerspelling):
- Assamese (northeastern India): ওকলেণ্ড
- Aurebesh (Star Wars):
- Avestan (Zoroastrian liturgical): 𐬋𐬂𐬥𐬛𐬐𐬮
- Balinese:
- Barcode:
- Base64: T0FLTEFORA== (used in binary-ASCII conversion)
- Bengali (Bangladesh): ওকল্যান্ড
- Berber / Tamazight (North Africa): ⵓⴽⵍⴰⵏⴷ
- Binary:01001111 01000001 01001011 01001100 01000001 01001110 01000100
- Braille: ⠠⠠⠕⠁⠅⠇⠁⠝⠙ (but no capitalization indication)
- Burmese: အိုကလန်
- Canadian Aboriginal Syllabic (Plains Cree orthography): ᐅᐊᑲᒥᐊᓀᑌ
- Caucasian Albanian / Old Udi: 𐕒𐔰𐕣𐔾𐔰𐕎𐔳
- Cherokee: ᎣᎩᎳᏂᏗ
- Chinese (Traditional, Cantonese-associated): 屋崙
- Chinese (Traditional, Taiwan-associated, also current HK use): 奧克蘭
- Chinese (Simplified, Mainland-associated): 奥克兰
- Court Reporter Steno (Plover): OEK/HRAPBD
- Dari (Afghanistan): اوکلند
- Deseret (Latter-day Saints, used 1854-69)
- Dinka (South Sudan): ÖKPÄN
- Divehi (Maldives): އޯކްލޭންޑް
- Emoji 🌳🏞️
- English: OAKLAND
- Esperanto: OAKLANDO
- Fijian: OKILANDI
- Gallifreyan (Dr. Who):
- Georgian: ოკლენდი
- Glagolitic (Old Church Slavonic):
- Gödel Number: 2¹⁵3¹5¹¹7¹²11¹13¹⁴17⁴ = 2403327857642931000651111228818832 x 1011
- Greek: ΟΚΛΑΝΤ
- Gujarati (Gujarat state, western India): ઓકલૅન્ડ
- Hawaiian: ʻŌKELANA
- Hebrew (also Yiddish): אוקלנד
- Hieroglyphic (conjectural): 𓅱𓄿𓎡𓃭𓄿𓈖𓂧
- Hindi + Bhojpuri: ओकलैंड
- Hyphy: OAKTOWN! (yeah, I just made that up)
- Initial Teaching Alphabet: Olkand
- International Phonetic Alphabet: /ˈoʊklənd/
- Japanese (Katakana): オークランド
- Javanese: ꦎꦏ꧀ꦭꦤ꧀
- Kannada (Karnataka state, southwestern India): ಓಕ್ಲ್ಯಾಂಡ್
- Khmer (Cambodia): អូកឡែនដ៍
- Klingon: zoQqlaHhnt (note that Romulan is not well-attested)
- Korean: 오클랜드
- Lao: ໂອກແລນ
- Latin (“oak grove”): QUERCETUM (or maybe QUERCETIA?)
- L33T: 04KL4ND
- Linear-B (Mycenaean Greek):
- Malayalam (Kerala state, southwestern India): ഓക്ലാൻഡ്
- Māori: ŌKARANGI
- Marathi (Maharashtra state, central-western India): ओकलंड
- Maritime Signal Flags:
- Minecraft (Standard Galactic Alphabet): 𝙹ᔑꖌꖎᔑリ↸
- Mongolian: ᠣᠺᠯᠠᠨ (traditional) ОАКЛАНД (Cyrillic)
- Morse Code: — .- -.- .-.. .- -. -..
- NATO Phonetic: OSCAR ALFA KILO LIMA ALFA NOVEMBER DELTA
- Nepali: ओकल्यान्ड
- N’Ko (West Africa): ߏߞߑߟߊ߲ߘߌ
- Odia (Odisha state, central-eastern India): ଓକଲ୍ୟାଣ୍ଡ
- Ogham (Old Irish, conjectural): ᚑᚐᚊᚂᚐᚅᚇ
- Orkhon (Old Turkic): 𐰆𐰀𐰴𐰞𐰀𐰣𐰑
- Osmanya (Somalia): 𐒝𐒏𐒐𐒖𐒒𐒆
- Pashto (Afghanistan, Pakistan): اوکلنډ
- Persian: اوکلند
- Phoenician (conjectural):
- Punjabi (India & Pakistan): ਓਕਲੈਂਡ
- QR Code:
(“QR” = “Quick Response”)
- Rohingya (Hanifi script, Rakhine state, Myanmar / Burma): 𐴀𐴡𐴝𐴑𐴓𐴝𐴕𐴊
- Runic (conjectural): ᛟᚨᚲᛚᚨᚾᛞ
- Samaritan: ࠀࠅࠒࠋࠍࠃ
- Semaphore:
- Serbian, Montenegrin: ОКЛАНД
- Shan (Myanmar / Burma): ဢွၵ်ႉလႅၼ်ႇ
- Shorthand (Gregg):
- Sinhala (Sri Lanka): ඕක්ලන්ඩ්
- Spongebob: oAkLaNd
- Sunuwar (Likhu Khola valley,Nepal):
- Tamil (Tamil Nadu and Puducherry, south India; Sri Lanka, Singapore): ஓக்லாந்த்
- Telugu (Telangana and Andhra Pradesh states, southeastern India): ఓక్లాండ్
- Tengwar (Tolkien’s Elvish; used on the One Ring):
- Thai: โอ๊คแลนด์
- Tibetan (Tibet), Dzongkha (Bhutan): ཨོ་ཀ་ལན་ཌི།
- Tigrinya (Eritrea & Ethiopia): ኦክላንድ
- Tongan: ʻOKALANI
- Tulu (south India): ಓಕ್ಲ್ಯಾಂಡ್
- Ukrainian, Russian: ОКЛЕНД
- Unicode Code Points:
U+004F U+0041 U+004B U+004C U+0041 U+004E U+0044(current total = 172,808 characters) - Unown (Pokemon): OAKLAND
- Urdu (Pakistan & India): اوکلینڈ
- Uyghur (Xinjiang, northwestern China): ئوكلاند
- Vai (Liberia): ꕱꕉꕪꕞꔕ
- Wakandan (Black Panther):
The theme here is language variety and not merely typographic variety. However I did include a few that are simply alternative scripts, mostly just for fun (Aurebesh, Spongebob, Pokemon).
Some languages are ordinarily read left-to-right (like English) but about 15 of these are ordinarily right-to-left (Arabic, Aramaic / Syriac, Avestan, Dari, Divehi / Thaana, Hebrew, N’Ko, Pashto, Persian, Phoenician, Rohingya, Samaritan, Urdu, Uyghur). Ogham was written bottom-to-top (as inscriptions on the edges of stones). Traditional Mongolian is top-to-bottom, right-to-left. And various other languages feature other variations and possibilities.
The first challenge was getting OAKLAND translated / transliterated. Here we can divide all the flags into two categories:
1. “Dictionary” translations that are living languages that would actually use these forms in publications, along with machine-accurate technical codes and forms. Here I used a lot of Google Translate, ChatGPT, and many specialized websites, and did a lot of cross-checking and back-translating.
2. “Unofficial” versions that are invented or conjectural. Some of these are simply transliterated or phonetic (Phonecian, Cuneiform) and others are based on meaning (Latin: “Quercetum” = “Oak Grove”). I did make efforts to actually follow the phonology of target languages, and not just do letter-for-letter substitutions, so, e.g., Klingon is “ʼoQlaHnt” (in tlhIngan Hol Latin-script text), then displayed in the pIqaD Klingon script. Of course, essentially all of these are subject to discussion and debate, especially because languages vary vastly in their phonemes (sounds) and the ways they construct words.
I made no effort to translate Oakland’s founding year (1852) even though many of these languages use non-Arabic numbers. It would have added a lot of work for an inconsistent and complicated result that maybe distracted more than added.
GRAPHIC DESIGN
I used two approaches to creating the flag images:
1. AI Image Generation: For many of the flags, I used Google Gemini (Nano Banana 2), feeding it a “canonical” image of Oakland’s flag and instructing it to replace OAKLAND with the target language.
2. Manual Graphic Design: For the more technically and graphically complicated flags, I generated black & white images, used GIMP to remap the colors, used this very cool, free website to bend them (https://fontmeme.com/bend-images/; the curve of OAKLAND is about setting 50), then cut and pasted into a final image. I also variously used PowerPoint and Microsoft Paint.
When possible I found actual True Type Fonts to generate the needed glyphs with smooth edges. It’s amazing how many fonts there are out there; I found ones for Klingon, Deseret, Rohingya, Unown, etc. etc. Other times I had to work from graphic images (Linear-B), which of course is less satisfying because of pixelated edges.
There is no official specification of the flag colors. Generally speaking, there are Oakland flags where the yellow is a bit more golden and darker, and others where it is a brighter, lighter yellow. I went with these colors from https://www.flagcolorcodes.com/oakland

The piece runs as a loop on a Raspberry Pi 4 and a standard digital projector. I was originally going to make it an mp4 video but then realized that it would add greatly to have a pause/forward/back interactivity. So I ended up with a Python program that sequences through individual images (2 per flag, one without the name and one with), and handles the pushbutton inputs. And who wrote the Python program? ChatGPT! I have some programming background but don’t know Python at all, so just iterated the program and functions with ChatGPT, including fine-tuning the fade effect between flags, and all the logic for the pushbuttons, and then setting up the Pi to autostart. This all took about 20 iterations and the program grew to over 2,000 lines. Likewise, this is my first experience with Raspberry Pi so I climbed the learning curve there too including wiring the GPIO pins to the pushbuttons.
It took quite a bit of work having to plan for possible precipitation, and also to “harden” the installation for a public, nighttime setting that includes curious kids and possible small animals. I ended up using a big plastic tote for the projector, Pi, and other electronics, with all kinds of wiring parts I got on Amazon, including the pushbuttons. I really wanted the the red/green color change on the “Pause” button but it took inordinate effort, involving MOSFET circuits between the Pi and the pushbutton LEDs
The cable between the pushbuttons and everything else has eight conductors (four for the 5V pushbuttons and returns, four for the 12V LEDs and return). Amazingly, with all the cabling, connectors, wiring, and splices–it all worked the first time I fired it up!
The Pi, Python program, and projector are set up to autostart all the way to a running condition on power-up, so that the installation can recover automatically even a hard power interruption.


ARTISTIC INTERPRETATION
I did not try very hard to match the Sans Serif font of OAKLAND in the official flag, or get the proportions to match.
What sequence to use? I toyed with the idea of a geographical, follow-the-sun-around-the-world sequence, but there are too many languages that are not geographically located. So I decided to just go alphabetically, which has the feature of introducing randomness to the order (e.g., Armenian followed by ASCII), and also usefully conveys to the viewer where the loop is at any given time.
From start to finish, this project would not have be possible prior to all aspects of computer research and production: Wikipedia, ChatGPT, online language translators, downloadable fonts, many obscure websites dedicated to this or that language; then of course computer graphic design and presentation programs that made the creation of the flag images possible and relatively painless (though repeating anything 101 times gets tedious). It was a huge and fun learning experience and I’m very happy with how it turned out.
My greatest hope is that people would see their ancestries and cultures included and honored here in Oakland, and that we can all further enjoy and celebrate Oakland’s diversity.
And…won the Oakland Roots & Soul Prize the first night of the 2026 show!


Only the day before I thought I should really add a bench to sit on–and this turned out to be key, making it easy to look at the list of flags and operate the buttons, and to share this with someone else (it’s a 2-person bench). Kids, of course, especially love the buttons, and some will press them willy-nilly at length, with no particular regard to their effect. (They are heavy-duty, with a very satisfying click sensation).



