One example would be rectangle select http://www.gnu.org/software/emacs/manual/html_node/emacs/Rec..., I absolutely love them - but till one of colleague introduced them to me, I had no idea they existed.
Emacs users are like Terry Pratchett’s Igors
31–40 of 85 posts
Re: Emacs users are like Terry Pratchett’s Igors
#32Hmm, I am probably missing something, but isn't Igor from Mary Shelley (Frankensteins assistant)?
Yes, you're missing something. You need to read some Terry Pratchett. There are several entry points to the canon, some better suited than others to different readers. The Igors first arrive in The Fifth Elephat, or possibly Thief Of Time. As an entry point (but without the Igors (yet)) I recommend "Guards! Guards!", YMMV.
Re: Emacs users are like Terry Pratchett’s Igors
#33In common understanding of emacs, its use of lisp recieves perhaps too much attention, while its overall wonderful architecture is underappreciated. Emacs isnt just an editor with embedded lisp, its more a vm for bootstrapping editors. You could do an emacs with python, but the hard part is providing an environment where the extensions dont interfere with the user input loop, with buffer redisplay etc., while still s…
"The emacs buffer-based async handling of external processes is a masterpiece of software engineering, much better than things like unix pipes." This sounds intriguing. Do you have a pointer to something I could read that might expand on what you're saying here? (Aside from the emacs source.) Amusing coincidence: the only Pratchet book I've read is The Fifth Elephant .
Re: Emacs users are like Terry Pratchett’s Igors
#34Earlier quoted context omitted.
> attracts the sort of users I don't want to associate with: people who are smug, self-absorbed and utterly without empathy. I think you have just described the normal IRC experience for any software project in existence. IRC just tend to breed cliques and inside jokes, and the most common form of reply I have ever gotten while looking for help is "check the source code". Never mind that its a few thousands line of l…
I think you are exxagerating, some places tend to become like that and some don't. I found the python, ruby and perl channels very nice when I was learning the languages a decade ago or so, and by my occasional lurking they still seem to be. Recently I was on #elm on freenode and it also was a nice place. Cliques and inside jokes obviously are part of what a community _is_ but that doesn't necessarily translate to sm…
I have used the python django IRC channel when developing some sites, and "check the source" has been the most common answer when I run into walls. Usefully, the questions I make receives some basic "see if the documentation say something" which I had of course already done, and then after a few hours of silence, someone says "check the source". This was a 3-4 years ago so maybe it has been improved?
It is true that I don't go to an IRC channel except when documentation and extensive testing has failed to produce an answer. Maybe the smugness and lack of empathy is more a product of asking questions that are not easily answered?
Re: Emacs users are like Terry Pratchett’s Igors
#35In common understanding of emacs, its use of lisp recieves perhaps too much attention, while its overall wonderful architecture is underappreciated. Emacs isnt just an editor with embedded lisp, its more a vm for bootstrapping editors. You could do an emacs with python, but the hard part is providing an environment where the extensions dont interfere with the user input loop, with buffer redisplay etc., while still s…
"The emacs buffer-based async handling of external processes is a masterpiece of software engineering, much better than things like unix pipes." This sounds intriguing. Do you have a pointer to something I could read that might expand on what you're saying here? (Aside from the emacs source.) Amusing coincidence: the only Pratchet book I've read is The Fifth Elephant .
The definition is really simple: a buffer is just a bunch of text from some unknown source, but in fact it is a very powerful abstraction, for two reasons. First, every time you do something in Emacs when simply editing files, you are really executing emacslisp functions on the buffer that is currently displayed. A lot of things you learn in Emacs can be used in three ways: interactively in editing sessions, when automating editing tasks with emacslisp, and finally when doing programming in general, even when it has nothing to do with editing files.
Second, a buffer can represent anything, it can of course contain the text of a file, but also of only fragments of a file, or a directory file listing, and, what's really great, Emacs binds TCP/FTP/HTTP/... network connections and external processes to buffers as well, allowing asynchronous streaming of incoming data into buffers, so that a emacslisp callback is called every time new text arrives from the process or socket, you can transform it as you wish and insert into the buffer the part to be shown to the user or kept for future processing. Then there are lisp primitives implemented in C like save-excursion which let you execute functions on buffer off-screen, so the same commands that are used for editing can be used for processing HTTP requests or grep output without the user noticing the cursor jumping back and forth or anything of this kind. So, when I am processing HTTP requests in Emacs, I use the same commands I sometimes use in interactive editing sessions, for example I can use re-search-forward to check if the headers were sent completely already and to get number of bytes they contain (the location in the buffer of the end of the headers, in other words). A lot of the weird emacs word like point, mark etc. that seem like anachronistic words for interface elements really are powerful abstractions that apply as much to programming as to the interactive editing.
Then there is a lot of other stuff that makes this yet more powerful, you can have buffer-local variables, timers that check buffer input periodically, transaction queues for those asynchronous processes, modes that define buffer-specific key-bindings, menus and behaviours etc., it goes on an on. It's a lot like node.js or other asynchronous networking stacks. There is also lot of magic that makes all this work concurrently without Emacs having implemented threads, and that makes it not interfere with the user interface.
A lot of the cool things Emacs does follows from this architecture, like the SLIME package for interacting with Common Lisp interpreters (local or remote), Dired for editing directory contents, Tramp for editing files on remote servers, Comint for running interactive processes of various kind inside Emacs etc. It's a really great lesson in how naturally features flow out of powerful design ideas.
As for resources, I learnt by reading the GNU Emacs Lisp Reference [1], and have done a lot of M-x describe-function and source code reading in the process of writing some elisp more sophisticated than just small editing helpers. E.g. the process stuff is described here:
http://www.gnu.org/software/emacs/manual/html_node/elisp/Pro...
Re: Emacs users are like Terry Pratchett’s Igors
#36This really reminds me of Terry Pratchett’s Igor clan. I discovered this amiable race in The Fifth Elephant. Igors are a people inspired from the typical hunchbacked Igor archetype, but in Discworld, they are also self-modifiers. Their bodies consist of mixed and matched and patched and swapped body parts among other members of their clan, of scars and self-adjustements. They are infinitely self-improving, self-experimenting. They might end up with a botched job and have to hobble around for a few days, but in the end it’s always fixable.
And they lisp.
Pratchett litters his books with lots of unexpected gems - I view it like Easter Eggs for books. Could he have possibly added the lisp on purpose???
Re: Emacs users are like Terry Pratchett’s Igors
#37Emacs is one of those things everybody knows is good, but few take the time to learn. Over the years I've learnt quite a few languages, and what strikes me is that they're all so very alike. You find the same features with slight syntactic changes. At the end of the day, what really makes a difference is not which language you chose but what tools you are using. Do you have to memorize every important method or are t…
> Over the years I've learnt quite a few languages, and what strikes me is that they're all so very alike. I used to think this as well, then I learned some Prolog. For those who aren't familiar with it, Prolog is a logic programming language (as opposed to imperative and functional languages). Instead of telling Prolog how to solve a problem, you give it a set of facts and tell it what you want to know. Prolog takes…
> I remember how hard I laughed when I noticed that LC's false function is the same as the Church-encoded numeral for zero.
Those sort-of "eureka" moments when a bit of programming language enlightenment materializes through ones own investigation are a joy.
Re: Emacs users are like Terry Pratchett’s Igors
#38one thing I struggle with emacs is that I can't find a place which documents the emacs way of doing things. Emacs has multitude of features, there are just too many to master, yet even to know that they exist. One example would be rectangle select http://www.gnu.org/software/emacs/manual/html_node/emacs/Rec... , I absolutely love them - but till one of colleague introduced them to me, I had no idea they existed.
Re: Emacs users are like Terry Pratchett’s Igors
#39Earlier quoted context omitted.
"The emacs buffer-based async handling of external processes is a masterpiece of software engineering, much better than things like unix pipes." This sounds intriguing. Do you have a pointer to something I could read that might expand on what you're saying here? (Aside from the emacs source.) Amusing coincidence: the only Pratchet book I've read is The Fifth Elephant .
I will try to explain. When I came to emacs as a user, a "buffer" seemed just a weird way of saying "tab" without displaying actual tabs. The word choice only started making more sense once I wrote non-trivial amounts of emacslisp. The buffer is the fundamental emacs data structure, like the file is the fundamental unix data structure, so it's really important to understand it well. The definition is really simple: a…
Re: Emacs users are like Terry Pratchett’s Igors
#40I'm a recovering Emacser, happy enough with less powerful but more modern text editors. It wasn't the program or the UI that finally did me in, but the community: I had a problem with how Emacs worked, I wanted to figure out a solution, so I asked on #emacs on Freenode and got nothing but abuse. I realised there's something about Emacs that attracts the sort of users I don't want to associate with: people who are smu…
I would say you had bad luck and met an ass (which could happen as anyone can go to #emacs and rant around)