Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Rootless Root - The Unix Koans of Master Foo (Eric S. Raymond) (catb.org)
100 points by mahipal on Sept 26, 2010 | hide | past | favorite | 43 comments


One of the absolute best techie koans I've come across is this "closures vs objects" one by Anton Van Straaten -

http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/m...

Reproduced below -

The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures."

Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.

On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened.


Unfortunately, that's too logical to be a real koan.


As somebody continually interested in new and successful user interface ideas, the GUI one has me tickled pink:

http://catb.org/esr/writings/unix-koans/gui-programmer.html

because it is true that point and click will always suffer from a loss of expressivity in the way that this story so perfectly captures.

In a way, though, the koan also illustrates the flip side: if the expressive solution to something is a new language, how do you empower somebody who doesn't know or can't learn the language? The same way a person who goes to a foreign land tries to communicate basic ideas--by sign language, or symbols, or pictures. Sure, sometimes you will be misinterpreted and get peed on. And you can only handle the basics, like asking for food or directions; discussing philosophy or politics is probably out of the question. But it's better than not being able to communicate at all, and for many problems, people are happy with buying the pictographic toolkit that lets them do their job.


It's funny, but nonsensical. A counter would be to tell a story about one student explaining every last detail of some device and the other student still not understanding, while the GUI student just shows a picture and everything is instantly clear.

IMO command line "interfaces" are only suitable to programs. A command line interface is basically a language for communicating with the program. I'd rather not spend the time learning a substantial amount of the language just to be able to use the program for common tasks.

An example of this is revision control systems. I always personally liked darcs but was limited to the command line interface. When I tried out GitX I made the switch instantly after being loyal to darcs for years. Sadly there are still things you have to use the command line for in GitX but there is no reason it has to stay that way.


Ah yes, the old "one true way" argument. It is sad to such great foolishness in someone who has used git and darcs.

Perhaps you should re-read the koan without the assumption that it is saying "GUI is bad". It is really about the "only one way and that way is GUI" attitude.


I think you're engaging in a logical fallacy. Using a "GUI" isn't "one true way" as there are a near infinite amount of ways to structure a GUI.

Command line tools often use graphics to display their results and GUI tools often show their results in textual form so the main difference between a command line interface and a GUI interface is how to provide input. With a GUI I have to click in the right place to make actions happen. This puts more onus on the developer to make sure everything is where it is expected. With a command line tool I have to read a document or help output about how to use it and memorize this information if I wish to be efficient.

I'm not saying there should be no command line. It's simply my view that the command line should be treated like XML: not for human consumption. I think this would also potentially make command line tools even better at providing an interface for scripting tools if this was the only expectation placed on them.


gitref.org makes it really easy to understand and use git, at least it did for me. No graphical tools required.


>gitref.org makes it really easy to understand and use git, at least it did for me.

I don't avoid the git command line as much as I can because I don't know it or am afraid to learn it. I have to use it since GitX can't do everything I need yet (and the picture seems even worse on windows). I use the GUI as much as I can because it's a much more efficient work flow. In a GUI like GitX it is much less effort to do patch commits because I can just view the changes and select the lines I want. It takes several different commands to accomplish this same functionality (a git status to see what's changed, git add -i on the file, e on the hunk I want, edit the hunk via vi, write the file).

>No graphical tools required.

Except there is. When you do "git -p file" (which I do a lot and would not have switched without this capability) you are put into a graphical editor to pick which parts of the hunk to commit.


"Except there is. When you do "git -p file" (which I do a lot and would not have switched without this capability) you are put into a graphical editor to pick which parts of the hunk to commit."

Not if $DISPLAY is cleared ;P


Ah, this one takes me back.

It's almost a pity no one else has mentioned the classic Tao of Programming by Geoffrey James:

http://www.canonical.org/~kragen/tao-of-programming.html

A bit dated now, and it looks like ESR has improved on the concept considerably, but this little classic will always be my favorite:

"Each language has its place within the Tao.

But do not program in Cobol if you can avoid it."


The problem with articles written by ESR is that the actual discussion gets drowned out by people complaining about the author. The signal to noise ratio goes way, way down.


Almost every piece of ESR's writing suffers due to his assertions of brilliance or being the unofficial representative of hackerdom. This is usually present in almost every sentence. If you're not an ESR fan it's excruciating.

It's a shame because he's a genuinely skilled writer, especially with parodic forms like this. Luckily there is no "Eric" character in these koans.


I don't know anyone who is esr persona's fan. There is a large community who are his hackerdom writings fans and there is a small community who are fans of his wingnut writings, but it seems to me he doesn't get a lot of friends IRL.


He does.

Some of them are hackers, but it seems a lot of them he meets through his other hobbies: wargaming, shooting, swordfighting, etc.

ESR is programming's William Shatner. His various doings get this big inflated ego ascribed to him, but in real life he's just this guy, you know?


No, he just writes blog posts with titles like "The First Time I Changed History".

http://esr.ibiblio.org/?p=2539

That said, in the latter half of this post he backpedals and gives the "hacker culture" credit for being able to recognize his contributions, but still -- the title of the article isn't "On the openness of the RFC process in the 80s".

I don't know what to think about ESR. I disagree strongly with his interpretation of what hacker culture is, and how free software works, and personally I think it has taken us a long time to undo some of the damage he did to the discourse in both those areas. But he also legitimately influenced a lot of things for the better. Oddly, he seems to be unsatisfied with that level of achievement, and wants to be recognized as being a great statesman or visionary. If he claimed less credit he'd probably get more credit.


I for one am super glad he "broke us out of the geek ghetto" ( http://esr.ibiblio.org/?p=209 )Do you all remember how terrible it was with the Gestapo beating down our doors? Oh wait. -_- ESR is just full of himself like many other public figures. That said, The Art of Unix Programming was actually a surprisingly good book. I think someone must have edited all the crazy out of it.


Raymond wrote a post about the koans and some of his other stuff Saturday, Mystical Poetry and Mental Postures - http://esr.ibiblio.org/?p=2596 ; that I linked on HN - http://news.ycombinator.com/item?id=1729978.


if you find the design of the site's annoying for reading, you may be willing to the readability version of it on a gingle pdf file

http://dl.dropbox.com/u/135679/output.pdf


This thread sort of shows exactly why ESR is where he is. Everybody seems to have a strongly held opinion of him, positive or otherwise.


As much as I love zen koans, especially hacker koans, it's worth remembering that ESR doesn't really code and I don't know if he merits the 'authority' that some people ascribe to him.


ESR might not be "hard core" enough for you, but he's been studying hackers for decades. He's an established authority on hackers and hacker culture.

I love zen koans, especially hacker koans,

This is a validation of his authority.


Making observations isn't a testament to authority nor skill.

Stop acting like he's some kind of sacred lamb and go look at the actual work he's produced other than being a 'personality'.

I thought Hackerne.ws would be more circumspect about this.


Man, don't be like that. I think ESR is a pompous ass, same as everyone. That doesn't mean he's useless. His maintenance of the Jargon File has been going pretty well, and while The Cathedral and the Bazaar had its weaknesses, it was the best introduction to the "Big Deal" about the open source movement the general public had at the time. Since co-founding OSI in 1998, Wikipedia says "He also took on the self-appointed role of ambassador of open source to the press, business and public," which I think he's been doing fairly well at since it's 100% 'personality'.

ESR claims that these koans appeal to hackers. You like them, and you're a hacker, so unless he got lucky, he has at least some small insight into what makes hackers tick.


His stewardship of the Jargon File has certainly not been going well - the terms he's added to the glossary have mostly been crap he's imported from his political circles, and his additions to the appendix have been even worse (eg. look at the Portrait of J Random Hacker and tell me it isn't ESR jerking off over himself). Perhaps my perspective is limited, but I've never spoken to someone familiar with the jargon file from before ESR took over its maintenance who felt his care had been anything but detrimental.


But that is work he's produced. I'm not sure whether he's a particularly good sociologist/chronicler of hacker culture or not, but that work should be judged on its own merits. Is it good sociology/history, or is it poorly done/inaccurate/done-better-elsewhere? I don't think looking at the quality of his C code is a particularly useful way of answering that question. I mean, some minimal technical knowledge is probably necessary to do a good job at it, but beyond that I'm not sure if there's good correlation between awesome-coder and great-chronicler.


I think what people are up in arms about, is that ESR calls himself a hacker—and most hackers, being programmers as well, think of hacking as referring to a particular kind of programming. These hackers, thus, form their meritocratic scale of "hackerlyness" around programming ability.

However, as ESR himself writes: http://catb.org/jargon/html/meaning-of-hack.html

> Hacking might be characterized as 'an appropriate application of ingenuity'. Whether the result is a quick-and-dirty patchwork job or a carefully crafted work of art, you have to admire the cleverness that went into it. An important secondary meaning of hack is 'a creative practical joke'. This kind of hack is easier to explain to non-hackers than the programming kind. Of course, some hacks have both natures.

If this is how ESR defines "hacking", then his claim to be a hacker is not, also, an implicit claim that he is a good programmer (that one must then refute.) He simply claims to "apply ingenuity" and "joke around"—which, it's pretty clear from the OP link, he does, in the medium of prose.


Funny, I've always thought that his definition of "hacking" that you've quoted was the same definition the HN community accepted.


> I think what people are up in arms about, is that ESR calls himself a hacker—and most hackers, being programmers as well, think of hacking as referring to a particular kind of programming.

Not a certain kind of programming. Just programming in general. I think in most people's minds, the concept "hacker" implicitly includes the concept "programmer."


What do you mean, he doesn't really code? He has certainly produced open source code in the past. You mean he's not primarily a programmer at the moment?


Eric can't code like Johnny can't read. He has produced minor, working code (e.g. popclient)or managed certain projects (e.g. ncurses), but he's not great, or even good at it.

The problem is that Eric stomps around claiming things that aren't his. He claims to be a "core Linux developer", when in reality, the only code he has is the kernel are the speaker driver (since pushed out) and some minor use of ncurses used for vt100 emulation in thr console driver.

Eric may be boastful and loud, but he can't code.


The last time he tried to contribute code was more than a little embarrassing.

He managed to be on the ground at the right time for the whole free software and hacker culture thing, but as far as actual coding goes, he's nothing special.


Why did you feel it neccesary to criticize his coding skills when we are discussing a semi-humorous piece of writing though? Does Reymond's skill or lack thereof these days effect whether the Unix Koans are worthwhile? If there's something wrong or inaccurate in them surely you could point that out rather than proceeding straight to criticizing their source.

I'm having trouble understanding your comments here as anything other than defensiveness or elitism.


Whether or not he is a good programmer or not is sort of irrelevant. I think he exaggerates his position as "spokesperson of hackers everywhere", and it is occasionally annoying (although more often I do enjoy his writing).


What connore said, that and hackerne.ws appears to be turning into a rather uncritical bunch of cheerleading, rather than any real sensible evaluation of what's in front of them.

This community is starting to feel more like slashdot and TechCrunch collaborated on a sister site than a bastion of valuable conversation.


For reference - the canonical URL is news.ycombinator.com


When was the last time he tried to contribute code and how was it embarrassing? Actually, you'll need more than one example. You may well be right, but until you provide evidence, your assertions are baseless ad-hominem and I think less of you, not him.


Oh you mean Wesnoth, GPSD, and INTERCAL?

Well, haters gotcha hate, especially when there is a guru.


Hey, come on... fetchmail deleted a lot of my mail back when I used POP3 over dialup. Without fetchmail, who would have been motivated enough to write offlineimap!?


Those who can, do. Those who can't, dress up in Jedi costumes and shout out malapropisms[1].

[1] http://catb.org/~esr/faqs/hacker-revenge.html


Frankly, I stayed up so late last night/this morning that I had nightmares when I did finally pass out because I was hacking on a compiler.

ESR can't sling enough code to contribute to a random OSS project without people getting exasperated, of late.

Don't spout platitudes at people you don't know.


I think aaron is in agreement with you :-)


I'm terrible at gauging that.


I am in complete agreement with you :)




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: