« What is your IQ? | Main | Famous last words »

October 27, 2005

Unix Expertise

People often ask why "guru" in my handle. Does it mean that I meditate up a high mountain? Well, I found the perfect explanation in a ranking system for Unix people. Some of the concepts are a bit dated but I can proudly claim to meet all the criteria for Guru - but not all the criteria for Wizard...

People who come into contact with the UNIX system are often told : "If you have trouble, see so-and-so, he's a guru", or "Bob there is a real Unix hacker". Often they are baffled by these appellations, and do not pursue the matter further. What is a "Unix Hacker ?". How does he differ from a "guru" ? To answer these and other questions, here is the UNIX HIERARCHY :
  • beginner

    • insecure with the concept of a terminal

    • has yet to learn the basics of vi

    • has not figured out how to get a directory

    • still has trouble with typing <RETURN> after each line of input

  • novice
    • knows that ls will produce a directory

    • use the editor, but calls it vye.

    • has heard of C but never used it

    • has had his first bad experience with rm

    • is wondering how to read his mail

    • is wondering why the person next to him seems to like Unix so very much

  • user
    • uses vi and nroff, but inexpertly

    • had heard of regular-expr's but never seen one

    • uses egrep to search for fixed strings

    • has figured out that '-' precedes options

    • is wondering how to move a directory

    • has attempted to write C program and has decided to stick with pascal

    • thinks that sdb is a brand of stereo component

    • knows how to read his mail and is wondering how to read the news

  • knowledgeable user
    • uses nroff with no trouble, and is beginning to learn tbl and eqn

    • thinks that fgrep is fast grep

    • has figured out that mv will move directories

    • has learned that learn doesn't help

    • somebody has shown him how to write C programs

    • once used sed to do some text substitution

    • has seen sdb used but does not use it himself

    • thinks that make is only for wimps

  • expert
    • uses sed when necessary

    • uses macro's in vi, uses ex when necessary

    • posts news at every possible opportunity

    • writes csh scripts occasionally

    • writes C programs using vi and compiles with cc

    • has figured out what && and || are for

    • thinks that human history started with !h

  • hacker
    • uses sed and awk with comfort

    • uses undocumented features of vi

    • writes C code with cat > and compiles with !cc

    • uses adb because he doesn't trust source debuggers

    • can answer questions about the user environment

    • writes his own 'nroff' macros to supplement standard ones

    • writes scripts for Bourne shell (/bin/sh)

  • guru
    • uses m4 and lex with comfort

    • writes assembly code with cat >

    • uses adb on the kernel while system is loaded

    • customizes utilities by patching the source

    • reads device driver source with his breakfast

    • can answer any Unix question after a little thought

    • uses make for anything that requires two or more distinct commands to archive

    • has learned how to breach security, but no longer needs to try

  • wizard
    • writes device drivers with cat >

    • fixes bugs by patching the binaries

    • can answer any question before ask

    • writes his own troff macro packages

    • is on first-name basis with Dennis, Bill and Ken

Posted by Ozguru at October 27, 2005 06:00 AM


Okay. I got everything except: What is UNIX?

(Don't try.)

Posted by: old horsetail snake at October 27, 2005 09:53 AM

Well, I'm ashamed to say that I am but an expert. I'm a little disappointed. I also am leaning toward knowledgable user, as I do not use vi macros. But maybe I'm a user, I have no experience with nroff.
I don't think I want to be able to patch live binaries. Really, in a dynamically linked world? Are there really sickos out there who want to do something like that? I guess it's not much worse than trying to do something less than obvious with sh.
Unix is a bottomless pit, a world of pain.
But it's still better than trying to do something useful in Visual C++ or VB on Windows.
Then there's Java. The authentication stuff is like slamming your hand in a door on purpose. Why do I have to know every detail of constructors just to get a keypress? AAGGH!
Apparently being able to write Perl that can mung a thousand IOS switches and make them dance your tune doesn't count for anything? Damn Unix snobs.
Where's my copy of 'The Unix Hater's Handbook'?

Posted by: linc at October 27, 2005 02:16 PM

I think I'd be a knowledgeable user... :)

Posted by: kazza at October 29, 2005 09:40 AM