Following is a perl script for parsing the Code of the Geeks as
defined by Robert A. Hayden. Briefly, the Code of the Geeks is a way
of describing your preferences about life -- as a Geek, of course --
to the world in a concise way. This script simply allows you to look
at Geek Codes in a more readable way.
Also included for your reading pleasure is the current copy of Robert
A. Hayden's geek code, and a copy of the GNU Copyleft document.
---------
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# Contents: COPYING geek_code ungeek
# Wrapped by kent@sparky on Tue Jan 25 17:25:48 1994
PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
echo If this archive is complete, you will see the following message:
echo ' "shar: End of archive 1 (of 1)."'
if test -f 'COPYING' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'COPYING'\"
else
echo shar: Extracting \"'COPYING'\" \(19078 characters\)
sed "s/^X//" >'COPYING' <<'END_OF_FILE'
XGNU GENERAL PUBLIC LICENSE
X**************************
X
X Version 2, June 1991
X
X Copyright (C) 1989, 1991 Free Software Foundation, Inc.
X 675 Mass Ave, Cambridge, MA 02139, USA
X
X Everyone is permitted to copy and distribute verbatim copies
X of this license document, but changing it is not allowed.
X
XPreamble
X========
X
X The licenses for most software are designed to take away your
Xfreedom to share and change it. By contrast, the GNU General Public
XLicense is intended to guarantee your freedom to share and change free
Xsoftware--to make sure the software is free for all its users. This
XGeneral Public License applies to most of the Free Software
XFoundation's software and to any other program whose authors commit to
Xusing it. (Some other Free Software Foundation software is covered by
Xthe GNU Library General Public License instead.) You can apply it to
Xyour programs, too.
X
X When we speak of free software, we are referring to freedom, not
Xprice. Our General Public Licenses are designed to make sure that you
Xhave the freedom to distribute copies of free software (and charge for
Xthis service if you wish), that you receive source code or can get it
Xif you want it, that you can change the software or use pieces of it in
Xnew free programs; and that you know you can do these things.
X
X To protect your rights, we need to make restrictions that forbid
Xanyone to deny you these rights or to ask you to surrender the rights.
XThese restrictions translate to certain responsibilities for you if you
Xdistribute copies of the software, or if you modify it.
X
X For example, if you distribute copies of such a program, whether
Xgratis or for a fee, you must give the recipients all the rights that
Xyou have. You must make sure that they, too, receive or can get the
Xsource code. And you must show them these terms so they know their
Xrights.
X
X We protect your rights with two steps: (1) copyright the software,
Xand (2) offer you this license which gives you legal permission to copy,
Xdistribute and/or modify the software.
X
X Also, for each author's protection and ours, we want to make certain
Xthat everyone understands that there is no warranty for this free
Xsoftware. If the software is modified by someone else and passed on, we
Xwant its recipients to know that what they have is not the original, so
Xthat any problems introduced by others will not reflect on the original
Xauthors' reputations.
X
X Finally, any free program is threatened constantly by software
Xpatents. We wish to avoid the danger that redistributors of a free
Xprogram will individually obtain patent licenses, in effect making the
Xprogram proprietary. To prevent this, we have made it clear that any
Xpatent must be licensed for everyone's free use or not licensed at all.
X
X The precise terms and conditions for copying, distribution and
Xmodification follow.
X
X TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
X
X 0. This License applies to any program or other work which contains a
X notice placed by the copyright holder saying it may be distributed
X under the terms of this General Public License. The "Program",
X below, refers to any such program or work, and a "work based on
X the Program" means either the Program or any derivative work under
X copyright law: that is to say, a work containing the Program or a
X portion of it, either verbatim or with modifications and/or
X translated into another language. (Hereinafter, translation is
X included without limitation in the term "modification".) Each
X licensee is addressed as "you".
X
X Activities other than copying, distribution and modification are
X not covered by this License; they are outside its scope. The act
X of running the Program is not restricted, and the output from the
X Program is covered only if its contents constitute a work based on
X the Program (independent of having been made by running the
X Program). Whether that is true depends on what the Program does.
X
X 1. You may copy and distribute verbatim copies of the Program's
X source code as you receive it, in any medium, provided that you
X conspicuously and appropriately publish on each copy an appropriate
X copyright notice and disclaimer of warranty; keep intact all the
X notices that refer to this License and to the absence of any
X warranty; and give any other recipients of the Program a copy of
X this License along with the Program.
X
X You may charge a fee for the physical act of transferring a copy,
X and you may at your option offer warranty protection in exchange
X for a fee.
X
X 2. You may modify your copy or copies of the Program or any portion
X of it, thus forming a work based on the Program, and copy and
X distribute such modifications or work under the terms of Section 1
X above, provided that you also meet all of these conditions:
X
X a. You must cause the modified files to carry prominent notices
X stating that you changed the files and the date of any change.
X
X b. You must cause any work that you distribute or publish, that
X in whole or in part contains or is derived from the Program
X or any part thereof, to be licensed as a whole at no charge
X to all third parties under the terms of this License.
X
X c. If the modified program normally reads commands interactively
X when run, you must cause it, when started running for such
X interactive use in the most ordinary way, to print or display
X an announcement including an appropriate copyright notice and
X a notice that there is no warranty (or else, saying that you
X provide a warranty) and that users may redistribute the
X program under these conditions, and telling the user how to
X view a copy of this License. (Exception: if the Program
X itself is interactive but does not normally print such an
X announcement, your work based on the Program is not required
X to print an announcement.)
X
X These requirements apply to the modified work as a whole. If
X identifiable sections of that work are not derived from the
X Program, and can be reasonably considered independent and separate
X works in themselves, then this License, and its terms, do not
X apply to those sections when you distribute them as separate
X works. But when you distribute the same sections as part of a
X whole which is a work based on the Program, the distribution of
X the whole must be on the terms of this License, whose permissions
X for other licensees extend to the entire whole, and thus to each
X and every part regardless of who wrote it.
X
X Thus, it is not the intent of this section to claim rights or
X contest your rights to work written entirely by you; rather, the
X intent is to exercise the right to control the distribution of
X derivative or collective works based on the Program.
X
X In addition, mere aggregation of another work not based on the
X Program with the Program (or with a work based on the Program) on
X a volume of a storage or distribution medium does not bring the
X other work under the scope of this License.
X
X 3. You may copy and distribute the Program (or a work based on it,
X under Section 2) in object code or executable form under the terms
X of Sections 1 and 2 above provided that you also do one of the
X following:
X
X a. Accompany it with the complete corresponding machine-readable
X source code, which must be distributed under the terms of
X Sections 1 and 2 above on a medium customarily used for
X software interchange; or,
X
X b. Accompany it with a written offer, valid for at least three
X years, to give any third party, for a charge no more than your
X cost of physically performing source distribution, a complete
X machine-readable copy of the corresponding source code, to be
X distributed under the terms of Sections 1 and 2 above on a
X medium customarily used for software interchange; or,
X
X c. Accompany it with the information you received as to the offer
X to distribute corresponding source code. (This alternative is
X allowed only for noncommercial distribution and only if you
X received the program in object code or executable form with
X such an offer, in accord with Subsection b above.)
X
X The source code for a work means the preferred form of the work for
X making modifications to it. For an executable work, complete
X source code means all the source code for all modules it contains,
X plus any associated interface definition files, plus the scripts
X used to control compilation and installation of the executable.
X However, as a special exception, the source code distributed need
X not include anything that is normally distributed (in either
X source or binary form) with the major components (compiler,
X kernel, and so on) of the operating system on which the executable
X runs, unless that component itself accompanies the executable.
X
X If distribution of executable or object code is made by offering
X access to copy from a designated place, then offering equivalent
X access to copy the source code from the same place counts as
X distribution of the source code, even though third parties are not
X compelled to copy the source along with the object code.
X
X 4. You may not copy, modify, sublicense, or distribute the Program
X except as expressly provided under this License. Any attempt
X otherwise to copy, modify, sublicense or distribute the Program is
X void, and will automatically terminate your rights under this
X License. However, parties who have received copies, or rights,
X from you under this License will not have their licenses
X terminated so long as such parties remain in full compliance.
X
X 5. You are not required to accept this License, since you have not
X signed it. However, nothing else grants you permission to modify
X or distribute the Program or its derivative works. These actions
X are prohibited by law if you do not accept this License.
X Therefore, by modifying or distributing the Program (or any work
X based on the Program), you indicate your acceptance of this
X License to do so, and all its terms and conditions for copying,
X distributing or modifying the Program or works based on it.
X
X 6. Each time you redistribute the Program (or any work based on the
X Program), the recipient automatically receives a license from the
X original licensor to copy, distribute or modify the Program
X subject to these terms and conditions. You may not impose any
X further restrictions on the recipients' exercise of the rights
X granted herein. You are not responsible for enforcing compliance
X by third parties to this License.
X
X 7. If, as a consequence of a court judgment or allegation of patent
X infringement or for any other reason (not limited to patent
X issues), conditions are imposed on you (whether by court order,
X agreement or otherwise) that contradict the conditions of this
X License, they do not excuse you from the conditions of this
X License. If you cannot distribute so as to satisfy simultaneously
X your obligations under this License and any other pertinent
X obligations, then as a consequence you may not distribute the
X Program at all. For example, if a patent license would not permit
X royalty-free redistribution of the Program by all those who
X receive copies directly or indirectly through you, then the only
X way you could satisfy both it and this License would be to refrain
X entirely from distribution of the Program.
X
X If any portion of this section is held invalid or unenforceable
X under any particular circumstance, the balance of the section is
X intended to apply and the section as a whole is intended to apply
X in other circumstances.
X
X It is not the purpose of this section to induce you to infringe any
X patents or other property right claims or to contest validity of
X any such claims; this section has the sole purpose of protecting
X the integrity of the free software distribution system, which is
X implemented by public license practices. Many people have made
X generous contributions to the wide range of software distributed
X through that system in reliance on consistent application of that
X system; it is up to the author/donor to decide if he or she is
X willing to distribute software through any other system and a
X licensee cannot impose that choice.
X
X This section is intended to make thoroughly clear what is believed
X to be a consequence of the rest of this License.
X
X 8. If the distribution and/or use of the Program is restricted in
X certain countries either by patents or by copyrighted interfaces,
X the original copyright holder who places the Program under this
X License may add an explicit geographical distribution limitation
X excluding those countries, so that distribution is permitted only
X in or among countries not thus excluded. In such case, this
X License incorporates the limitation as if written in the body of
X this License.
X
X 9. The Free Software Foundation may publish revised and/or new
X versions of the General Public License from time to time. Such
X new versions will be similar in spirit to the present version, but
X may differ in detail to address new problems or concerns.
X
X Each version is given a distinguishing version number. If the
X Program specifies a version number of this License which applies
X to it and "any later version", you have the option of following
X the terms and conditions either of that version or of any later
X version published by the Free Software Foundation. If the Program
X does not specify a version number of this License, you may choose
X any version ever published by the Free Software Foundation.
X
X 10. If you wish to incorporate parts of the Program into other free
X programs whose distribution conditions are different, write to the
X author to ask for permission. For software which is copyrighted
X by the Free Software Foundation, write to the Free Software
X Foundation; we sometimes make exceptions for this. Our decision
X will be guided by the two goals of preserving the free status of
X all derivatives of our free software and of promoting the sharing
X and reuse of software generally.
X
X NO WARRANTY
X
X 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
X WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
X LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
X HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
X WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
X NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
X FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
X QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
X PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
X SERVICING, REPAIR OR CORRECTION.
X
X 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
X WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
X MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
X LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
X INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
X INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
X DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
X OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
X OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
X ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
X
X END OF TERMS AND CONDITIONS
X
XHow to Apply These Terms to Your New Programs
X=============================================
X
X If you develop a new program, and you want it to be of the greatest
Xpossible use to the public, the best way to achieve this is to make it
Xfree software which everyone can redistribute and change under these
Xterms.
X
X To do so, attach the following notices to the program. It is safest
Xto attach them to the start of each source file to most effectively
Xconvey the exclusion of warranty; and each file should have at least
Xthe "copyright" line and a pointer to where the full notice is found.
X
X ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
X Copyright (C) 19YY NAME OF AUTHOR
X
X This program is free software; you can redistribute it and/or
X modify it under the terms of the GNU General Public License
X as published by the Free Software Foundation; either version 2
X of the License, or (at your option) any later version.
X
X This program is distributed in the hope that it will be useful,
X but WITHOUT ANY WARRANTY; without even the implied warranty of
X MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X GNU General Public License for more details.
X
X You should have received a copy of the GNU General Public License
X along with this program; if not, write to the Free Software
X Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X
X Also add information on how to contact you by electronic and paper
Xmail.
X
X If the program is interactive, make it output a short notice like
Xthis when it starts in an interactive mode:
X
X Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
X Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
X type `show w'. This is free software, and you are welcome
X to redistribute it under certain conditions; type `show c'
X for details.
X
X The hypothetical commands `show w' and `show c' should show the
Xappropriate parts of the General Public License. Of course, the
Xcommands you use may be called something other than `show w' and `show
Xc'; they could even be mouse-clicks or menu items--whatever suits your
Xprogram.
X
X You should also get your employer (if you work as a programmer) or
Xyour school, if any, to sign a "copyright disclaimer" for the program,
Xif necessary. Here is a sample; alter the names:
X
X Yoyodyne, Inc., hereby disclaims all copyright
X interest in the program `Gnomovision'
X (which makes passes at compilers) written
X by James Hacker.
X
X SIGNATURE OF TY COON, 1 April 1989
X Ty Coon, President of Vice
X
X This General Public License does not permit incorporating your
Xprogram into proprietary programs. If your program is a subroutine
Xlibrary, you may consider it more useful to permit linking proprietary
Xapplications with the library. If this is what you want to do, use the
XGNU Library General Public License instead of this License.
X
X
END_OF_FILE
if test 19078 -ne `wc -c <'COPYING'`; then
echo shar: \"'COPYING'\" unpacked with wrong size!
fi
# end of 'COPYING'
fi
if test -f 'geek_code' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'geek_code'\"
else
echo shar: Extracting \"'geek_code'\" \(17006 characters\)
sed "s/^X//" >'geek_code' <<'END_OF_FILE'
XSuggestions welcome.
X
XSend them to:
XRobert A. Hayden: <hay...@krypton.mankato.msus.edu>
XGAT d- -p+(---) c++(++++) l++ u++ e+/* m++(*)@ s-/++ n-(---) h+(*) f+ g+
X w++ t++ r++ y+(*)
X
X------------------ The Code of the Geeks v1.0.1 --------------------------
X---------------------- July 17, 1993 ------------------------------
X
XSo you think you are a geek, eh? The first step is to admit to yourself
Xyour geekiness. No matter what anyone says, geeks are people too; geeks
Xhave rights. So take a deep breath and announce to the world that you are a
Xgeek. Your courage will give you strength that will last you forever.
X
XHow to tell the world you are a geek, you ask? Use the universal Geek code.
XBy joining the geek organization, you have license to use this special code
Xthat will allow you to let other un-closeted geeks know who you are in a
Xsimple, codified statement.
X
XThe single best way to announce your geekhood is to add your geek code to
Xsignature file and announce it far and wide. But be careful, you may give
Xother geeks the courage to come out of the closet. You might want to hang
Xon to your copy of the code in order to help them along.
X
X---------------------
XINSTRUCTIONS:
X
XThe geek code consists of several categories. Each category is labeled with
Xa letter and some qualifiers. Go through each category and determine which
Xset of qualifiers best describes you in that category. By stringing all of
Xthese 'codes' together, you are able to construct your overall geek code.
XIt is this single line of code that will inform other geeks the world over
Xof what a great geek you actually are.
X
XSome of the qualifiers will very probably not match with you exactly.
XSimply choose that qualifier that MOST CLOSELY matches you. Also, some
Xactivities described in a specific qualifier you may not engage in, while you
Xdo engage in others. Each description of each qualifier describes the wide
Xrange of activities that apply, so as long as you match with one, you can
Xprobably use that qualifier.
X
X----------------------
X
XVARIABLES:
XGeeks can seldom be quantified. To facilitate the fact that within any
Xone category the geek may not be able determine a specific category,
Xvariables have been designed to allow this range to be included.
X
X @ for variable, said trait is not very rigid, may change with
X time or with individual interaction. For example, Geeks
X who happen to very much enjoy Star Trek: The Next Generation,
X but dislike the old 60's series might list themselves as
X t++@.
X () for indicating "cross-overs" or ranges. Geeks who go from
X c+ to c--- depending on the situation (i.e. mostly "c+") could
X use c+(---). Another example might be an m++(*). This
X would be a person who mostly listens to classical music, but
X also has an extensive collection of other types of works.
X
X @ is different from () in that () has finite limits within the
X category, while @ ranges all over.
X
X-----------------------
X
XType:
XGeeks come in many flavors. The flavors relate to the vocation of the
Xparticular geek. To start a code, a geek must declare himself or herself to
Xbe a geek. To do this, we start the code with a "G" to denote "GEEK",
Xfollowed by one or two letters to denote the geeks occupation or field of
Xstudy. Multi-talented geeks with more than one vocation should denote their
Xmyriad of talents with a slash between each vocation (example: GCS/MU/T).
X
X GB -- Geek of Business
X GCS -- Geek of Computer Science
X GE -- Geek of Engineering
X GM -- Geek of Math
X GMU -- Geek of Music
X GS -- Geek of Science (Physics, Chemistry, Biology, etc.)
X GSS -- Geek of Social Science (Psychology, Sociology, etc.)
X GT -- Geek of Theater
X
X GO -- Geek of Other. Some types of geeks deviate from the
X normal geek activities. This is encouraged as true geeks
X come from all walks of life.
X GU -- Geek of 'Undecided'. This is a popular vocation with
X new freshmen.
X
X GAT -- Geek of All Trades. For those geeks that can do
X anything and everything. GAT usually precludes the use
X of other vocational descriptors.
X
X----------------------
X
XDress:
XGeeks come in many different types of dress.
X
X d I dress a lot like those in Walmart ads
X d+ I tend to wear trendy political messages like "Save the
X Whales" or "Free South Africa".
X d++ I tend to wear conservative dress such as a business
X suit.
X d- I tend to wear trendy political messages like "Nuke the
X Humans", "Question Authority", or "Big Brother's Watching".
X d-- I wear jeans to work just to piss off my boss
X d--- At work, I have holes in my jeans and/or obscenities on
X my shirt.
X
X d? I have no idea what I am wearing right now, let alone
X what I wore yesterday.
X !d No clothing. Quite a fashion statement, don't you think?
X -d+ I wear the same clothes all the time, no matter the
X occasion, often forgetting to do laundry between wearings.
X
X---------------------
X
XPolitics:
XJust as the Geek's sense of fashion is varied, so is his/her political
Xconvictions.
X
X p Politics? I've heard of that somewhere but in all honesty
X I really don't give a shit.
X p+ Let's get the government off of big-business's back
X p++ All in favor of eliminating free speech, say aye!
X p+++ Fuckin' Minorities! Adolf Hitler is my hero!
X p- Bring back the 60's
X p-- I'm still living in the 60's
X p--- No taxes through no government
X
X -p+ Don't label me you moron! Both sides are equally fucked up!
X
X---------------------
X
XComputers:
XMost geeks identify themselves by their use of computers and computer
Xnetworks. In order to quantify your geekiness level on computers, consult
Xthe following (consider the term 'computers' synonymous with 'computer
Xnetwork'):
X
X c Computers are a tool, nothing more. I use it when it serves
X my purpose.
X c+ Computers are fun and I enjoy using them. I play a mean
X game of Wing Commander and can use a word processor without
X resorting to the manual too often. I know that a 3.5" disk
X is not a hard disk. I also know that when it says 'press any
X key to continue', I don't have to look for a key labeled 'ANY'.
X c++ Computers are a large part of my existence. When I get up
X in the morning, the first thing I do is log myself in. I mud
X on weekends, but still manage to stay off of academic
X probation.
X c+++ You mean there is life outside of Internet? You're shittin'
X me! I live for muds. I haven't dragged myself to class in
X weeks.
X c++++ I'll be first in line to get the new cybernetic interface
X installed into my skull.
X c- Anything more complicated than my calculator and I'm
X screwed.
X c-- Where's the on switch?
X c--- If you even mention computers, I will rip your head off!
X
X-------------------
X
XLinux:
XLinux is a hacker-written operating system virtually identical to unix. It
Xruns on your standard 386/486 PC computers and offers multitasking support
Xfar superior to DOS. Because it is still a young OS, and because it is
Xcontinually evolving from hacker changes and support, it is important that
Xthe geek list his Linux ability.
X
X l I know what Linux is, but that's about all
X l+ I've managed to get Linux installed and even used it a few
X times. It seems like it is just another OS.
X l++ I use Linux almost exclusively on my system. I monitor
X comp.os.linux and even answer questions some times. I've
X aliased Linux FTP sites to make getting new software easier.
X l+++ I am a Linux wizard. I munch C code for breakfast and have
X enough room left over for a kernel debugging. I have so
X many patches installed that I lost track about ten versions
X ago. Linux newbies consider me a net.god.
X l- I have no desire to use Linux and frankly don't give a rats
X ass about it.
X l-- Unix sucks. Because Linux = Unix. Linux Sucks. I worship
X Bill Gates.
X
X !l I don't even use an 80x86 chip, so linux isn't really a
X reality for me. (ie, Mac people).
X l? What the hell is Linux? I've never even heard of it.
X
X-------------------
X
XUnix:
XJust as geeks sometimes use Linux, a great many geeks also use generic Unix
Xmachines to accomplish their geeky ends.
X
X u I have a unix account to do my stuff in
X u+ I not only have a unix account, but I slam VMS any chance I
X get.
X u++ I've get the entire admin ticked off at me because I am
X always using all of the CPU time and trying to run programs
X that I don't have access to. I'm going to try cracking
X /etc/passwd next week, just don't tell anyone.
X u- I have a VMS account.
X u-- I've seen unix and didn't like it. DEC rules!
X u--- Unix geeks are actually nerds in disguise.
X
X--------------------
XEducation:
XAll geeks have a varying amount of education.
X
X e K-12, been on a college campus.
X e+ Started a B.S./B.A, plan to finish it some day.
X e++ Had not learned enough to know better not to go back and try
X for a master's degree.
X e+++ Still pretty stupid, over qualified to work any job, went and
X got my Ph.D.
X e- Got my bachelors, escaped alive, and am making hoards of money
X writing unmaintainable (except by me) software.
X e-- The company I work for was dumb enough to fund my way through
X a masters degree, then started paying me even more money.
X e--- Achieved a Ph.D, have devoted my life to insignificant research,
X which my employer pays dearly for.
X
X e* I learned everything there is to know about life from the
X "Hitchhiker's Trilogy".
X
X--------------------
XMusic:
XMusical interests vary widely, also.
X
X m I occasionally listen to the radio
X m+ I own a tape or CD collection (records also count, but you
X would be admitting how old you really are).
X m++ I consider myself refined and enjoy classical and new-age
X selections
X m+++ I consider myself over-refined and grok that heavy-duty
X elevator music.
X m- Just play it loud
X m-- I play air-guitar better than anyone else.
X m--- LISTEN! I SAID TO PLAY IT LOUD!
X
X m* I am an expert on so many types of music that I can't even
X keep them straight
X
X-------------------
X
XShape:
XGeeks come in many shapes and sizes. Shape code is divided into two parts.
XThe first indicates height, while the second indicates roundness. Mix each
Xsection to fit yourself. Examples include: s/++, s++/, s++/--.
X
X s I'm an average geek
X s+/+ I'm a little taller/rounder than most.
X s++/++ I'm a basketball/linebacker candidate.
X s+++/+++I usually have to duck through doors/I take up three movie
X seats.
X s-/- I look up to most people. Everyone tells me to gain a
X few pounds.
X s--/-- I look up to damn near everybody. I tend to have to fight
X against a strong breeze.
X s---/---I take a phone book with me when I go out so I can see to
X eat dinner. My bones are poking through my skin.
X
X--------------------
XNutrition:
XGeeks usually consume food. Some eat everything they can grab while some
Xothers are quite conscious of their food. (Note: 'n' is used for
Xnutrition as 'f' is used elsewhere.)
X
X !n Eh what? never mind the menu, give me something to eat!
X n+ I like food - especially when it is healthy.
X n++ I like the fibers in food
X n- Food? I just grab something from the shelves with meat in it.
X n-- I eat only the cheap things - even with artificial meat and
X vegetables.
X n--- I _live_ on snacks and coke.
X
X--------------------
XHousing:
X
X h Friends come over to visit every once in a while to talk
X about Geek things. There is a place for them to sit.
X h+ Living alone, get out once a week to buy food, no more than
X once a month to do laundry. All surfaces covered.
X h++ Living in a cave with 47 computers and an Internet feed,
X located near a Dominoes pizza. See !d.
X h- Living with one or more registered Geeks.
X h-- Living with one or more people who know nothing about being a
X Geek and refuse to watch 'Star Trek'.
X h--- Married, with the potential for children. (persons living
X with a fiance might as well label themselves h---, you're as
X good as there already.)
X
X h* I'm not sure where I live anymore. This lab/workplace seems
X like home to me.
X
X--------------------
XFriends:
X
XYes, it's true; geeks do have friends. At least, some of them do.
X
X f Yeah, I have friends. Who told you?
X f+ I have quite a few really close friends. We get along great.
X They are all other geeks, though.
X f++ I have so many friends, I make other people jealous.
X f- I have a few friends. They barely seem to speak to me anymore.
X f-- I've got about one friend left in the world, who probably
X wants to shoot me.
X
X f? I *think* I have friends.
X f* Everyone is my friend.
X !f I have no friends. Get lost.
X
X---------------------
XGlasses:
XGeeks have traditionally worn glasses.
X
X !g I have no glasses
X g+ I've got four eyes, what's your point?
X g++ I've got four eyes and tape in the middle
X g+++ I have coke-bottle classes that I can use to start leaves on
X fire in the hot sun.
X g- I have contacts
X g-- I have colored contacts
X g--- I have those funky contact that have interesting designs on
X them such as happy faces or some such.
X
X--------------------
X
XWeirdness:
XGeeks have a seemingly natural knack for being "weird". Of course, this is
Xa subjective term as one person's weirdness is another person's normalness.
XAs a general rule, the following weird qualifiers allow a geek to rate their
Xweirdness.
X
X w I am not weird. I'm perfectly normal.
X w+ so? what's your problem with weird.
X w++ I am so weird, I make Al Yankovic look sane.
X w+++ Mainstream? I heard of that once, I think.
X w- I'm more normal that most people normally are.
X w-- Isn't everyone in the p+ group?
X
X--------------------
X
XStar Trek:
XMost geeks have an undeniable love for the Star Trek television (in any of
Xits three forms). Because GEEK is often synonymous with TREKKIE, it is
Ximportant that all geeks list their Trek rating.
X
X t It's just another TV show
X t+ It's a damn fine TV show and is one of the only things
X good on television any more.
X t++ It's the best show around. I have all the episodes and the
X movies on tape and can quote entire scenes verbatim. I've
X built a few of the model kits too. But you'll never catch me
X at one of those conventions. Those people are kooks.
X t+++ It's not just a TV show, its a religion. I know all about
X warp field dynamics and the principles behind the
X transporter. I have memorized the TECH manual. I speak
X Klingon. I go to cons with Vulcan ears on. I have no life.
X t- Maybe it is just me, but I have no idea what the big deal
X with Star Trek is. Perhaps I'm missing something but I just
X think it is bad drama.
X t-- Star Trek is just another Space Opera. William Shatner isn't
X an actor, he's a poser! And what's with this Jean-Luc Picard?
X A Frenchman with a British accent? Come on. I'd only watch
X this show if my remote control broke.
X t--- Star Trek SUCKS! It is the worst crap I have ever seen!
X Hey, all you trekkies out there, GET A LIFE! (William
X Shatner is a t---)
X
X--------------------
X
XRole Playing:
XRole-playing games such as Dungeons & Dragons have long been a part of the
Xtraditional geek life. Because geeks often become so involved in their
Xrole-playing that they lose touch with reality, include one of the following
Xrole-playing codes.
X
X r Role-Playing? That's just something to do to kill a
X Saturday afternoon
X r+ I've got my weekly sessions set up and a character that I
X know better than I know myself.
X r++ There is no life outside the role of the die. I know all of
X piddly rules of (chosen game). _MY_ own warped rules scare
X the rest of the players.
X r+++ I worship E. Gary Gygax.
X r- Gosh, what an utter waste of time!
X r-- Role-Players worship SATAN!
X
X--------------------
X
XSex:
XGeeks have traditionally had problems with sex (ie, they never have any).
XBecause geeks are so wrapped up in their sexuality (or lack of sexuality for
Xthat matter), it is important that the geek be willing to quantify their
Xsexual experiences.
X
XThis code also is used to denote the gender of the geek. Females use 'x' in
Xthis category, while males use 'y'. For example:
X x+ A female who has had sex
X y+ A male who has had sex.
X
XFor those person who do not wish to give out any details of their sex life,
Xthe use of x? (where x is the gender code) will allow you to so.
X
X !x Sex? What's that? I've had no sexual experiences.
X x+ I've had real, live sex.
X x++ I was once referred to as 'easy'. I have no idea where that
X might have come from though.
X x- I prefer computer sex to real sex.
X x-- I was once referred to as a 'cyberslut', but I have no idea
X where that might have come from.
X
X x* I'm a pervert.
X x** I've been known to make perverts look like angels.
X
X x? It's none of your business what my sex life is like (this
X is used to denote your gender only).
X
X* * * * * * * * *
X
XThe Geek Code is copyright 1993 by Robert A. Hayden. All rights reserved.
XYou are free to distribute this code in electronic format provided that the
Xcontents are unchanged and this copyright notice remains attached.
END_OF_FILE
if test 17006 -ne `wc -c <'geek_code'`; then
echo shar: \"'geek_code'\" unpacked with wrong size!
fi
# end of 'geek_code'
fi
if test -f 'ungeek' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'ungeek'\"
else
echo shar: Extracting \"'ungeek'\" \(31743 characters\)
sed "s/^X//" >'ungeek' <<'END_OF_FILE'
X#!/usr/local/bin/perl
X#
X# ungeek -- a perl script for parsing the code of the geeks.
X#
X# Copyright (c) 1994 by Robert L. McMillin.
X#
X# Send comments, corrections, and bugs to <r...@helen.surfcty.com> or
X# <r...@netcom.com>.
X#
X# This is version 1 of ungeek for v1.0.1 of the Geek code.
X#
X#
X# Abstract:
X#
X# This script parses and dumps to standard out Robert A. Hayden's geek code
X# that has become remarkably widespread on the Internet. I don't attempt
X# to explain here what it looks like; finger hay...@vax1.mankato.msus.edu
X# for a current copy of the code of the geeks. You should have received
X# a copy of the Geek code with this perl script distribution.
X#
X#
X# Invocation:
X#
X# ungeek [file1] [file2] ...
X# ungeek <file
X#
X# ungeek can be used either as a filter, or with filenames as arguments.
X#
X#
X# Strategy:
X#
X# ungeek attempts to grab lines that look like they might contain geek
X# codes. It then parses them one by one after splitting on whitespace. Each
X# code is then parsed in a two step process: first, identify which variable
X# this is; and then parse the modifiers, checking first to see whether there
X# are any entries containing parens, sending any such off to be parsed
X# separately; likewise with '/' separated modifiers.
X#
X# This strategy means that a number of subroutines here probably don't
X# really need to be here; but should the structure of the geek code change
X# to include more oddments like !s (whatever that might mean) in the future,
X# it will be substantially easier to modify.
X#
X# In order to keep noise to tolerable levels, I have set two geek codes
X# per line as the minimum this script will insist on before it attempts to
X# parse the codes contained therein.
X#
X# Except for "Type" and "Shape" categories, '/' separated modifiers are
X# treated as "and" operators.
X#
X#
X# Bugs/To do:
X#
X# The subroutine valid_code shouldn't be necessary. It should be possible
X# to figure out whether a given code is valid based on a simple (but lengthy)
X# regexp test. I couldn't make it work correctly, though. This may be a
X# bug in the version of perl I'm using, or it may be a bug in the programmer
X# (probably the latter is more likely).
X#
X# There ought to be a way to parse mailer headers and intelligently figure
X# out who the geek code belongs to, and write that, too.
X#
X# Some of strength routines for the geek codes have additional modifiers
X# for strengths that are undefined according to v1.0.1 of the Code. These
X# should be extended to all geek categories or removed, depending on your
X# tastes.
X#
X#
X#
X# Copyright notice:
X#
X# The Geek Code is copyright 1993 by Robert A. Hayden. All rights reserved.
X# You are free to distribute this code in electronic format provided that the
X# contents are unchanged and this copyright notice remains attached.
X#
X# This perl script is copyright 1994 by Robert L. McMillin. It is distributed
X# under the GNU Public License. Please see the GPL for terms and conditions,
X# distributed in the file COPYING, which should come with this script.
X#
X
Xsub computer_strength
X{
X $_=$_[0];
X if($_ eq "no modifier")
X {
X print "
X Computers are a tool, nothing more. I use it when it serves
X my purpose.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X Computers are fun and I enjoy using them. I play a mean
X game of Wing Commander and can use a word processor without
X resorting to the manual too often. I know that a 3.5\" disk
X is not a hard disk. I also know that when it says 'press any
X key to continue', I don't have to look for a key labeled 'ANY'.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X Computers are a large part of my existence. When I get up
X in the morning, the first thing I do is log myself in. I mud
X on weekends, but still manage to stay off of academic
X probation.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X You mean there is life outside of Internet? You're shittin'
X me! I live for muds. I haven't dragged myself to class in
X weeks.\n";
X }
X elsif ($_ eq "++++")
X {
X print "
X I'll be first in line to get the new cybernetic interface
X installed into my skull.\n";
X }
X elsif (/\++/o)
X {
X print "
X English? What's that? If you want me to understand you, please
X use a language I can understand, like C.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Anything more complicated than my calculator and I'm
X screwed.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X Where's the on switch?\n";
X }
X elsif ($_ eq "---")
X {
X print "
X If you even mention computers, I will rip your head off!\n";
X }
X elsif (/c-+/o)
X {
X print "
X Just call me a technophobe, okay?\n";
X }
X else
X {
X print "
X I'm confused!\n";
X }
X}
X
Xsub dress_strength
X{
X $_=$_[0];
X if($_ eq "")
X {
X print "
X I dress a lot like those in WalMart ads.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I tend to wear trendy political messages like \"Save the
X Whales\" or \"Free South Africa\".\n";
X }
X elsif ($_ eq "++")
X {
X printf ("
X I tend to wear conservative dress such as a business
X suit.\n");
X }
X elsif (/\++/)
X {
X print "
X I dress so conservatively, when I walk into a bank the branch
X manager thinks I'm the new owner.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I tend to wear trendy political messages like \"Nuke the
X Humans\", \"Question Authority\", or \"Big Brother's Watching\".\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I wear jeans to work just to piss off my boss.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X At work, I have holes in my jeans and/or obscenities on
X my shirt.\n";
X }
X elsif (/-+/o)
X {
X print "
X People think I'm homeless; my clothes are torn, and I can't remember.
X the last time I washed them. Fortunately, all the management here
X smokes, and they can't find what they can't smell.\n";
X }
X elsif ($_ eq "d?")
X {
X print "
X I have no idea what I am wearing right now, let alone
X what I wore yesterday.\n";
X }
X elsif ($_ eq "!d")
X {
X print "
X No clothing. Quite a fashion statement, don't you think?\n";
X }
X elsif ($_ eq "-d+")
X {
X print "
X I wear the same clothes all the time, no matter the
X occasion, often forgetting to do laundry between wearings.\n";
X }
X else
X {
X print "
X I'm confused!\n";
X }
X}
X
Xsub dress_parse
X{
X $_ = $_[0];
X if (/-d\+/o) { &dress_strength("-d+");}
X elsif (/!d/o) { &dress_strength("!d");}
X elsif (/d\?/o) { &dress_strength("d?");}
X elsif (/d(\++|-+|)/o) { &dress_strength($1);}
X else { &dress_strength("huh?");}
X}
X
Xsub education_strength
X{
X $_=$_[0];
X if($_ eq "")
X {
X print "
X K-12, been on a college campus.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X Started a B.S./B.A, plan to finish it some day.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X Had not learned enough to know better not to go back and try
X for a master's degree.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X Still pretty stupid, over qualified to work any job, went and
X got my Ph.D.\n";
X }
X elsif (/\++/)
X {
X print "
X I'm a sucker for punishment -- I'm doing postdoctoral work!\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Got my bachelors, escaped alive, and am making hoards of money
X writing unmaintainable (except by me) software.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X The company I work for was dumb enough to fund my way through
X a masters degree, then started paying me even more money.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X Achieved a Ph.D, have devoted my life to insignificant research,
X which my employer pays dearly for.\n";
X }
X elsif ($_ eq "*")
X {
X print "
X I learned everything there is to know about life from the
X \"Hitchhiker's Trilogy\".\n";
X }
X else
X {
X print "\tI'm hopelessly confused by this!\n";
X }
X}
X
Xsub education_parse
X{
X $_ = $_[0];
X if (/e(\++|-+|)/o) { &education_strength($1);}
X else { &education_strength("huh?");}
X}
X
Xsub friends_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X Yeah, I have friends. Who told you?\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I have quite a few really close friends. We get along great.
X They are all other geeks, though.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I have so many friends, I make other people jealous.\n";
X }
X elsif (/\++/)
X {
X print "
X I attract so many friends, some people say I should be in politics.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I have a few friends. They barely seem to speak to me anymore.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I've got about one friend left in the world, who probably
X wants to shoot me.\n";
X }
X elsif (/-+/)
X {
X print "
X I have a price on my head.\n";
X }
X elsif ($_ eq "f?")
X {
X print "
X I *think* I have friends.\n";
X }
X elsif ($_ eq "f*")
X {
X print "
X Everyone is my friend.\n";
X }
X elsif ($_ eq "!f")
X {
X print "
X I have no friends. Get lost.\n";
X }
X else
X {
X print "\tI'm confused!\n";
X }
X}
X
Xsub friends_parse
X{
X $_ = $_[0];
X if (/!f/o) { &friends_strength("!f");}
X elsif (/f\?/o) { &friends_strength("f?");}
X elsif (/f(\++|-+|\*|)/o) { &friends_strength($1);}
X else { &friends_strength("huh?");}
X}
X
Xsub glasses_strength
X{
X $_ = $_[0];
X if ($_ eq "!g")
X {
X print "
X I have no glasses.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I've got four eyes, what's your point?\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I've got four eyes and tape in the middle.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I have coke-bottle classes that I can use to start leaves on
X fire in the hot sun.\n";
X }
X elsif (/\++/)
X {
X print "
X I'm legally blind.";
X }
X elsif ($_ eq "-")
X {
X print "
X I have contacts.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I have colored contacts.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X I have those funky contact that have interesting designs on
X them such as happy faces or some such.\n";
X }
X else
X {
X print "
X Help! I'm confused!\n";
X }
X}
X
Xsub glasses_parse
X{
X $_ = $_[0];
X if (/!g/o) { &glasses_strength("!g");}
X elsif (/g(\++|-+|\*|)/o) { &glasses_strength($1);}
X else { &glasses_strength("");}
X}
X
Xsub housing_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X Friends come over to visit every once in a while to talk
X about Geek things. There is a place for them to sit.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X Living alone, get out once a week to buy food, no more than
X once a month to do laundry. All surfaces covered.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X Living in a cave with 47 computers and an Internet feed,
X located near a Dominoes pizza.\n";
X }
X elsif (/\++/)
X {
X print "
X Total Geek Living: I live in the shell of an old IBM mainframe
X that I've converted for shelter. I have 120 and 240 VAC wired in;
X I have a T3 link to Cerfnet. There's a great Chinese place that
X delivers next door. What more could you want?\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Living with one or more registered Geeks.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X Living with one or more people who know nothing about being a
X Geek and refuse to watch 'Star Trek'.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X Married, with the potential for children. (persons living
X with a fiance might as well label themselves h---, you're as
X good as there already.\n";
X }
X elsif (/-+/o)
X {
X print "
X Married with children, dogs, cats, etc.\n";
X }
X elsif ($_ eq "*")
X {
X print "
X I'm not sure where I live anymore. This lab/workplace seems
X like home to me.\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub housing_parse
X{
X $_ = $_[0];
X if (/h(-*|\+*|\*|)/) { &housing_strength($1); }
X else { &housing_strength("huh?"); }
X}
X
Xsub music_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X I occasionally listen to the radio.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I own a tape/record/CD collection.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I consider myself refined and enjoy classical and new-age
X selections.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I consider myself over-refined and grok that heavy-duty
X elevator music.\n";
X }
X elsif (/\++/)
X {
X print "
X Enya is cool.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Just play it loud.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I play air-guitar better than anyone else.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X LISTEN! I SAID TO PLAY IT LOUD!\n";
X }
X elsif (/-+/)
X {
X print "
X Huh? Whadjewsay? I gotta turn down the stereo!\n";
X }
X elsif ($_ eq "*")
X {
X print "
X I am an expert on so many types of music that I can't even
X keep them straight.\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub music_parse
X{
X $_ = $_[0];
X if (/m(\++|-+|\*|)/o) { &music_strength($1);}
X else { &music_strength("huh?");}
X}
X
Xsub nutrition_strength
X{
X $_ = $_[0];
X if ($_ eq "!n")
X {
X print "
X Eh what? never mind the menu, give me something to eat!\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I like food - especially when it is healthy.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I like the fibers in food.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Food? I just grab something from the shelves with meat in it.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I eat only the cheap things - even with artificial meat and
X vegetables.";
X }
X elsif ($_ eq "---")
X {
X print "
X I _live_ on snacks and coke.\n";
X }
X else
X {
X print "\n\tI'm confused! ($_)\n";
X }
X}
X
Xsub nutrition_parse
X{
X $_ = $_[0];
X if (/n(\++|-+|\*|)/o) { &nutrition_strength($1);}
X elsif (/!n/) { &nutrition_strength("!n");}
X else { &nutrition_strength("huh?");}
X}
X
Xsub politics_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X Politics? I've heard of that somewhere but in all honesty
X I really don't give a shit.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X Let's get the government off of big-business's back!\n";
X }
X elsif ($_ eq "++")
X {
X print "
X All in favor of eliminating free speech, say aye!\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X Fuckin' Minorities! Adolf Hitler is my hero!\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Bring back the 60's!\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I'm still living in the 60's.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X No taxes through no government.\n";
X }
X elsif ($_ eq "-p+")
X {
X print "
X Don't label me you moron! Both sides are equally fucked up!\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub politics_parse
X{
X $_ = $_[0];
X if (/-p\+/o) { &politics_strength("-p+");}
X elsif (/p(\++|-+|)/o) { &politics_strength($1);}
X else { &politics_strength("huh?");}
X}
X
Xsub role_playing_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X Role-Playing? That's just something to do to kill a
X Saturday afternoon.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I've got my weekly sessions set up and a character that I
X know better than I know myself.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X There is no life outside the role of the die. I know all of
X piddly rules of (chosen game). _MY_ own warped rules scare
X the rest of the players.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I worship E. Gary Gygax.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Gosh, what an utter waste of time!\n";
X }
X elsif ($_ eq "--")
X {
X print "
X Role-Players worship SATAN!\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub role_playing_parse
X{
X $_ = $_[0];
X if (/r(\++|-+|)/o) { &role_playing_strength($1);}
X else { &role_playing_strength("huh?");}
X}
X
Xsub height_strength
X{
X $_ = $_[0];
X if ($_ eq "+")
X {
X print "
X I'm a little taller than most.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I'm a basketball candidate.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I usually have to duck through doors.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I look up to most people.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I look up to damn near everybody.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X I take a phone book with me when I go out so I can see to eat
X dinner.\n";
X }
X else
X {
X print "
X I'm confused!\n";
X }
X}
X
Xsub width_strength
X{
X $_ = $_[0];
X if ($_ eq "+")
X {
X print "
X I'm a little rounder than most.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I'm a linebacker candidate.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I take up three movie seats.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Everyone tells me to gain a few pounds.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I tend to have to fight against a strong breeze.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X My bones are poking through my skin.\n";
X }
X else
X {
X print "
X I'm confused!\n";
X }
X}
X
Xsub shape_parse
X{
X $_ = $_[0];
X s/s//;
X if ($_ eq "")
X {
X print "
X I'm an average geek.\n";
X }
X else
X {
X @s=split(/\//o);
X &height_strength($s[0]);
X &width_strength($s[1]);
X }
X}
X
Xsub star_trek_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X It's just another TV show.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X It's a damn fine TV show and is one of the only things
X good on television any more.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X It's the best show around. I have all the episodes and the
X movies on tape and can quote entire scenes verbatim. I've
X built a few of the model kits too. But you'll never catch me
X at one of those conventions. Those people are kooks.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X It's not just a TV show, its a religion. I know all about
X warp field dynamics and the principles behind the
X transporter. I have memorized the TECH manual. I speak
X Klingon. I go to cons with Vulcan ears on. I have no life.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X Maybe it is just me, but I have no idea what the big deal
X with Star Trek is. Perhaps I'm missing something but I just
X think it is bad drama.";
X }
X elsif ($_ eq "--")
X {
X print "
X Star Trek is just another Space Opera. William Shatner isn't
X an actor, he's a poser! And what's with this Jean-Luc Picard?
X A Frenchman with a British accent? Come on. I'd only watch
X this show if my remote control broke.\n";
X }
X elsif ($_ eq "---")
X {
X print "
X Star Trek SUCKS! It is the worst crap I have ever seen!
X Hey, all you trekkies out there, GET A LIFE! (William
X Shatner is a t---)\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub star_trek_parse
X{
X $_ = $_[0];
X if (/t(\++|-+|)/o) { &star_trek_strength($1);}
X else { &star_trek_strength("huh?");}
X}
X
Xsub unix_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X I have a unix account to do my stuff in.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I not only have a unix account, but I slam VMS any chance I
X get.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I have the entire admin staff ticked off at me because I am
X always using all of the CPU time and trying to run programs
X that I don't have access to. I'm going to try cracking
X /etc/passwd next week, just don't tell anyone.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I have a VMS account.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I've seen Unix and didn't like it. DEC rules!\n";
X }
X elsif ($_ eq "---")
X {
X print "
X Unix geeks are actually nerds in disguise.\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub unix_parse
X{
X $_ = $_[0];
X if (/u(\++|-+|)/o) { &unix_strength($1);}
X else { &unix_strength("huh?");}
X}
X
Xsub linux_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X I know what Linux is, but that's about all.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I've managed to get Linux installed and even used it a few
X times. It seems like it is just another OS.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I use Linux almost exclusively on my system. I monitor
X comp.os.linux and even answer questions some times. I've
X aliased Linux FTP sites to make getting new software easier.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X I am a Linux wizard. I munch C code for breakfast and have
X enough room left over for a kernel debugging. I have so
X many patches installed that I lost track about ten versions
X ago. Linux newbies consider me a net.god.\n";
X }
X elsif (/\++/)
X {
X print "
X Hi, my name is Linus Torvalds...\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I have no desire to use Linux and frankly don't give a rat's
X ass about it.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X Unix sucks. Because Linux = Unix. Linux Sucks. I worship
X Bill Gates.\n";
X }
X elsif ($_ eq "!l")
X {
X print "
X I don't even use an 80x86 chip, so linux isn't really a
X reality for me. (Kluged Intel archetectures suck.)\n";
X }
X elsif ($_ eq "l?")
X {
X print "
X What the hell is Linux? I've never even heard of it.\n";
X }
X else
X {
X print "\n\tI'm very confused!\n";
X }
X}
X
Xsub linux_parse
X{
X $_ = $_[0];
X if (/!l/o) { &linux_strength("!l");}
X elsif (/l\?/o) { &linux_strength("l?");}
X elsif (/l(\++|-+|)/o) { &linux_strength($1);}
X else { &linux_strength("huh?");}
X}
X
Xsub wierdness_strength
X{
X $_ = $_[0];
X if ($_ eq "")
X {
X print "
X I am not weird. I'm perfectly normal.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X So? What's your problem with weird?\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I am so weird, I make Al Yankovic look sane.\n";
X }
X elsif ($_ eq "+++")
X {
X print "
X Mainstream? I heard of that once, I think.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I'm more normal that most people normally are.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X Isn't everyone in the p+ group?\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub wierdness_parse
X{
X $_ = $_[0];
X if (/w(\++|-+|)/o) { &wierdness_strength($1);}
X else { &wierdness_strength("huh?");}
X}
X
Xsub sex_strength
X{
X $_ = $_[0];
X if ($_ eq "!x")
X {
X print "
X Sex? What's that? I've had no sexual experiences.\n";
X }
X elsif ($_ eq "+")
X {
X print "
X I've had real, live sex.\n";
X }
X elsif ($_ eq "++")
X {
X print "
X I was once referred to as 'easy'. I have no idea where that
X might have come from though.\n";
X }
X elsif ($_ eq "-")
X {
X print "
X I prefer computer sex to real sex.\n";
X }
X elsif ($_ eq "--")
X {
X print "
X I was once referred to as a 'cyberslut', but I have no idea
X where that might have come from.\n";
X }
X elsif ($_ eq "*")
X {
X print "
X I'm a pervert.\n";
X }
X elsif ($_ eq "**")
X {
X print "
X I've been known to make perverts look like angels.\n";
X }
X elsif ($_ eq "x?")
X {
X print "
X It's none of your business what my sex life is like!\n";
X }
X else
X {
X print "\n\tI'm confused!\n";
X }
X}
X
Xsub sex_parse
X{
X $_ = $_[0];
X if (/[xy](\++|-+|\*+|)/o) { &sex_strength($1);}
X elsif (/![xy]/) { &sex_strength("!x");}
X elsif (/[xy]?/) { &sex_strength("x?");}
X else { &sex_strength("huh?");}
X}
X
Xsub valid_code
X{
X #
X # Try to ensure that this code is valid. For whatever reason, long
X # regexps don't work correctly in this version of perl; we chop
X # them up here and do the best whas we can.
X #
X local($c) = 0;
X local($saved) = $_;
X $_ = $_[0];
X if ($_ ne "")
X {
X #
X # Eat left hand forms; not bulletproof, but close enough for
X # government work.
X #
X s/^![a-z]//;
X s/^[a-z]\?//;
X s/^-[a-z]\+//;
X s/^[a-z][+\-*]*//;
X if ($_ eq "")
X {
X #
X # no leftovers; mark this as good
X #
X $c = 1;
X }
X else
X {
X #
X # still have leftovers, so try to eat right hand forms
X #
X s/^(\/[-*+]+)+//;
X s/^\([-*+]+\)//;
X s/^@//;
X #
X # anything left over means invalid form
X #
X if ($_ eq "")
X {
X $c = 1;
X }
X }
X }
X
X $_ = $saved;
X return $c;
X}
X
Xsub parse_code
X{
X $_=$_[0];
X if (&valid_code($_))
X {
X# print "after regexp, \$_ = '$_'\n";
X $original_code=$_;
X if (/c/o)
X {
X print "Computers: $_\n";
X if (/c(\++|-+)\((\++|-+)\)/o)
X {
X print "\tI range from...\n";
X &computer_strength($1);
X print "\n\t... to ...\n";
X &computer_strength($2);
X }
X elsif (/c(\++|-+|)/)
X {
X &computer_strength($1);
X }
X }
X elsif (/d/o)
X {
X print "Dress: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &dress_parse($_);
X print ("\n\t... to ...\n");
X &dress_strength($1);
X }
X else
X {
X &dress_parse($_);
X }
X }
X elsif (/e/o)
X {
X print "Education: $_\n";
X if (/e(.*)\((.*)\)/o)
X {
X print "\tI range from...\n";
X &education_strength($1);
X print ("\n\t... to ...\n");
X &education_strength($2);
X }
X else
X {
X @e = split(/\//o);
X $first=shift(@e);
X &education_parse($first);
X foreach (@e)
X {
X &education_strength($_);
X }
X }
X }
X elsif (/f/o)
X {
X print "Friends: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &friends_parse($_);
X print ("\n\t... to ...\n");
X &friends_strength($1);
X }
X else
X {
X #
X # Parse the first code, split the rest by slashes,
X # and dump strengths. We should do all of them this way.
X #
X @f=split(/\//o);
X $first=shift(@f);
X &friends_parse($first);
X foreach (@f)
X {
X &friends_strength($_);
X }
X }
X }
X elsif (/g/o)
X {
X print "Glasses: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &glasses_parse($_);
X print ("\n\t... to ...\n");
X &glasses_strength($1);
X }
X else
X {
X @g=split(/\//o);
X $first=shift(@g);
X &glasses_parse($first);
X foreach (@g)
X {
X &glasses_strength($_);
X }
X }
X }
X elsif (/h/o)
X {
X print "Housing: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &housing_parse($_);
X print ("\n\t... to ...\n");
X &housing_strength($1);
X }
X else
X {
X @h=split(/\//o);
X $first=shift(@h);
X &housing_parse($first);
X foreach (@h)
X {
X &housing_strength($_);
X }
X }
X }
X elsif (/l/o)
X {
X print "Linux: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &linux_parse($_);
X print ("\n\t... to ...\n");
X &linux_strength($1);
X }
X else
X {
X @l=split(/\//o);
X $first=shift(@l);
X &linux_parse($first);
X foreach (@l)
X {
X &linux_strength($_);
X }
X }
X }
X elsif (/m/o)
X {
X print "Music: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &music_parse($_);
X print ("\n\t... to ...\n");
X &music_strength($1);
X }
X else
X {
X @m=split(/\//o);
X $first=shift(@m);
X &music_parse($first);
X foreach (@m)
X {
X &music_strength($_);
X }
X }
X }
X elsif (/n/o)
X {
X print "Nutrition: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &nutrition_parse($_);
X print ("\n\t... to ...\n");
X &nutrition_strength($1);
X }
X else
X {
X @n=split(/\//o);
X $first=shift(@n);
X &nutrition_parse($first);
X foreach (@n)
X {
X &nutrition_strength($_);
X }
X }
X }
X elsif (/p/o)
X {
X print "Politics: $_\n";
X
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &politics_parse($_);
X print ("\n\t... to ...\n");
X &politics_strength($1);
X }
X else
X {
X @p=split(/\//o);
X $first=shift(@p);
X &politics_parse($first);
X foreach (@p)
X {
X &politics_strength($_);
X }
X }
X }
X elsif (/r/o)
X {
X print "Role Playing: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &role_playing_parse($_);
X print ("\n\t... to ...\n");
X &role_playing_strength($1);
X }
X else
X {
X @r=split(/\//o);
X $first=shift(@r);
X &role_playing_parse($first);
X foreach (@r)
X {
X &role_playing_strength($_);
X }
X }
X }
X elsif (/s/o)
X {
X #
X # The shape attribute is different from the rest in that the
X # parsing of the slash(/)-separated objects happens further
X # down the line, since the left side of the slash means something
X # different than the right side.
X #
X print "Shape: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &shape_parse($_);
X print ("\n\t... to ...\n");
X &shape_strength($1);
X }
X else
X {
X &shape_parse($_);
X }
X }
X elsif (/t/o)
X {
X print "Star Trek: $_\n";
X
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &star_trek_parse($_);
X print ("\n\t... to ...\n");
X &star_trek_strength($1);
X }
X else
X {
X @r=split(/\//o);
X $first=shift(@r);
X &star_trek_parse($first);
X foreach (@r)
X {
X &star_trek_strength($_);
X }
X }
X }
X elsif (/u/o)
X {
X print "Unix: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &unix_parse($_);
X print ("\n\t... to ...\n");
X &unix_strength($1);
X }
X else
X {
X @r=split(/\//o);
X $first=shift(@r);
X &unix_parse($first);
X foreach (@r)
X {
X &unix_strength($_);
X }
X }
X }
X elsif (/w/o)
X {
X print "Wierdness: $_\n";
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &wierdness_parse($_);
X print ("\n\t... to ...\n");
X &wierdness_strength($1);
X }
X else
X {
X @r=split(/\//o);
X $first=shift(@r);
X &wierdness_parse($first);
X foreach (@r)
X {
X &wierdness_strength($_);
X }
X }
X }
X elsif (/[xy]/o)
X {
X print "Sex ";
X if (/x/o)
X {
X print "(female): $_\n";
X }
X else
X {
X print "(male): $_\n";
X }
X if (/\((.*)\)/o)
X {
X print "\tI range from...\n";
X &sex_parse($_);
X print ("\n\t... to ...\n");
X &sex_strength($1);
X }
X else
X {
X @r=split(/\//o);
X $first=shift(@r);
X &sex_parse($first);
X foreach (@r)
X {
X &sex_strength($_);
X }
X }
X }
X else { print "Unknown geek code! ($_)\n";}
X
X if ($original_code =~ /@/o)
X {
X print "\n\tThis varies depending on other factors.\n";
X }
X print "\n";
X }
X}
X
Xsub parse_one_file
X{
X @lines=<STDIN>;
X
X foreach (@lines)
X {
X tr/A-Z/a-z/;
X #
X # By increasing the repetition factor at the end of this term, we
X # can make the scanner a *lot* less sensitive to garbage. On the
X # other hand, it also becomes less sensitive to real stuff.
X #
X if (/((![a-z])|([a-z]\?)|(-[a-z]\+)|([a-z][+\-*]+)((\([+\-*]+\))|(\/\++|-+|\*+)+)?@?\s){2,}/o)
X {
X #
X # The line meets our rough requirements. Isn't that a nasty
X # regexp?
X #
X #
X # Divide and conquer. Split the line by whitespace and parse
X # each element separately.
X #
X @codes=split;
X foreach (@codes)
X {
X if (/\b(g((cs)|(at)|b|e|m|(mu)|s|(ss)|t|o|u))\b/o)
X {
X $type=$1;
X print "I am a geek of ";
X s/^g//;
X @types=split(/\//);
X $first=1;
X foreach (@types)
X {
X if (!$first)
X {
X print " and of ";
X }
X if ($_ eq "at") { print "all trades" ;}
X elsif ($_ eq "b") { print "business"; }
X elsif ($_ eq "cs") { print "computer science"; }
X elsif ($_ eq "m") { print "math";}
X elsif ($_ eq "mu") { print "music";}
X elsif ($_ eq "s") { print "science";}
X elsif ($_ eq "ss") { print "social science";}
X elsif ($_ eq "t") { print "theater";}
X elsif ($_ eq "o") { print "other";}
X elsif ($_ eq "u") { print "undecided";}
X else { print "unknown";}
X $first = 0;
X }
X print ".\n\n";
X }
X else
X {
X #
X # Process each non-category code.
X #
X &parse_code($_);
X }
X }
X }
X }
X}
X
Xif ($#ARGV == -1)
X{
X &parse_one_file();
X}
Xelse
X{
X foreach (@ARGV)
X {
X open(STDIN,$_) || die ("unable to open '$f'\n");
X &parse_one_file();
X close(STDIN);
X }
X}
X
END_OF_FILE
if test 31743 -ne `wc -c <'ungeek'`; then
echo shar: \"'ungeek'\" unpacked with wrong size!
fi
chmod +x 'ungeek'
# end of 'ungeek'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have the archive.
rm -f ark[1-9]isdone
else
echo You still must unpack the following archives:
echo " " ${MISSING}
fi
exit 0
exit 0 # Just in case...