# UGI: Unified Geek Identifier **Version: 0 (Draft) · 2026-03-28 · MIT License** --- ## Overview A compact, URI-safe self-description code for geeks. Encodes identity, skills, interests, and opinions into a single string suitable for bios, email signatures, and URIs. It descends from two predecessors: - [Geek Code](https://sig.codes/geek/) by Robert A. Hayden (1993-1996), with its [Geek Code 4.0+](https://sig.codes/geek-4.0/) by exarobibliologist (2019-2026) - [Hacker Key](https://sig.codes/hacker-key/) by Chris Allegretta (2003-2006) UGI takes the cultural breadth of the Geek Code, the numeric compactness of the Hacker Key, and adds URI safety, modern fields, and extensibility. ### Design goals 1. Single-letter field codes: 24 active, 2 reserved 2. Octal (0-7) rating scale 3. URI-safe characters only, no percent-encoding needed 4. Dual format: URI for machines, block for humans 5. Case-insensitive 6. Extensible via `~` custom sub-IDs --- ## Formats ### URI ``` ugi:[/]@:,,... ``` ### Block ``` ------- BEGIN UGI BLOCK ------- v:[/] @ [G] ... -------- END UGI BLOCK -------- ``` In block format, field codes are repeated per sub-ID for readability: `Ppy6 Prs5` instead of `ppy6rs5`. Long-form sub-ID aliases (noted in registries) are permitted in block format. ### Conversion Block → URI: remove header/footer, merge repeated field codes, replace spaces with commas, prepend `ugi:`. URI → Block: split on commas, expand merged sub-IDs by repeating field codes, add header/footer. No modifier or character changes are needed; both formats use identical symbols. ### Mandatory fields `@handle` and `g` (geek type) are required. All others are optional. --- ## Grammar ``` []... ``` - **Field codes**: single letter (a-z), case-insensitive - **Sub-IDs**: 1-4 lowercase alpha chars - **Ratings**: single octal digit (0-7), required on every sub-ID - **Custom sub-IDs**: `~` prefix: `~fermenting5` - **Modifiers**: after the digit: - `$`: paid - `+` followed by digit: aspiring toward that level - `$+` combined: paid and aspiring - **Alternatives**: `/` between two digits on direct-value fields: `c3/6` ### Special formats | Field | Format | Example | |---|---|---| | `g` geek type | `/` separates domains, `~` for custom, `$` for paid, no ratings | `gcs$/ai/wr~fermenting` | | `b` build | `/` | `b6/3` | | `l` languages | ISO 639-1 code + rating | `lar7en6` | | `v` politics | `/` | `v5/3` | ### Parser algorithm After each comma or space, read a single letter (field code). Then: - `g` → read alpha tokens separated by `/` and `~`-prefixed tokens until delimiter - `b` → digit, `/`, digit - `v` → digit, `/`, digit - `l` → repeat: 2 alpha + digit + optional modifier - `r` → one sub-id + digit (single value only) - direct fields → digit + optional modifier - direct-alt fields → digit + optional `/` + digit + optional modifier - multi fields → repeat: alpha (sub-id) + digit + optional modifier --- ## Rating scale (0–7) | Value | General | Proficiency | Enthusiasm | Stance | |---|---|---|---|---| | 0 | Hostile / opposed | Can't, won't | Despise | Strongly against | | 1 | Strong dislike | Aware it exists | Avoid actively | Against | | 2 | Dislike / minimal | Dabbled briefly | Not interested | Lean against | | 3 | Slight negative | Beginner | Cold | Slightly against | | 4 | Baseline / neutral | Average | Take or leave | No opinion | | 5 | Moderate positive | Competent | Enjoy | Lean toward | | 6 | Strong positive | Advanced / daily | Enthusiast | Support | | 7 | Obsessed / defining | Master / creator | Life-defining | Evangelist | ### Modifier permissions | Modifiers | Fields | |---|---| | `$` and `+` | `f` `j` `l` `o` `p` `q` `w` `y` `z` | | `$` only | `g` | | `+` only | `b` `c` `d` `e` `h` `k` `s` | | Neither | `a` `i` `m` `r` `t` `v` `x` | --- ## Field list | Code | Field | Type | Category | |---|---|---|---| | `a` | Age | Direct | Identity | | `b` | Build | Special (h/w) | Appearance | | `c` | Clothing | Direct, `/` ok | Appearance | | `d` | Editor / IDE | Multi | Tech | | `e` | Education | Direct | Identity | | `f` | Food / Cooking | Direct | Lifestyle | | `g` | Geek Specialization | Special | Identity | | `h` | Hair | Multi (1-letter) | Appearance | | `i` | AI Stance | Direct | Stance | | `j` | Gaming | Multi | Entertainment | | `k` | Books | Direct | Entertainment | | `l` | Spoken Languages | Multi (ISO) | Identity | | `m` | Music | Multi | Entertainment | | `n` | *(reserved)* | - | - | | `o` | Operating System | Multi | Tech | | `p` | Programming Languages | Multi | Tech | | `q` | Security / Hacking | Direct, `/` ok | Tech | | `r` | Religion | Single | Stance | | `s` | Sex / Relationships | Direct, `/` ok | Lifestyle | | `t` | TV / Film | Multi | Entertainment | | `u` | *(reserved)* | - | - | | `v` | Politics | Special (s/e) | Stance | | `w` | Hardware | Direct | Tech | | `x` | Comics / Manga | Multi | Entertainment | | `y` | Fitness | Direct | Lifestyle | | `z` | Maker / DIY | Direct | Lifestyle | --- ## Field definitions --- ### a: Age 0. **Under 10**: Still loading. Baby Shark has more life experience. 1. **10-14**: Old enough for Linux opinions, too young to drive to the meetup. 2. **15-19**: Convinced you know everything. Might be right about the tech stuff. 3. **20-24**: Student loans arrived but so has 3am pizza freedom. 4. **25-34**: Peak earning-to-caring ratio. GitHub green, back complaining. 5. **35-49**: You remember dial-up noises. Kids ask what a floppy disk is. 6. **50-64**: You were there when it happened. All of it. 7. **65+**: Living legend. Your software runs on OSes born decades after you. --- ### b: Build Format: `b/`. Each 0–7. 0 = extremely small, 4 = average, 7 = extremely large. `+` modifier permitted. **Height:** 0 = Extremely short · 1 = Very short · 2 = Short · 3 = Below average · 4 = Average · 5 = Above average · 6 = Tall · 7 = Extremely tall **Width:** 0 = Extremely thin · 1 = Very thin · 2 = Slim · 3 = Below average · 4 = Average · 5 = Above average · 6 = Broad · 7 = Extremely broad > `b6/3`: tall and slim. > `b4/4`: average. Chairs were designed for you. --- ### c: Clothing 0. **Nudist**: Quite a fashion statement. 1. **Punk**: Safety pins are load-bearing. 2. **Political tees**: Your shirts have opinions so you don't have to. 3. **Jeans & tee**: Universal geek uniform. You own seven identical shirts. 4. **Average**: Inoffensive. Forgettable. Exactly as intended. 5. **Smart casual**: You've mastered the blazer-over-tee. 6. **Formal**: You iron things. On purpose. 7. **Suit daily**: CEO, lawyer, or cosplaying as one. --- ### d: Editor / IDE The editor holy war, now quantified. | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `vi` | `(vim)` | Vim / Neovim | `em` | `(emacs)` | Emacs | | `vs` | `(vscode)` | VS Code | `ij` | `(idea)` | IntelliJ / JetBrains | | `xc` | `(xcode)` | Xcode | `vt` | `(vstudio)` | Visual Studio | | `ed` | - | ed | `na` | `(nano)` | nano / pico | | `su` | `(sublime)` | Sublime Text | `ec` | `(eclipse)` | Eclipse | | `np` | `(npp)` | Notepad++ | `hx` | `(helix)` | Helix | | `ze` | `(zed)` | Zed | `ka` | `(kakoune)` | Kakoune | | `lp` | `(lapce)` | Lapce | `at` | `(atom)` | Atom | | `nv` | `(nvchad)` | NvChad / LazyVim | | | | Scale: **proficiency** (see global scale table). > 0: Opened it by accident, couldn't close it. > 7: The editor is an extension of my nervous system. --- ### e: Education 0. **None / primary**: School of life. And YouTube. 1. **Middle school**: Survived. Emotionally, jury's still out. 2. **High school**: They said best years. They lied. 3. **Trade / associates**: You can actually do things, unlike philosophy majors. 4. **Bachelors**: Four years and paper that cost more than your car. 5. **Masters**: First degree wasn't enough to convince anyone. 6. **PhD**: Call me Doctor. Especially at parties. 7. **Post-doc**: Forgotten what sunlight looks like. --- ### f: Food / Cooking 0. **Microwave only**: Smoke detector is your kitchen timer. 1. **Boils water**: Sometimes remembers to turn off stove. 2. **Basic meals**: Eggs and pasta. The two food groups. 3. **Follows recipes**: To the letter. Substitution is heresy. 4. **Home cook**: Friends don't dread your dinner invitations. 5. **Experiments**: Sometimes works. You pretend you planned it. 6. **Hosts dinners**: Spice rack has subdivisions. 7. **Chef level**: Own a mandoline, all fingers intact. --- ### g: Geek Specialization Mandatory. `/` separates domains. `~` prefixes custom domains. `$` after a domain = paid. No ratings. #### Computing & Tech | Code | Domain | Code | Domain | |---|---|---|---| | `cs` | Computer Science | `ai` | Artificial Intelligence | | `ml` | Machine Learning | `cy` | Cybersecurity | | `ds` | Data Science | `bc` | Blockchain | | `io` | Internet of Things | `qc` | Quantum Computing | | `vr` | Virtual Reality | `os` | Operating Systems | | `dv` | DevOps | `ap` | API Development | | `cl` | Cloud Infrastructure | `eg` | Edge Computing | | `sc` | Ethical Hacking | `ux` | User Experience | | `wp` | Web Performance | `db` | Databases | | `em` | Embedded Systems | `fp` | Functional Programming | | `nx` | Networking | `cv` | Computer Vision | | `nl` | NLP / Comp. Linguistics | `cr` | Cryptography | #### Science & Medicine | Code | Domain | Code | Domain | |---|---|---|---| | `bi` | Biology | `cm` | Chemistry | | `ph` | Physics | `md` | Medicine | | `nr` | Neuroscience | `ev` | Environmental | | `fs` | Forensics | `fd` | Food Science | | `as` | Astronomy | `gl` | Geology | | `bt` | Biotech | `gn` | Genetics | #### Engineering & Making | Code | Domain | Code | Domain | |---|---|---|---| | `ee` | Electrical Eng. | `me` | Mechanical Eng. | | `rb` | Robotics | `dy` | DIY / Maker | | `tp` | 3D Printing | `ar` | Arduino | | `ce` | Civil Eng. | `ae` | Aerospace Eng. | | `am` | Additive Mfg. | `ct` | Control Systems | #### Academic & Humanities | Code | Domain | Code | Domain | |---|---|---|---| | `mt` | Mathematics | `pl` | Philosophy | | `ed` | Education | `lb` | Library Science | | `lw` | Law | `ss` | Social Science | | `py` | Psychology | `cg` | Cognitive Science | | `li` | Linguistics | `hs` | History | | `an` | Anthropology | `ec` | Economics | #### Art & Design | Code | Domain | Code | Domain | |---|---|---|---| | `gd` | Graphic Design | `ad` | Animation | | `fa` | Fine Arts | `mu` | Music | | `pa` | Performing Arts | `sr` | Screenwriting | | `tw` | Tech Writing | `wr` | Writing | | `vd` | Game Design | `pg` | Photography | | `tx` | Textile Arts | `ty` | Typography | #### Business & Comms `bz` Business · `mk` Marketing · `gv` Government · `lo` Logistics · `qa` QA · `pm` Project Mgmt · `hr` HR #### Culture & Society `mm` Memes · `fn` Fandom · `pp` Pop Culture · `gn` Gender Studies · `al` Alt Lifestyles #### Games & Media `rp` RPG · `sm` Streaming · `pd` Podcasting · `cw` Cosplay #### Futurism `ax` Aerospace · `ft` Futurism · `ali` Alien Theories · `tr` Transhumanism #### Custom `~fermenting` `~beekeeping` `~lockpicking` `~origami`. Anything goes. > `gcs$/ai/wr~fermenting`: paid CS geek, also into AI, writing, and fermenting. --- ### h: Hair | Short | Name | |---|---| | `h` | Head | | `f` | Face / beard | | `b` | Brows | | `m` | Mustache | | `s` | Sideburns | 0. **Alopecia** 1. **Shaved** 2. **Stubble** 3. **Below average** 4. **Average** 5. **Above average** 6. **Impressive** 7. **Sasquatch** --- ### i: AI Stance 0. **Butlerian Jihadist**: Would unplug every GPU on earth. 1. **Strongly opposed**: 'No AI' in bio, code, and dating profile. 2. **Skeptical**: Prefer human-authored everything. 3. **Cautious**: Ethics papers keep you up at night. 4. **Neutral tool**: Like a hammer. No opinions about hammers. 5. **Positive**: Copilot saved 20 minutes today. 6. **Enthusiast**: Cyborg partnership workflow. 7. **Singularity evangelist**: Grocery list is AI-generated. --- ### j: Gaming **Genre:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `rp` | `(rpg)` | RPG | `fp` | `(fps)` | Shooter | | `st` | `(str)` | Strategy | `pz` | `(pzl)` | Puzzle | | `si` | `(sim)` | Simulation | `mm` | `(mmo)` | MMO | | `ad` | `(adv)` | Adventure | `sp` | `(spo)` | Sports | | `mb` | `(mba)` | Metroidvania | `ro` | `(rog)` | Roguelike | | `su` | `(surv)` | Survival | `sa` | `(sand)` | Sandbox | | `rr` | `(race)` | Racing | `fi` | `(fight)` | Fighting | | `ho` | `(horror)` | Horror | | | | **Platform:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `pc` | - | PC | `ps` | - | PlayStation | | `xb` | `(xbox)` | Xbox | `ns` | `(switch)` | Switch | | `mo` | `(mobile)` | Mobile | `re` | `(retro)` | Retro | | `vr` | - | VR | `sd` | `(steamdeck)` | Steam Deck | **Tabletop:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `dn` | `(dnd)` | D&D | `pf` | `(path)` | Pathfinder | | `cc` | `(coc)` | Call of Cthulhu | `sr` | - | Shadowrun | | `wo` | `(wod)` | World of Darkness | `ft` | `(fate)` | Fate | | `gu` | `(gurps)` | GURPS | `bg` | - | Board games | | `mt` | `(mtg)` | Magic: TG | `wh` | - | Warhammer | Scale: **enthusiasm** (see global scale table). > 0: Video games are a waste of time. > 7: People disconnect when they see your name. --- ### k: Books 0. **Illiterate by choice**: Words are tiny drawings that haven't tried hard enough. 1. **Not since school**: Didn't finish that one either. 2. **Web only**: You call this 'reading.' 3. **Occasional**: Mostly when trapped on a plane. 4. **Few/year**: Goodreads updated sporadically. 5. **Regular**: To-read pile doubles as furniture. 6. **Avid**: Library cards from multiple jurisdictions. 7. **Book/week**: Shelves have shelves. Read this spec for fun. --- ### l: Spoken Languages ISO 639-1 codes + proficiency 0–7. `$` and `+` permitted. 0. **None** 1. **Few words** 2. **Tourist** 3. **Beginner** 4. **Conversational** 5. **Proficient** 6. **Fluent** 7. **Native** Common codes: `en` English · `es` Spanish · `fr` French · `de` German · `zh` Chinese · `ar` Arabic · `ja` Japanese · `ko` Korean · `pt` Portuguese · `ru` Russian · `hi` Hindi · `it` Italian · `nl` Dutch · `sv` Swedish · `tr` Turkish · `pl` Polish · `uk` Ukrainian · `fa` Farsi · `he` Hebrew · `th` Thai · `vi` Vietnamese · `id` Indonesian · `ms` Malay · `sw` Swahili · `bn` Bengali · `ta` Tamil > `lar7$en6de3+5`: native Arabic (paid translator), fluent English, learning German (beginner, aspiring proficient). --- ### m: Music | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `rk` | `(rock)` | Rock | `mt` | `(metal)` | Metal | | `pk` | `(punk)` | Punk | `jz` | `(jazz)` | Jazz | | `bl` | `(blues)` | Blues | `fk` | `(folk)` | Folk | | `cl` | `(clas)` | Classical | `el` | `(elec)` | Electronic | | `hp` | `(hip)` | Hip-hop | `pp` | `(pop)` | Pop | | `rb` | `(rnb)` | R&B | `cn` | `(coun)` | Country | | `ab` | `(amb)` | Ambient | `pg` | `(prog)` | Progressive | | `rg` | `(reg)` | Reggae | `in` | `(ind)` | Indie | | `sl` | `(soul)` | Soul | `lt` | `(lat)` | Latin | | `wr` | `(wrld)` | World | `dk` | `(dnb)` | Drum & Bass | | `tr` | `(trap)` | Trap | `lo` | `(lofi)` | Lo-fi | | `sy` | `(synth)` | Synthwave | `go` | `(gospel)` | Gospel | | `op` | `(opera)` | Opera | `ga` | `(garage)` | Garage | Scale: **enthusiasm** (see global scale table). > 0: This genre is an assault on sound. > 7: This genre IS your personality. --- ### o: Operating System **Linux (x prefix):** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `xa` | `(xarch)` | Arch | `xd` | `(xdeb)` | Debian | | `xu` | `(xubu)` | Ubuntu | `xm` | `(xmint)` | Mint | | `xp` | `(xpop)` | Pop!_OS | `xf` | `(xfed)` | Fedora | | `xr` | `(xrh)` | Red Hat | `xc` | `(xcent)` | CentOS/Alma/Rocky | | `xs` | `(xsuse)` | OpenSUSE | `xg` | `(xgen)` | Gentoo | | `xj` | `(xmanj)` | Manjaro | `xsl` | `(xslk)` | Slackware | | `xn` | `(xnix)` | NixOS | `xk` | `(xkali)` | Kali | | `xv` | `(xvoid)` | Void | `xz` | `(xzor)` | Zorin | | `xx` | `(xmx)` | MX Linux | `xt` | `(xtail)` | Tails | | `xq` | `(xqube)` | Qubes | `xl` | `(xlfs)` | LFS | | `xe` | `(xelem)` | Elementary | `xw` | `(xwsl)` | WSL | | `xi` | `(ximmut)` | Immutable | `xb` | `(xbedrock)` | Bedrock | **BSD:** `fb` FreeBSD · `ob` OpenBSD · `nb` NetBSD · `db` DragonflyBSD **Windows:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `wt` | `(wten)` | Windows 10 | `we` | `(welv)` | Windows 11 | | `ws` | `(wsrv)` | Win Server | | | | **Mac:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `mc` | `(mac)` | macOS | | | | **Mobile:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `an` | `(android)` | Android | `io` | `(ios)` | iOS | | `pm` | `(pmos)` | postmarketOS | `li` | `(lineage)` | LineageOS | **Other:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `sl` | `(sol)` | Solaris | `ax` | `(aix)` | AIX | | `ch` | `(chrome)` | ChromeOS | `ha` | `(haiku)` | Haiku | | `tm` | `(temple)` | TempleOS | `se` | `(serenity)` | SerenityOS | | `rx` | `(redox)` | Redox | `pl` | `(plan9)` | Plan 9 | Scale: **proficiency** (see global scale table). > 0: Would mass-format every drive running this. > 7: You ARE the sysadmin. First person plural. --- ### p: Programming Languages | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `py` | `(python)` | Python | `rs` | `(rust)` | Rust | | `c` | - | C | `cp` | `(cpp)` | C++ | | `cs` | `(csharp)` | C# | `jv` | `(java)` | Java | | `kt` | `(kotlin)` | Kotlin | `sw` | `(swift)` | Swift | | `ph` | `(php)` | PHP | `pl` | `(perl)` | Perl | | `lu` | `(lua)` | Lua | `hs` | `(haskell)` | Haskell | | `cj` | `(clj)` | Clojure | `er` | `(erlang)` | Erlang | | `ex` | `(elixir)` | Elixir | `sc` | `(scala)` | Scala | | `jl` | `(julia)` | Julia | `r` | - | R | | `m` | `(matlab)` | MATLAB | `zg` | `(zig)` | Zig | | `ni` | `(nim)` | Nim | `as` | `(asm)` | Assembly | | `sq` | `(sql)` | SQL | `ba` | `(bash)` | Bash | | `ps` | `(psh)` | PowerShell | `vb` | - | Visual Basic | | `da` | `(dart)` | Dart | `oc` | `(objc)` | Obj-C | | `ls` | `(lisp)` | Lisp | `js` | - | JavaScript | | `ts` | - | TypeScript | `go` | - | Go | | `rb` | `(ruby)` | Ruby | `ml` | `(ocaml)` | OCaml | | `fs` | `(fsharp)` | F# | `pr` | `(prolog)` | Prolog | | `co` | `(cobol)` | COBOL | `fo` | `(fortran)` | Fortran | | `gd` | `(gdscript)` | GDScript | `vl` | `(vhdl)` | VHDL | | `sv` | `(sysv)` | SystemVerilog | `cr` | `(crystal)` | Crystal | | `hy` | `(hylang)` | Hy | `rk` | `(racket)` | Racket | | `tc` | `(tcl)` | Tcl | `aw` | `(awk)` | AWK | | `sd` | `(sed)` | sed | `wm` | `(wasm)` | WASM | Scale: **proficiency** (see global scale table). > 0: Mass-produced negative opinions without writing a line. > 7: You ARE the language. People cite your blog posts. --- ### q: Security / Hacking 0. **No security**: Password is 'password'. Click every link. 1. **Don't care**: Firewalls are a construction thing. 2. **Default passwords**: Pet name plus birth year. Reused everywhere. 3. **Basic awareness**: Know phishing is bad. Fallen for it once. 4. **Password manager**: Normal human security. 5. **2FA everywhere**: Judge friends' passwords. 6. **Encrypts everything**: Paranoid but justified. 7. **Tinfoil hat**: NSA has a file but can't read it either. --- ### r: Religion **Single value only**: one tradition + devoutness rating. Parser rejects multiple sub-IDs. | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `ch` | `(chr)` | Christian | `is` | `(isl)` | Islam | | `ju` | `(jud)` | Judaism | `hi` | `(hin)` | Hindu | | `bu` | `(bud)` | Buddhist | `sk` | `(sik)` | Sikh | | `pg` | `(pag)` | Pagan | `de` | `(dei)` | Deist | | `ag` | `(agn)` | Agnostic | `at` | `(ath)` | Atheist | | `pn` | `(pan)` | Pantheist | `sp` | `(spi)` | Spiritual | | `zo` | `(zor)` | Zoroastrian | `ja` | `(jain)` | Jain | | `ta` | `(tao)` | Taoist | `sh` | `(shin)` | Shinto | | `ba` | `(bah)` | Bahá'í | `dr` | `(druz)` | Druze | Rating = devoutness: 0 = Hostile, 4 = Cultural, 7 = Clergy-level. > `ris6`: devout Muslim. `rath4`: culturally atheist. --- ### s: Sex / Relationships 0. **Celibate**: Made your peace. 1. **Not active (unwilling)**: Dating profile is unrewarded effort. 2. **Not active**: 'Focusing on yourself.' Friends skeptical. 3. **Complicated**: Status requires a flowchart. 4. **Private**: None of your business. 5. **Dating**: At least two dating apps. 6. **Partnered**: Found someone who tolerates your geekery. 7. **Married w/ kids**: Evidence is small, loud, doesn't sleep. --- ### t: TV / Film **Sci-Fi:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `st` | `(trek)` | Star Trek | `sw` | `(wars)` | Star Wars | | `sg` | `(gate)` | Stargate | `ex` | `(exp)` | Expanse | | `bs` | `(bsg)` | Battlestar | `bb` | `(bab)` | Babylon 5 | | `ff` | - | Firefly | `du` | `(dune)` | Dune | | `fn` | `(fnd)` | Foundation | `dw` | `(drwho)` | Doctor Who | | `tb` | `(tbp)` | 3 Body Problem | `si` | `(silo)` | Silo | | `fa` | `(fall)` | Fallout | `al` | `(alien)` | Alien | | `bd` | `(blade)` | Blade Runner | `or` | `(orville)` | Orville | **Fantasy:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `go` | `(got)` | Game of Thrones | `wo` | `(wot)` | Wheel of Time | | `ro` | `(rop)` | Rings of Power | `wi` | `(wit)` | Witcher | | `sn` | `(sand)` | Sandman | | | | **Other:** | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `mp` | `(monty)` | Monty Python | `bt` | `(bbt)` | Big Bang Theory | | `rm` | - | Rick & Morty | `bl` | - | Black Mirror | | `sv` | `(sev)` | Severance | `mr` | `(mrobot)` | Mr. Robot | | `hm` | `(humans)` | Humans | `ww` | `(westworld)` | Westworld | | `dp` | `(devs)` | Devs | | | | Scale: **enthusiasm** (see global scale table). > 0: Crime against storytelling. > 7: Know the lore deeper than the writers. --- ### v: Politics Format: `v/`. No modifiers. **Social:** 0 = Far-right authoritarian · 4 = Centrist · 7 = Far-left libertarian **Economic:** 0 = Unregulated capitalism · 4 = Mixed economy · 7 = Full socialism > `v5/3`: socially center-left, economically center-right. > `v4/4`: centrist. You annoy both sides equally. --- ### w: Hardware 0. **Defeated by USB**: The cable won. 1. **Can plug in**: Big hole is for power. 2. **Replaced a part**: Three YouTube videos and mild weeping. 3. **Troubleshoots**: Can tell RAM from a graphics card. 4. **Built a PC**: Cable management isn't great but it posted. 5. **Comfortable**: Friends call when things break. 6. **Mods regularly**: Void warranties recreationally. 7. **Builds everything**: Manufactured your own PCBs. --- ### x: Comics / Manga | Short | (Long) | Name | Short | (Long) | Name | |---|---|---|---|---|---| | `dc` | - | DC Comics | `mv` | `(marvel)` | Marvel | | `mg` | `(manga)` | Manga | `dl` | `(dilbert)` | Dilbert | | `xk` | `(xkcd)` | XKCD | `in` | `(indie)` | Indie | | `wt` | `(webtoon)` | Webtoon | `gn` | `(graphicnovel)` | Graphic Novels | Scale: **enthusiasm** (see global scale table). > 0: Comics are for children. (You're wrong.) > 7: Collection requires its own room. --- ### y: Fitness 0. **What is outside**: Cardiovascular exercise is walking to the fridge. 1. **Avoids activity**: Physical activity is a social obligation. 2. **Occasional walk**: Coffee is the point, not the walk. 3. **Light activity**: Own athletic wear. Never been to a gym. 4. **Some exercise**: Can climb stairs without existential crisis. 5. **Regular workouts**: Track your steps. 6. **Very active**: Resting heart rate impresses doctors. 7. **Daily athlete**: Body is a temple. Temple has a squat rack. --- ### z: Maker / DIY 0. **Defeated by IKEA**: Allen keys are your nemesis. 1. **IKEA once**: One screw left over. Probably fine. 2. **Basic repairs**: Holes approximately where they should be. 3. **Handy**: Fixes hold. Duct tape is structural. 4. **Simple projects**: A shelf here, a birdhouse there. 5. **Regular maker**: Projects folder never shrinks. 6. **Advanced**: Workshop has zones. 7. **Built my house**: Hardware store sends Christmas card. --- ## Extending UGI Any field with sub-IDs accepts custom entries via `~`: ``` gcs/~mycology geek of CS and mycology m~synthwave6 synthwave enthusiast t~severance7 severance obsessed j~larp5 LARP, competent o~beos4 BeOS, neutral nostalgia ``` Letters `n` and `u` are reserved for future spec versions. --- ## Examples ### jdoe: Full-stack developer ``` ------- BEGIN UGI BLOCK ------- v:0 @jdoe Gcs$/dev A4 E4 Len7 Oxa6 Owe5 Ppy6$ Pjs6$ Pts5 Prs4+6 Dvs6 W5 Q4 I5 V5/4 Rag4 Tst5 Tex7 K5 Xxk6 Jst5 Jpc6 Mrk5 Min4 B5/4 C3 Hh4 Hf5 Hm4 S6 Y4 F4 Z3 -------- END UGI BLOCK -------- ``` ``` ugi:0@jdoe:gcs$/dev,a4,b5/4,c3,hh4f5m4,e4,len7,oxa6we5,ppy6$js6$ts5rs4+6,dvs6,w5,q4,i5,v5/4,rag4,tst5ex7,k5,xxk6,jst5pc6,mrk5in4,s6,y4,f4,z3 ``` ### neo: Security researcher ``` ------- BEGIN UGI BLOCK ------- v:0 @neo Gcy$/sec/os A3 E6 Len6 Lzh4 Oxd7$ Ofb6 Pc6$ Pba7 Pas5 Prs5 Ded7 W6 Q7$ I1 V6/5 Rat5 Tff7 Tbs6 Tbl6 K7 Jro6 Jpc7 Mmt6 Mel5 B5/3 C1 Hh2 S2 Y5 F3 Z6 -------- END UGI BLOCK -------- ``` ``` ugi:0@neo:gcy$/sec/os,a3,b5/3,c1,hh2,e6,len6zh4,oxd7$fb6,pc6$ba7as5rs5,ded7,w6,q7$,i1,v6/5,rat5,tff7bs6bl6,k7,jro6pc7,mmt6el5,s2,y5,f3,z6 ``` ### hax0r: Hardware hacker ``` ------- BEGIN UGI BLOCK ------- v:0/3 @hax0r Gee$/rb/dy~solder A5 E4 Lja7 Len5 Oxg7 Ofb5 Pc5 Pba6 Pas7$ Dem5 W7$ Q6 I2 V3/3 Rbu5 Tbb6 Tff7 K5 Xxk6 Xdl5 Jre7 Jpc6 Jbg5 Mmt7 Mpk6 B6/5 C2 Hh3 Hf6+7 Hm5 S3 Y5 F4 Z7$ -------- END UGI BLOCK -------- ``` ``` ugi:0/3@hax0r:gee$/rb/dy~solder,a5,b6/5,c2,hh3f6+7m5,e4,lja7en5,oxg7fb5,pc5ba6as7$,dem5,w7$,q6,i2,v3/3,rbu5,tbb6ff7,k5,xxk6dl5,jre7pc6bg5,mmt7pk6,s3,y5,f4,z7$ ``` --- ## Comparison with predecessors | | Geek Code 3.12 (1996) | Geek Code 2026 | Hacker Key v4 (2006) | UGI v0 | |---|---|---|---|---| | Rating | +/- stacking | +/- stacking | 0-9 | 0-7 octal | | Length | 4-6 lines | 4-8 lines | 1 line | 1 or 4-8 | | Fields | ~25 | ~35+ | ~16 | 24+2 | | URI-safe | No | No | Mostly | Yes | | Case | Sensitive | Sensitive | Sensitive | Insensitive | | Extensible | No | No | Limited | ~ custom | | Format | Block | Block | Inline | Block+URI | | Active | 1996 | GitHub | 2006 | Draft | ### Fields retained `a` age brackets, `b` dimensions, `c` dress/clothing, `e` education, `g` geek type, expanded, `h` hair/beard, `k` books, `o` os merged, `p` programming, `q` security/pgp, `s` sex, `t` tv merged, `v` politics, `w` hardware. All present in one or both predecessors. ### Fields added `d`: Editor war must be documented. `f`: Geeks cook now. `i`: Defining divide of the 2020s. `j`: Gaming beyond DOOM. `l`: Geek culture is global. `m`: Absent from predecessors. `r`: From Hacker Key. `x`: Beyond Dilbert. `y`: Modern geek exercises. `z`: Maker movement. ### Fields removed Usenet: dead. Kibo: niche. DOOM: use j. OS/2, VMS: use o+~custom. MBTI: pop psychology. Residence: low value. GitHub handle: @handle. I/O: abstract. Cracking: use q. Lang hacking: in g. Math level: in e+g. Prog methodology: in p. --- ## Quick reference ``` FORMAT: ugi:[/]@: SCALE: 0=hostile 1=dislike 2=meh 3=slight- 4=neutral 5=like 6=strong 7=obsessed MODIFY: $ = paid + = aspire / = fluctuate,separate ~ = custom a age b build c clothing d editor / ide e education f food / cooking g geek specialization h hair i ai stance j gaming k books l spoken languages m music [n reserved] o operating system p programming languages q security / hacking r religion s sex / relationships t tv / film [u reserved] v politics w hardware x comics / manga y fitness z maker / diy $+ f j l o p q w y z $ only g + only b c d e h k s none a i m r t v x ``` --- ## References - [Geek Code](https://sig.codes/geek/), Robert A. Hayden, 1993-1996 - [Geek Code 4.0+](https://sig.codes/geek-4.0/), exarobibliologist, 2019-2026 - [Hacker Key](https://sig.codes/hacker-key/), Chris Allegretta, 2003-2006 - [sig.codes](https://sig.codes/) - [Geek Code on Wikipedia](https://en.wikipedia.org/wiki/Geek_Code) - [Geek Code v3.12 mirror](https://geekcode.xyz/) - [Hacker Key v4 mirror](https://sig.codes/hacker-key/4/) --- ## License MIT. see [LICENSE](./LICENSE). ## Check - **[ugi.gumx.cc](https://ugi.gumx.cc)** ([repo](https://git.sr.ht/~gumxcc/ugi.gumx.cc)): web-based UGI encoder, decoder, and format converter - **ugi-cli** ([repo](https://git.sr.ht/~gumxcc/ugi-cli)): command-line tool for encoding, decoding, and converting UGI strings --- ## Generator scripts The `scripts/` directory contains generators that produce all artifacts from `ugi_registry_v0.json`. Each script takes the registry JSON path and output file path as arguments: ```bash python scripts/gen_spec.py ugi_registry_v0.json README.md python scripts/gen_abnf.py ugi_registry_v0.json grammar/UGI_GRAMMAR_v0.abnf python scripts/gen_ebnf.py ugi_registry_v0.json grammar/UGI_GRAMMAR_v0.ebnf ``` ### Requirements - Python 3.8+ - No external dependencies ### Project structure ``` ugi-spec/ ├── ugi_registry_v0.json # source of truth ├── scripts/ │ ├── gen_spec.py # spec markdown generator │ ├── gen_abnf.py # ABNF grammar generator │ └── gen_ebnf.py # EBNF grammar generator ├── grammar/ │ ├── UGI_GRAMMAR_v0.abnf # generated ABNF │ └── UGI_GRAMMAR_v0.ebnf # generated EBNF ├── tests/ │ └── cases.json # test cases for all field types and formats └── README.md # this file (generated spec + usage) ``` --- ## License MIT. see [LICENSE](./LICENSE).