I have no desire to get into a personal argument, but I would like to point out that one contribution he has made for me that have not seen elsewhere is that he has chosen to use Emacs as a text-processing scripting environment in preference to Perl or Python or some other scripting languages. Without commenting on issues of style or idiom I found his write-ups of this experience using the text-editing primitives of Emacs to be useful and interesting.
OMG, he actually loads all the files to temporary buffers and calls it `grep`?
And the other text is misguided for the most part and reveals a misunderstanding of some basic concepts. tumba, please don't use these texts. I second lispm here. Only read these once you have a solid understanding of described concepts yourself.
The way to handle an unhelpful resource is to flag it. Even better would be to submit superior resources. The ad homenim is unproductive because it just makes people dumber and makes mean behavior look normal.
Xah Lee has trolled Lisp groups for years. It's well known that much of his 'advice' is useless. The number of bullshit posts by him is a bignum. His comp.lang.lisp trolling is legendary.
Nothing 'ad homenim' or mean - just saying how it is.
As an emacs beginner, I've landed on his site numerous times, often finding it helpful. The fact that he might or might not have trolled some mailing list is of no concern to me.
If you have a better alternative resource, please present it. If you can find technical faults in this resource, you should provide them so the author can correct it and other might learn of them as well.
Otherwise, stop trying to justify ad hominem with meaningless retorts.
This makes it easier to read all local variable names. Especially when readers are beginners, non-professional programers, scientists, writers.
If we always use this simple style of let, what possible problem can it create?
• Does it creates algorithmic problem?
• Does it slow down programs?
• Does it violate some computer science principles?
• Are there science based proof, or statistics, that shows this style does some damage, such as more difficult to maintain?
The only thing i can think of, is a matter of esthetics.
later on, sometimes i use this form
(let (x (y 3) (z 4)) body)
with the condition that, if i set the variable in the let parameter, it must be constant. The value never changes in the body. And now sometimes i also use the (let* ...) form.
These variations are just sugar syntax. Not really important. It's a bikeshedding problem.
The thing is, in emacs lisp, there's no way to declare constants. And also, it is unnatural to code elisp or even Common Lisp without lots of setq or setf or similar.
> If you can find technical faults in this resource, you should provide them so the author can correct
That's the problem, actually - I never saw Xah correct anything he thought "right", no matter how many people presented rational arguments. Granted, I don't follow his writings that much, so maybe it happens; however my general impression is that it's utterly impossible to convince Xah of anything.
On the other hand, his site does provide a certain amount of information. It just mixes good information with bad in a way which makes it very hard for beginners to tell one from the other.
> It's well known that much of his 'advice' is useless. The number of bullshit posts by him is a bignum.
I wanted to check this. How easy would it be to find something trolling-like, written by Xah? Turns out it took only 3 tries when searching for "Xah Lee" on googlegroups comp.lang.lisp. The third post I clicked revealed this gem:
there's a good solution to lisp's non-functional ways.
BAN lispers from using list or cons. Everything should be vector/array
instead.
everytime a cons is involved, lispers should get a electric shock.
that will immediately fix majority of lisp's non-functional programing
in practice.
though, i'll have to say, the more i read about Clojure, the better it
seems. It is very functional, the savior of the lisp name.
...I wasted a bit of time on this and I'm not sure it was worth it, but I'm pasting this here to strengthen lispm argument by replacing "it's well known" with a concrete example.
con shouldn't be used, especially today.
see this Guy Steele article:
Guy Steele on Parallel Programing: Get rid of cons!
http://xahlee.info/comp/Guy_Steele_parallel_computing.html
“Get rid of cons!” is the exact words from his paper.
Bullies always rationalize their bullying by arguing their victim deserved it. Their flunkies are recognized by their chorus of "Yeah he deserved it" noises.
When learning Emacs Xah Lee's works has been really helpful, and I'd like to thank him. If someone think Xah's wrong they have to produce better ressources.
what a malicious lie. I have written some 10 packages, at least hundred thousand lines of emacs lisp since 2005, all public in github or on my website.
http://ergoemacs.org/emacs/xah_emacs_modes.html
the only borrowed code i can think of now, now named xah-extend-selection in xah-fly-keys, by Nikolaj Schumacher, fully credited in the inline doc still. (and that function is also in ergoemacs-mode, fully credited still, now lead by Matt F.)
Any code, that possibly may be considered borrowed, i'm painstaking to give credit, often taking sometimes a hour to find the person's REAL NAME correctly (as opposed to nicknames) (if public), personal site url or blog url or social network url if any, to link to, painstakingly ask the which url he prefers, and often ask permission too when it is clearly not necessary. One can find lots of “i learned this from xyz” in my website.
I learned emacs lisp, starting in 2005, the first 5 years with much help from comp.emacs or gnu.emacs.help newsgroup, and freenode's irc emacs channel, and emacs wiki. This is also fully credited.
Xah's Emacs Tutorial: Acknowledgment
http://ergoemacs.org/emacs/thanks.html
linked at the bottom of my emacs tutorial.
I know lisp before. Read entire Scheme r4rs and 75% of SICP in 1998, 1999. These can be verified in newsgroup. I coded Wolfram Language for 6 years before 1999, and worked at Wolfram Research for half a year.
I have several eassys documentinging these facts. For example:
Xah Lee's Computing Experience (Impression Of Lisp from Mathematica)
http://xahlee.org/PageTwo_dir/Personal_dir/xah_comp_exp.html
personally, i generally don't borrow code, because i'm rather one of those weird or aloof guy with meticulous control of things, down to every character placement. In my elisp life since 2005 to today, i must have stolen ideas, concepts. I can't recall explicitly which at the moment, but i can say in good faith that any non-trivial concepts i've used in my project i've given acknowledgement.
Note: i've been considered a troll in comp.lang.lisp and other newsgroups from about 2000 to 2010. There were many heated arguments, and there are some who will say negative things about me wherever my name is mentioned. I do not think of myself as a troll, and have written many essays on this.
Netiquette Anthropology: a Tale of Tech Geekers
http://xahlee.info/Netiquette_dir/troll.html
PS unrelated but instead of a separate post: I want to thank many people who have helped a year ago. That was a big help. Thank you. I do dish-washing part-time, and am ok.
I am truly glad to hear that things have improved in the past year. Your site clearly demonstrates your integrity and good will. My deep thanks for your many contributions that make the internet better.
Don't pay too much attention to the haters. Your pages usually covers a topic in a much more self contained manner than the official manual, which I find hard to use in practice.
Your pages also always contain instructive examples, something which cannot be said for the manual itself.
There's a reason your pages always show up when people search for anything emacs. People in general find them helpful.
As someone who comes across his writings once in a while I wish you would counter his bad advice with your good advice, rather than simply write that its bad.
That's a fulltime job. comp.lang.lisp did that several years.
Just take from this discussion that his Lisp style is non-idiomatic and he writes in some primitive crappy imperative style. See my other example in this discussion.
There are much better resources to learn Emacs Lisp from.