Tuesday 3 June 2014

Hurdism

The FSF aka The Gnu People perpetually feud with Linuxoids, claiming something like "Linux should be called Gnu Linux because it's a modified version of the OS that Gnu was working on, and there is more Gnu code in there than Linux kernel code."

Gnu's own operating system was never finished because it was too ambitious. Rather than just creating an open source version of Unix, the Gnus decided that they would write a version of Unix that used a microkernel OS. This, like shoulder pads, was considered a cool idea a quarter of a century ago - which is when work on the Gnu kernel started. No, it's still not finished.

Gnu adopted a similar approach to updating emacs lisp. Which is to say rather than implementing sensible incremental improvements, which could have added much needed features (like optional lexical name spaces and packages/modules) they started work on a whole new version of lisp called "Guile" and a system for automatically translating between the two languages.

That was almost fifteen years ago. We're still old-school emacs lisp - although it recently did get the optional lexical scope.

Conclusion: I Hate You Emacs!

Emacs Lisp: Trabant or Kalashnikov?

A conversation with a programmer friend:

"I've been doing a lot of emacs lisp programming lately."

"That's cool; you like lisp. Is it more like Common Lisp or Scheme?"

"It's not really like either. By default it doesn't have lexical scope."

"..That can't mean what I think.."

"Yes, it can!"

Lisp is the Citroen DS of computer languages - at once ancient and futuristic, and oh-so non-mainstream. Emacs Lisp, which Richard Stallman (wisely) designed to be easy to implement and run efficiently back when computing resources were scarce, is like a sort of Cold War Eastern European copy of a DS - the shape is the same, and a lot of the cool stuff is there, but parts of the design are the result of really brutal engineering compromises.

And, yes, the language would be better if this wasn't so - but it probably wouldn't be worth using, because too few people would have able to use early emacs, and non-existent users can't write the libraries that draw more users in, who write more libraries, etc.


And you know, emacs lisp works.

Conclusion: I love you, emacs!


Monday 2 June 2014

A Thousand Words Are Worth A Million Pictures

Do you want to try explain basic algebra using pictures instead of words? How about the history of the Calvinism? Or writing a program using only pictures?

Emacs is not just a text editor; because it is programmable at a deep level it is a rich tool kit for creating applications designed to work with words. So the most powerful personal information manager that I'm aware of isn't a standalone program like Zim (which is pretty good btw) but the Org Mode plug-in for emacs.

Once you've coded an emacs extension it's easy to understand why this is: emacs lets you start with a working system at once and add functionality to it, and it provides a very rich toolkit for working with text.

So - I LOVE YOU EMACS!


I am not autistic or obsessive compulsive and do not embrace RSI as a lifestyle choice

...Therefore I reject emacs's keybindings.

Does anything else need to be said? No, but I will say it anyway: emacs has spent decades inflicting debilitating pain on people whose only mistake was to trust it. If you are going to use emacs, then install a package that gives you different keystrokes - evil.el or ErgoEmacs for example.

And was there ever a point to this? No; emacs forced horrible, hand-damaging key combinations on its users for no good reason and continued doing this for decades after the problem was obvious.  Despite having the ability to change at any time just by loading a new config file. Which is, of course, so emacs.

But why did the problem start? When emacs was created no one understood the importance of ergonomics or the dangers of RSI. And emacs was designed around a Lisp Machine keyboard which had a Meta key that was placed so that it made emacs's key combos less insane. Then, most of all, there is the magpie urge (typical of emacs's design in so many ways) to fit in as much as possible, which in this case meant key combos for as many commands as possible. As in, at any cost.

Any person who should have been allowed to design an interface for an editor would have said "Most people will only use a dozen commands for 90% of  their work - and only another half dozen 90% of the remainder. So let's put these in sensible, easy to remember positions and tuck the rest away under a well design menu system. The small minority of people who need/want something different can change the config themselves." (This is how most applications work.)

And a person who was actually a good interface designer would have said "Let's have a couple of dozen core commands that form a language - so that you can put them together to do complex stuff while having to remember only a few keystrokes instead of hundreds." (This is how vi/vim and evil.el work.)

But either no one said this to core emacs team or their response was "Heresy! BURNNNN THEMMMM!"

Suggested reading: 

Overview:

   http://ergoemacs.org/emacs/emacs_kb_shortcuts_pain.html

Stats for frequency of use for emacs commands

   http://ergoemacs.org/emacs/command-frequency.html

An ergonomic keybinding based on those stats

   http://ergoemacs.org/emacs/ergonomic_emacs_keybinding.html

Vim/vi type keybindings

   http://www.emacswiki.org/emacs/Evil

Btw: Wordstar (beloved of George R. Martin) has some interesting bindings

   http://www.noologie.de/symbol07.htm

And emacs can emulate them

  http://www.gnu.org/software/emacs/manual/html_node/emacs/Emulation.html

..But  suspect that they're messed ergonomics-wise by emacs use of Control as its main special key, which makes some of the key combos awkward.

Conclusion: I HATE YOU EMACS