How Emacs changed my life
slideshare.net
slideshare.net
Anyone with a slow connection knows what I'm upset about.
Needless to say, I quit when I was about 24 slides into the presentation.
How Emacs changed my Life Yukihiro "Matz" Matsumoto @yukihiro_matz
1980
I started programming
BASIC
400 steps
1988
I met Emacs
on Sun-3
shared by 200 undergraduates
I tried Emacs
but I never used
Emacs was prohibited
It consumed too much precious memory
We are free to download free software
We are free to read the source code
I downloaded Emacs source code
and investigated
Emacs was my first Lisp interpreter
I learned a lot about language implementation from Emacs
Embedding integers in pointers
Mark and sweep garbage collection
Calling convention between Lisp and C
I really understood how Lisp work
I was fascinated by Lisp objects
Lisp objects implemented by C
Then I got a Sparc Station
I started to use Emacs
Emacs become part of me
If I didnt like anything in Emacs, I could change it
Emacs is totally configurable
Emacs made me realize anything can be changed by a programmer
It is total freedom
I could edit without thinking key binding
I didnt want to write anything without Emacs
Programs, Documents and Mails
so I wrote my own mail client
named "cmail"
in Emacs lisp
It was my first non-trivial (Emacs) Lisp program
I used it everyday
1993
I started Ruby development
with influence from Emacs implementation
Integers are coded in tagged pointers
It uses simple mark andsweep garbage collector
It uses similar object model to Lisp
Then I put Smalltalk-like OO system on top
For syntax, I wanted Algol/Ada/ Eiffel like one
But as an Emacs addict, I needed a language mode
auto-indent was a must
Back in 1993, there was no auto-indenting language mode for a language with such syntax
So I tried to write experimental ruby-mode.el
fighting with emacs lisp and regular expression,
for almost whole week
I somehow succeeded to implement auto-indentation
for a language with "end" delimiters
If I couldnt make ruby-mode to work
the syntax of Ruby would have changed
to more C-like one
too similar to other scripting languages
as a result, Ruby would nothave gained current popularity
Summary
1. Emacs taught me freedom for software
2. Emacs taught me how to read code
3. Emacs taught me power of Lisp
4. Emacs taught me how to implement a language core
5. Emacs taught me how to implement a garbage collector
6. Emacs helped me to code and debug
7. Emacs helped me to writeand edit text/mails/documents
8. Emacs helped me to be a effective programmer
9. Emacs made me a hacker
10. Emacs has changed my life
forever
Thank you1. The transcript of the entire slideshare presentation is below the slide. This is the case for every presentation on Slideshare and you can skim that if you are in a hurry.
2. I dislike content-stuffed powerpoint slides like most viewers would. It is usually recommended to keep the text per slide at a minimum even if the content needs to be spread across many slides.
The point is, slides are teaching and not information recording/storing tools.
Most people forget this plain simple fact.
First principle of giving a presentation, ensure people focus on what you say and not on your slides.
The author is Japanese, after all.
Of course, I've been a constant Emacs user since about 1990, so maybe I'm cutting him some extra slack. I love Emacs. It is so powerful and I feel that even after 23 years of daily use I'm still only touching the surface of what it can do.
In some ways Emacs has fallen behind the state-of-the-art, but the community is so vast and talented that they keep coming up with awesome add-ins to keep it competitive (thanks, guys!).
Though, he departs from it; with pictures and such.
Though it's much weaker than saying "emacs influenced the massively adopted programming language I went on to write"...in many ways, having a computer that, as is - was unable to run Doom - led me to understand good old autoexec.bat and config.sys, what extended memory and himem.sys were, mouse drivers, etc, etc.
On the emacs front - emacs lead me to realize how useless the capslock key was, rebind it to Ctrl on all of my computers, and forever make numerous typing mistakes whenever I use someone else's keyboard :) Worth it.
Good little read.
Until then I'd only programmed in BASIC and while I didn't why I knew there was something "off" about how unwieldy it felt, TP made me realise why.
>That's quite a reach, under your hand, which is trying to hit another key at the same time. Usually I use the modifier key with the opposite hand, so I don't run into this problem.
Caps Lock to Ctrl (when pressed with another button) and Esc (when pressed alone) is one of the most efficient workflow optimizations I know of, even for regular computer use.
The usual plug (for OSX):
1. Set CapsLock to Control:
System Preferences
-> Keyboard
-> Modifier Keys...
-> http://i.imgur.com/joR19Hj.png
2. Get KeyRemap4MacBook: https://pqrs.org/macosx/keyremap4macbook/
3. Make this change: http://i.imgur.com/61lmhZ5.png * primitive GC
* only dynamic binding (Stallman sold that as a feature)
* no nested functions
* no threads
* no object system
* no namespaces for symbols
* implementation not independent from the editor
* no TCO
* slow
On the positive side it already had a simple byte code interpreter with a compiler for it and it was fast enough for some editing. Also, dedicated Emacs Lisp users managed to write some amazing code - given the restrictions.The 'eight megabytes and constantly swapping' thing now is also of less importance. ;-)
[1] http://lists.gnu.org/archive/html/guile-user/2013-07/msg0006...
There is already Edwin, which comes with MIT-Scheme. It's Emacs written in Scheme. It never took off, and most don't even know about it.
(It's a joke, I understand the difficulty involved with concurrency in interpreted languages. But given that both Elisp and Ruby are well-known for having trouble with threading, well, too hard to pass up!)
As an extreme example, you can run Erlang as an interpreted language and concurrency will not be a problem.
i like the human factor in it, like how random and incidental stuff like being able to complete ruby-mode.el had such a high impact on ruby's syntax
and how learning a text editor inside out, eventually led to ruby, which let to RoR , most people would consider learning so much about emacs as a waste of time, for matz it helped him made ruby
this presentation is more about our human nature , this is i believe a great exmaple of when doing what you love is more important that doing whats important or what you think is right, i like it
I talked briefly with Matz afterwards and he was very friendly and pleasant to chat with.
There should be audio of this presentation to go along with the slides somewhere, but I couldn't quickly locate it.
Let's not forget the amount of customization possible with Emacs Lisp. Editing your editor is a pretty great experience. If you work with any other Lisps, Emacs is the editor to use.
I don't read my email in Emacs like some people, but I do use it for IRC and it works quite well.
I could "evangelize" more, but I've done enough. Give it a shot. Figure out which editor you like more. If you stick with Emacs, be prepared for a weird adjustment period where your hands get really confused and you start mixing up Vim and Emacs key bindings. :)
I'd also recommend using IDO. For me this is one of the best things about Emacs.
If I couldn't make ruby-mode to work the syntax of
Ruby would have changed to more C-like one too
similar to other scripting languages as a result,
Ruby would not have gained current popularity
I've heard that Ruby's parsing code is especially difficult to replicate.After a week or two of using Emacs, you will get used to all of the keybindings and stop thinking about them. They'll become entirely natural and instinctive. Sure, Emacs takes more effort to learn, but you should view this as a good thing: more powerful tools are always like that. An F1 car is also difficult, but nothing will get you around the track faster.
The problems you're talking about will go away after a bit of effort. Is it really worth throwing out all the additional power and configurability--advantages that will last for years--just to save yourself a couple of weeks of minor frustration?
That makes me think that you really haven't tried Emacs. Backspace is just backspace. Copying and pasting is not too different than what you'd use in other software (but it can be, in many awesome ways). Do the tutorial, start using it daily, focus on the stuff you really need. The rest comes along on its own.
Unless you're on the wrong terminal. (google "emacs fix backspace")
Besides, it's really a big deal that most applications in your system use one set of hotkeys, while bash and emacs use a totally different one.
Besides, you can tell GTK to use Emacs-y keybindings rather than the ‘standard’ C-v, C-x, C-c.
I remember the days when it was just sh/ksh and vi in any commercial UNIX flavor.
I know... how often do you find yourself in such a situation nowadays, though?
Where emacs shines is when you start to micro-analyze your text editing process and learn how to optimize it with emacs.
Until you get to that stage, though, which isn't always the beginning for many - emacs probably isn't for you.
It's not going to make you edit text faster just because you use it - you have to actively study and look at new ways of editing. Watch an emacs master at work, it will blow your mind.
Perhaps it is possible to be more efficient with emacs than Sublime or TextMate. Editing code 20% faster is not a convincing argument for switching to emacs and the months of study it would require.
I find the hazing around emacs/vim to be peculiar. In what other arena would it be appropriate to tell a new user to study your software instead of making software that doesn't need to be studied?
disclaimer: I use emacs and sublime.
What is obscure about using the Backspace key for Backspace? For copy and paste, you can feel free to remap Command + [XCV] to Cut, Copy, Paste if you desire. It is three simple lines to remap, or you can just enable CuaMode with:
(cua-mode t)
in your .emacs file.(Or use evil-mode.)
So with Emacs you had less strange key bindings to remember, and you didn't have to switch between the edit mode and the command mode.
It's not for everyone. If it's not for you, there are plenty of perfectly fine (even gasp better) alternatives.
I find it more interesting for insight into Matz than anything about emacs. The idea that his text editor got him excited about programming is pretty powerful. Yes it could have been written in a 1 page memo, but who cares?
Deleted comment
That's the creator of the Ruby language. That's when he started developing it.
"Why do we have to hide from the police, Daddy?"
"Because we use vi, son. They use emacs."I wonder why HN users feel so entitled to getting only the articles they find interesting. I haven't seen this point in Terms & Conditions, have I missed it?
Ruby. That's usually enough. Don't you know that no startup is a proper startup without using Ruby and then rewriting everything once they hit the magical 10 user limit (extreme scaling)? It's agile, you know.
I got into Ruby years ago, and I still think it's a lot of fun to write code in it. Sometimes I just need a break from C++ copy constructors and debugging -O3 optimized core files. Anyway, it's interesting to hear what influenced Matz in creating the language.
Since you don't seem to like the machine performance of Ruby (understandable), what do you prefer? Do you find that runtime speed is an issue for your application? What are you application(s)?