Rootless Root - The Unix Koans of Master Foo (Eric S. Raymond)
catb.org
catb.org
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.
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.
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.
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.
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.
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.
Not if $DISPLAY is cleared ;P
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."
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.
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?
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.
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.
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.
Well, haters gotcha hate, especially when there is a guru.
I'm having trouble understanding your comments here as anything other than defensiveness or elitism.
This community is starting to feel more like slashdot and TechCrunch collaborated on a sister site than a bastion of valuable conversation.
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.
I love zen koans, especially hacker koans,
This is a validation of his authority.
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.
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.
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."
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.