Short paper submitted to CHI-2000

Interactive VisiGeek Applet 2.0 coming soon to this space.

The VisiGeek displayer enables the visual comparison of otherwise non-visual datasets. The visualizer highlights differences in the data using patterns, letter-shapes and motion. Applications of this type of visualization could include affinity-matching when searching for newsgroups or chat rooms to join, or visual sorting tasks such as identifying a desirable place to live using a back-end service such as the Claritas "You Are Where You Live" ( demographic database.

The demonstration project's immediate goal is to allow a viewer to visually compare"Geek Codes" of two individuals to uncover differences and similarities.

The visualizations attempt to correlate visual "stability" with "similarity". Thus, less motion or fewer color shifts indicate that the items being compared are very alike, while large sweeps of motion or broad color shifts indicate very dissimilar features. The addition of an "inverse" visualization in which more activity correlates to more similarity would be possible but is not implemented at this time.

Driving ideas behind this project include thoughts about "phase". We sometimes say that when two individuals are similar or "thinking alike" they are "in sync". Display of "phase" requires a continuous, cyclical display. VisiGeek attempts to map the fixed data of "geek Codes' into a cyclical space.

Phase match/mismatch can be represented many ways: the synchronization of cyclical visual elements, sound, light, vibration.


VisiGeek's components:
Geek Code spider - to gather and filter codes (
Geek Code parser - to interpret the codes into values
Visigeek: Display manager, and individual display mode modules


The Geek Code

The "Geek code" [HAYDEN] dates to the days when the Internet was primarily a place for text, long before personal web pages, and personal photographs. This dense self-representation of an individual's "character" evolved from descriptions of stars used by astronomers in the General Catalogue of Variable Stars [GCVS]. Code meanings in star classifications are are explained at the website of the Astronomical Society of South Australia (

The first "personal description" coding scheme on the Internet, which predates Geek Codes, was apparently the "natural Bears Classification System" [BEAR] found in gay newsgroups, describing personal appearance, traits, and sexual preferences. The expression "bear" in gay culture describes a gay man who is hairy, has facial hair, and a cuddly body [BEAR2].

'... the word "Bear" means many things to different people, even within the bear movement. Many men who do not have one or all of these characteristics define themselves as bears, making the term a very loose one. Suffice it to say, "bear" is often defined as more of an attitude than anything else - a sense of comfort with our natural masculinity and bodies that is not slavish to the vogues of male attractiveness that is so common in gay circles and the culture at large.'
- "What is a Bear" -

The Geek Code appropriates the idea behind the "bear code" for a classification of self-described "geeks". The code's authors also added standardized formatting borrowed from PGP encryption [PGP] which simplifies the mechanical discovery and parsing of geek codes.

Geek codes first appeared in the footers of newsgroup postings, still the most popular venue for this form of expression, and now are transmitted in e-mail signatures and on web pages.


Why geek codes?
Geek codes are used in this demonstration because they are personal, readily available on the Internet, reasonably well-evolved (version 3.12) and fairly stable (last revision 1996). I do not suggest that geek codes are a comprehensive portrait of an individual, but simply that they serve the needs of this demonstration by providing an existing, refined source from which test data may be drawn.


What do the Geek Code letters represent?

Geek codes cover several general categories of personal decription:
How to Display Your Geek Code


The "+" and "-" values around a geek code letter do not simply indicate "more" or "less" of that trait, but refer to a largetaxonomy providing more detail about the meaning of each "level". For example, the description of a geek's "dress":


It is said that "clothes make the man". Well, I understood that I was made by a mommy and a daddy (and there's even a category to describe the process below!). Maybe the people who made up that saying aren't being quite that literal...

d++ I tend to wear conservative dress such as a business suit or worse, a tie.

d+ Good leisure-wear. Slacks, button-shirt, etc. No jeans, tennis shoes, or t-shirts.

d I dress a lot like those found in catalog ads. Bland, boring, without life or meaning.

d- I'm usually in jeans and a t-shirt.

d-- My t-shirts go a step further and have a trendy political message on them.

d--- Punk dresser, including, but not limited to, torn jeans and shirts, body piercings, and prominent tattoos.

dx Cross Dresser

d? I have no idea what I am wearing right now, let alone what I wore yesterday.

!d No clothing. Quite a fashion statement, don't you think?

dpu I wear the same clothes all the time, no matter the occasion, forgetting to do laundry between wearings.


Other categories in the Geek Code:

s Shape
a Age
C Computers
P Perl
L Linux
E Emacs
W World Wide Web
o USENET Oracle
K Kibo
w Microsoft Windows
O OS/2
M Macintosh
PS Political and Social Issues
PE Politics and Economic Issues
Y Cypherpunks
t Star Trek
5 Babylon 5
X X-Files
R Role Playing
tv Television
b Books
DI Dilbert
G The Geek Code
e Education
h Housing
r Relationships
xyz Sex


Geek code classifications can also be made variable:
@ not rigid, may change
() cross-overs or ranges
> wannabe
$ does it for money
? has never heard of this thing
! (placed in front of code) "stubborn refusal to participate"


What is the program doing?

Each geek code element is given some space in the display window. The display manager steps between the minimum and maximum values for element and places a visual representation of the current display value in the given code's space. So, if two people are being compared, it steps between the two individuals' values. If the values are identical, the image is stationary.

Individuals may express two values for every geek code entry: their "current" or "usual" state, and a "hoped-for" or "sometimes changes to" value. This increases the amount of activity - comparing an individual to him- or her-self results in an image that may not be completely stable, if the individual has expressed some variable traits.

Several different visualizations are provided (in varying degrees of completion) ranging from a literal representation of the codes using letters of varying sizes, to visual representations in which the motion or color of arbitrarily-chosen shapes (rectangles and circles) varies to show the range of data being represented.

Two iterators are running in the displayer - one modulo the size of the space (think of this as a rotary timer) and the other ramps up and down between the two values being displayed (for linear cyclical displays)


The following modules have been developed, more are coming based on user feedback:

1 - Letters, varying size to match the data, mod the iterator (they "throb")
2 - Like #1, but using the ramp iterator, so they "pulse" more gently

3 - Gray fading boxes, the darkness of the box represents the underlying values
4 - Same as 3, but in blue
5 - Colored boxes, 3 shades with the differences grouped by "amount of difference": red = very similar, green = less similar, blue = least similar
6 - Jittery bar
7 - Dots - they shake when the match is unstable
8 - Ovals that slide sideways
9 - Ovales that fall vertically
10 - small ellipses


Choosing the data to represent

Considerations included representation of variant traits, missing traits, and wild traits not in the official taxonomy.

The representation of "me" could symbolize either my personal traits or the traits I seek in someone else, so the display is a measure of affinity rather than similarity.


Future work, features I would like to see in this sort of program
More evolved pattern generators incorporating state information - like John Conway's "Game of Life"

Drag and drop sorting - in conjunction with the appropriate pattern set, this could allow fast visual sorting / organization

Controls inside the page to increase interaction

More-robust parser and greater consideration of the "modifiers" beyond the simple integer values

[BEAR] The Natural Bears Classification System (V1.10) Version 1.0 23-November-1989 Version 1.10 7-May-1996 Authors: (Bob Donahue = BBC) (Jeff Stoner)



[HAYDEN] The Code of the Geeks v3.12 By: Robert A. Hayden. HTML version formatted by Dylan Northrup. Last updated: March 5, 1996.

[PGP] Pretty Good Privacy, Phil Zimmerman,