The Hacker Key Guide

version 5, by Simon Shine <> 2011-12-22.

version 4, by Chris Allegretta <> 2006-12-29.


The Hacker Key is an abbreviated way to describe the properties of hackers: What kind of hacking they do, what kind of fiction they like, what their stance is on cryptography, languages and games. It strives to replace the more popularly known The Geek Code of the mid-1990s. In spite of intentions of the author, The Geek Code was never renewed to encompass the diversity of geek/nerd culture, and some of the memes it does mention are so old that much of our current Internet population can only have a historical perspective on them.

Unfortunately, The Hacker Key version 4 died some time in the year 2007. This version 5 is brushed up and mainly targets the diversity of culture, eliminates some americentrism while preserving the original aim of targeting mainly computer geeks (hackers, programmers) who share a stereotypical love for science fiction, languages, games and flame wars.

You can read the section on design choices and why The Geek Code ever needed replacement, or you can proceed to create the hacker key that uniquely describes you.

Format of a Hacker Key Entry

A Hacker Key consists of a set of categories, a score for each category, and possibly an elaboration on that category. Categories are lowercase abbreviations listed below as e.g. Software Hacking (sw), Hardware Hacking (hw) and Language Hacking (ln), and the score is a number between 1 and 9 that indicates your current, perceived level. Some categories may allow elaboration by specifying one or more uppercase letters.

A Hacker Key allows modifiers to further elaborate on a category. They work as follows:

Categories are non-mandatory, so leaving categories out is a way to express indifference or reluctance to answer. You may choose to omit categories to keep the size of your hacker key below 80 characters.


Available categories are:


v5 -- The current version of The Hacker Key.

Part I

sw -- Software Hacking

9 - My three-letter initials are notoriously known on the internet.
8 - I wrote most of my development tools and contributed to popular codebases.
7 - I wrote a shell/debugger/editor/compiler in 30 lines of code.
6 - I have a public software repository and someone even cloned my code once!
5 - My compilers have the latest versions.  I memorize compile flags.
4 - I've patched code once or twice for personal use.  Writing software isn't my thing.
3 - I don't hack software. Hacking implies tinkering, and I work structured!
2 - I don't hack software, but my screensaver has those green digits from The Matrix!
1 - I'm a manager or work in Human Resources.  Hacking is illegal!

hw -- Hardware Hacking

9 - My Silicon Valley venture taught me about the real world.
8 - My hardware designs were used in actual products.
7 - I rely on my own hardware. Complying with standards is a pastime.
6 - I've made several hardware drawings. I favour one set of instructions.
5 - I took a machine architecture course. I can build a pipelined processor.
4 - I build PCs regularly, sometimes even for sport. Friends rely on me.
3 - I've built a PC or two in my day. It's just easier to get them pre-made.
2 - People ask me what USB stands for. I know the answer, too.
1 - I wouldn't want to void my warranties.

pr -- Programming

9 - My natural-language sentences typecheck in popular theorem provers.
8 - I have contributed to popular programming language development.
7 - I sometimes prototype my thoughts in my favourite formal language.
6 - I have a customized working environment, and I bookmark my documentation.
5 - I'm a programmer, not a hacker.
4 - I've written code, mostly because I had to.  The result was decent.
3 - Comments!?  If it was hard to write, it should be hard to read.
2 - I've written Hello World. My programs don't do that much.
1 - Programming?  I've got a DVD, not a VCR!

Indicate your preferred genre of hacking language

Your favourite programming language may be functional, object-oriented, multi-
paradigm and a web-based scripting-language, but why do you primarily use it?

I - Imperative (C, Fortran, Pascal, Assembly)
F - Functional (Standard ML, Haskell, Lisp, Scheme, Clojure)
C - Concurrent (Erlang, Occam, Go, Orc)
O - Object-oriented (C++, Obj-C, Java, C#)
M - Multi-paradigm (Python, Scala, JavaScript)
S - Scripting (PHP, Python, Ruby, Perl)
W - Web-based (PHP, ASP, VB.NET, JavaScript)
E - Esoteric (Brainfuck, Unlambda, Malbolge, Befunge)
L - Logical (SQL, Prolog, Verilog)
X - Hackish (TCL, Perl, Shell-script, LaTeX, Haxe)

ck -- Cracking

9 - My botnets, zero-days or full-disclosures change the landscape.
8 - Black Hat - Script kiddies worship me.  If the police know what
    I'm doing, they have nothing concrete on me.
7 - I write the 'sploits that all the script kids use. It's an intellectual
    challenge, and besides, I've got a regular job.
6 - Grey Hat - It really depends on who benefits from what I do.
5 - I try to break into systems occasionally.  It's for educational
   purposes, that's it!
4 - White Hat - I study exploits because I'm the one who has to patch
   the systems when they get released.  I subscribe to CERT.
3 - I've tried once or twice, but it felt wrong or uninteresting.
2 - I don't ever try to break into a computer, that's against the law!
1 - I barely know how to crack an egg!

Part II

edu -- Education

What is your level of education?

9 - I am omniscient, you insensitive clod!
8 - Ph.D.
7 - Master
6 - Bachelor
5 - College or vocational training (non-academic)
4 - High School
3 - I stick to reading Wikipedia-articles.
2 - Elementary/Middle School
1 - I am uneducated. It's a coincidence that I found my way here!


A - Auto-didact
I - Incomplete

ln -- Language Hacking

9 - I am J.R.R. Tolkien or Noam Chomsky.
8 - I've had my pet language used and studied by others.
7 - People who don't know me have used words I've coined.  I've written
    my own artificial language.
6 - I've learned at least one artificial language, or I'm a linguist.
5 - I just picked some formal linguistics or phonetics along the way.
4 - I've coined a phrase or made up a new word or two.
3 - I'm a grammar nazi and strive to speak $LANG properly.
2 - I spell wrong, use unorthodox abbreviations and emoticons in my normal
    writing, but somehow my messages get through to my intended audience.
1 - I'm illiterate.  (Alternatively: I'm a Slashdot editor!)

ma -- Mathematics

Indicate your mathematical proficiency.

9 - I won a million dollars once solving a hard problem.
8 - Category theory, topology, abstract algebra.  I am a peer-reviewed scientist.
7 - I've got a BSc in mathematics.  My friends think I am too abstract.
6 - Probability/Statistics.  I'm a practical person.
5 - Linear Algebra.  I think systematically but don't prove too many things.
4 - Calculus: Limits, functions, derivatives, integrals... that's about it.
3 - High School mathematics.  I can isolate the X and solve quadratic equations.
2 - Elementary arithmetic.  Anything beyond a simple calculator baffles me.
1 - I'm angry at numbers.  There's like, too many of 'em and stuff.

Part III

os -- Operating Systems

Your general interest in computer operating systems.

9 - My own operating system makes money, or is used in teaching.
8 - I wrote an entire operating system that nobody uses.
7 - I've participated in writing a common distribution for my system.
6 - I've manually configured large parts of my own system.
5 - I've signed up with local user groups or participated in meetings.
4 - I dual-boot two or more operating systems. Each has its purpose.
3 - I run a virtual machine with another operating system. I'm curious.
2 - I am quite happy with the system that I've always used.
1 - I don't know. I live inside a web browser.

What is your preferred genre of operating systems?

U -- Unix (Linux, BSDs, etc.)
W -- Windows (XP, Vista, 7, etc.)
M -- Mac OS (X, or earlier)
O -- Old/Other (OS/2, Plan 9, or other)

ed -- Text editor/IDE

E - Emacs.  Vi has two modes: One that beeps and one that destroys your text!
P - Power User.  My Notepad++/TextPad/etc. variant has loads of plugins.
G - Generic graphical IDE (Eclipse, Anjuta, Visual Studio).  I code by auto-completion.
D - Default.  You mean there are different editors?
M - Minimalist.  My editor can load files, save files and edit files.  Tada!
O - Old-school.  I am too old-school for this war.  I use ed, ee or similar.
V - Vi(m).  Operating an implicit state-machine is a very natural way of thinking.
X - Other.

cr -- Cryptography: Perfect privacy, or effective data mangling?

9 - My peer-reviewed encryption schemes pioneer future digital communication.
8 - As a principle, I refuse to send or store plaintext. I don't own a GSM phone.
7 - I contribute to privacy-enhancing services on the Internet (e.g. Tor).
6 - My key sizes, expiration dates and choices of algorithms comply with the
    most recent expert advice.  I see it as my duty to propagate this wisdom.
5 - I sign all my emails. If your public key is available, I encrypt them, too!
4 - I have a public key, and I might even remember how to use it!
3 - I encrypt a portion of my harddrive for my most sensitive data.
2 - I endorse the idea, but find it too difficult to use in practice.
1 - Encryption is needless overhead.  Users must have something to hide!

Part IV

tv -- Television and tv-series

In recent decades, an explosion has happened in the availability of tv-series.
Of the tv-series that depict the stereotypical geek/nerd, there are ones that
feature brainiac academics and ones that feature office grunts with it-skills.
There are even several series with crime-fighting geeks.

And the classical Star Trek vs. Star Wars vs. Babylon 5 is being shadowed by
numerous tv-series that blend science fiction and fantasy. The Hacker Key as
of version 5 does not support information about tv habits.

Send me an email if you have an idea about how to support this.

bo -- Books

Some hackers read fiction, some stick to fact and others stick to hacking.
What is your average consumption of fictive works?

9 - I read one book a day. I have library cards in three states.
8 - I consume at least a book or two a week.
7 - I find the time to read at least a book a month.
6 - I read the newspaper and the occasional recommended book.
5 - I enjoy reading, but I don't make the time very often.
4 - I read about books, and then I watch the filmatizations.
3 - I read every day. You mean besides documentation? Then no.
2 - I'm an avid reader of cartoons, commercials and food labels.
1 - I didn't actually read The Hacker Key. I just had someone tell me.

ga -- Games

9 - I'm Peter Pan.
8 - My time is divided strictly into working, sleeping and playing.
7 - Not only do I play games, I invent games and people enjoy them.
6 - I rate games online and contribute with strategy guides.
5 - I spend several hours a day playing.
4 - I spend several hours a week playing.
3 - I play games at least once a week.
2 - I play games during social events.
1 - Games? Life is serious.

C - Computer Games (MMOs, MUDs, FPS, etc.)
L - Roleplaying (LARP, Pen & Paper, Theatre)
B - Boardgames
S - Sports
D - Drinking games
X - Game of Life is a game, right? Well, I'm a cellular automaton!

Part V

a -- Age

a[0-9]+ - Current age


I - Immortal

ge -- Gender

W - Woman
M - Man
I - Intersex
T - Transgender
Q - Queer

s -- Sexuality

Geeks have traditionally had problems with sex (by not getting any).
But with geeks in all ages and in all stages of life, quantifying this
may give an impression of where you are.

9 - I've worked with sex professionally. It's just like hacking.
8 - I've had real, live sex with more than one person.
7 - Not only have I had sex, I have noisy proof of my fertility!
6 - I was once referred to as 'easy'.
5 - I've had real, live sex.
4 - I've had sex. Oh! You mean with someone else? Then no.
3 - Not having sex by choice.
2 - Not having sex because I just can't get any.
1 - Not having sex because I have either no genitals or no sex drive.


G - Homosexual
S - Heterosexual
T - Transsexual
A - Bi-/Omni-/Pansexual
C - Curious
P - Pervert

p -- Politics

For version 5, determine the "Economic Left/Right" and the "Social Libertarian/
Authoritarian" scores on The Political Compass (, then
round them off and use a forward slash for negative values. Separate the two
values with a plus.

For examaple, if my values are -4.20 and -5.10, the result would be p/4+/5.

h -- Housing

There's no place like $HOME. But where is that?

9 - I own a lair with a secret entrance.
8 - I live in a protected home. People do my bidding.
7 - I live in a place with one or more fellow geeks.
5 - I live in a place with people who don't understand my geekiness.
5 - I live in my own place.
4 - I live in my own place. It's a garage, however.
3 - I live at home. Well, my parents live here, too.
2 - I live at work / in school. Literally.
1 - I live on the street. Will code for food!

et -- Etiquette

Your general level of etiquette. This describes your ability to behave as
expected in various social situations. For some geeks, this is surprisingly
difficulty, and for others, studying 17th century code of conduct is a pastime.

9 - I am or have regular relations with royals / diplomats.
8 - I study 17th century code of conduct as a pastime.
7 - I have read authoritative books on contemporary etiquette.
6 - I know my way around cutlery.
5 - I introduce myself and others at appropriate times.
4 - I bow and smile for good measure. 
3 - I sometimes wash my clothes.
2 - I know when not to burp or fart.
1 - My diagnosis exempts me from being polite.

I - My knowledge of etiquette is based on Internet forums.
R - My knowledge of etiquette is based on roleplaying.
S - My knowledge of etiquette is based on sci-fi series.

Displaying your Hacker Key

Because its design, the Hacker Key should fit fairly unobtrusively in your signature file.  As the Hackey Key Guide is not very well known, if you could include a reference to the web site it will help spread the word about the Guide.  Here is a sample version 4 Hacker Key:


Blame - Who's Responsible for This?

Credit/blame should rest with yours truly, Chris Allegretta < chrisa at>.  Additional inspiration, suggestions and feedback were given by Murray Schwalbaum, <loser at>. Thanks also to Charles Mason, Jim Ault, Eric Tucker and Jason Burks for their suggestions for version 0.

For version 2, I would like to thank: Daniel Keep, Luke-Jr, Tony Lainson, and Cody Hatch for the overhaul of the Politics section.

For version 3, I would like to thank Jon Spriggs, Stephen E. Mynhier, Kyle Goetz, Neil Williams, Roie Marianer, Eric Davis, and Joey Harrison for their category or organization suggestions.

For version 4, I would like to thank Scott A Gallaher (w), Thomas Jollans (ma and e), Jon Wickes (g), Matej Cizek and Fabio Emilio Costa (b), Sandy Knight for O in (l) and (i), and especially Carlos Alberto Pinto Peixoto Bastos Santos for the various suggestions for (l) and pointing me to the Political Compass website for (p).

Design Choices

Let's look at a sample Geek Code Block:

Version: 3.12
GCS d- s+: a- C++ US++++ P++ L+++ E--- W++ N+ o K- w--
O+ M+ V PS++ PE- Y PGP+ t+ 5 X R tv+ b+ DI+ D+
G++ e++ h--- r+++ y+

The Geek Code does many things well:
However, there are also some problems with the GeekCode:
The Hacker Key Guide hopes to keep the good aspects of the Geek Code and improve on some of the bad ones.
Design goals for the Hacker Key Guide are:
  1. A normal key with a few extra category choices should fit on one 80 column line of text.  Ideally, it should fit with enough room for the Hacker Key URL to fit on the same line, to give people some shot at figuring out what the heck it is.
  2. Ensure that the most commonly used symbols are valid PGP key symbols also.  For compatibility with the Geek Code we will use more symbols which aren't valid, but will make sure the most commonly used ones are.
  3. Keep the Guide up to date.  I can only promise I will either keep the guide up to date or turn it over to someone who will.   Time will tell if I can keep that promise.

Feedback - Please!

The Guide is still quite young, and I'm very interested in hearing your opinions about what you like, don't like and think the Guide needs or doesn't need.  Please don't suggest radical changes to the structure itself of the code, as this is the one area I'm fairly comfortable with.  Email your thoughts to chrisa at 


Copyright (c)  2003-2006  Chris Allegretta
      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.2
      or any later version published by the Free Software Foundation;
      with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
         Texts.  A copy of the license is included in the section entitled "GNU
      Free Documentation License".

Changes are copyleft 2011 Simon Shine under the GNU FDL.