Here's a transcript for you! (Made with Emacs, appropriately).
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 you
1. 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.
It seemed like a weird way to convey the content, but I found myself getting into it after a few slides, in a Zen sort of way :)
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!).
I too found the presentation much more interesting. The pauses in between each break/slide just gave me time to take in the significance. I think it was very appropriate here, and I'm glad I was introduced to this method of presentation. I think I'll use it myself some time.
What's awesome is how all of us can probably attribute similar life changes to various software discoveries.
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.
I've never understood the caps lock/control switch; swapping the ctrl and alt on one side of the keyboard just feels so much more natural to me: left thumb is alt, right thumb is ctrl.
One of the best purchases that I have ever made is the Kinesis Advantage keyboard.[1] In fairness, I was tempted to return it shortly after purchasing, but opted to give it one full week of use before making my decision. It took a couple days to become comfortable using it, and now I can't think of myself using another keyboard. It's designed for optimal physical placement of ctrl, alt, delete, backspace, and spacebar, among other keys.
It seems extremely awkward to me to be regularly trying to hit alts with your thumbs. In a normal typing position your thumbs rest near the middle of the spacebar. That's quite a reach, under your hand, which is trying to hit another key at the same time. Definitely worse than hitting ctrl with a pinky, at least for me.
I have been using this setup for a while (see my reply to the parent for more details), and I have found it is more comfortable to curl thumbs than to have a pinky outstretched to the Caps Lock position. The problem I had with the outstretched pinky is that Caps Lock is only on one side of the keyboard, so I would have to contort my hand a bit to pull of some combinations, rather than be able to hit the modifier key and the other key with two different hands (as you are supposed to do with Shift for example).
>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.
Yeah, tucking your thumb to hit anything left of the spacebar does not sound like a solid RSI-prevention game plan.
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
It's less awkward on a laptop keyboard than on a desktop, but it feels pretty natural at this point (I've been using it for 7 or 8 years now). Don't you have to use your thumbs to hit alt/meta anyway?
If your system can be configured to have a Compose key, that is an alternative to Alt/AltGr for letters such as `ąśćółężź` No, I didn't copy and paste, I actually did use the Compose key on my keyboard to type them.
I map ctrl to alt, and alt (meta) to the windows key. I also map backspace to caps lock. This is similar to the old lisp machine keyboards emacs started on. For example, the space cadet keyboard: http://world.std.com/~jdostale/kbd/SpaceCadet1.jpeg (Note the location of the RUB OUT, CTRL and META keys)
Wow, it really makes me happy to read about someone else who ended up in this field due to lacking sufficient ram! Now if only I had spent less time playing Doom and more time doing practical things with the computer, I might be in a different place now... but if my grandfather's computer had had more ram, who knows where I would be now!
As a Lisp implementation Emacs Lisp was pretty primitive then:
* 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. ;-)
Emacs, imho, will get a whole lot better when it runs on Guile[1]. This was a great presentation. I've been using emacs since the mid-eighties, it's so easily programmable that hackers are always hacking new things for it, so it keeps up with the latest fashion.
Not sure about that. Guile is pretty old and messy itself. It's still my preferred Scheme, though. But that's mostly just because of familiarity and loyalty on my part.
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.
I love Edwin! It's my favorite Emacs implementation, even though I don't get to use it as much as I'd like. It even has a nice email client, IMAIL, written using a beautiful object-oriented style. Many years of Scheme wizardry lives in there, I need to spend more time studying 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!)
i think people are being too harsh on this presentation, and focused too much on the form factor and number of slides , instead of the actual content and message
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
Matz gave this presentation at LibrePlanet 2012 in Boston. This talk was the reaason that I decided to give Emacs a shot after being a Vim user for a couple of years. I have used Emacs every day since.
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.
I love Emacs. I'm much happier now that I live in Emacs. I work on a Ruby on Rails application at work and I use Emacs not only to write code but to run tests, use the rails console, use the MySQL console, bundle update, use git, etc.
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'm just going to go ahead and say that if someone wants to stick with Emacs for all of their editing to learn the traditional Emacs key bindings and not use evil-mode.
The fact the Ruby syntax was mostly derived by what could be made to have auto-indentation in regex in a week in emacslisp is interesting. More than that, it's interesting that Matz seems to ascribe a lot of Ruby's success to it.
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.
Self admittedly, I'm a newb at coding but I've tried emacs and am not a fan. I get the benefits of being able to debug and execute code immediately in the REPL, but I would much rather write code in sublime text or any other text editor. The last thing I want to do when I'm writing code is try to remember some obscure combination of keys in order to perform a simple backspace or copy and paste a line of code. Have not been convinced otherwise yet, maybe someone here can better enlighten me
That's an argument not against Emacs but against not knowing Emacs. The only issue with the keybindings is that they are different from other software. This should not be an issue! After all, an editor is probably going to be your most-used piece of software; spending a good amount of time up front to get even a small benefit over the long run will definitely pay off.
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?
>The last thing I want to do when I'm writing code is try to remember some obscure combination of keys in order to perform a simple backspace or copy and paste a line of code.
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.
The reason for Emacs using a different set of key bindings (C-u catches me all the damn time) is that Emacs had its genesis outside of Unix. Emacs keybindings and the endless crusade to force "info" as a "man" replacement all stem from RMS's sad devotion to an ancient religion (ITS).
Out of the gate, Emacs feels clumsy and frustrating compared to ST or any other more standard text editor.
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.
Right. This is the part that is a waste of time. How much time do developers spend typing in a given day inside their text editor? Maybe its 1% of their workday? The vast majority of their time is spent thinking. I'm highly doubtful that using emacs improves the thing that matters- code quality.
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?
I spend about 95% of my time in my editor. I really can't fathom what you're getting at, here. For most developers I know, reading or writing code is what programming is. What are you doing with your time?
> The last thing I want to do when I'm writing code is try to remember some obscure combination of keys in order to perform a simple backspace or copy and paste a line of code.
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:
meh,how do you copy a line in sublime then ? You are not even using sublime.Spend couple of hours just learning the basic commands of whatever editor you prefer using.If your editor is any good you will have more to learn after the two hours.If you are worried about obscure key combinations learn vim,it's like a language for text processing.You can even activate vintage mode in sublime if you like the look of sublime. just my .02
I've been using Emacs for 15+ years now I think and I have always found the more complicated keybindings ("chords") for common things awful. However part of normal Emacs usage is configuring it to your liking, so learn about "M-x global-set-key" and mold Emacs to your liking.
Don't worry, you're not weird. I used Emacs full time for 8 years and I've made occasional attempts to go back to it for various things. In my opinion it's awful, and I know a fair number of people who feel that way. In my opinion the most important thing about Emacs is that pretty much any language out there has some Emacs support, but in my opinion that just makes it an editor that's equally bad at a lot of languages :-)
It's not for everyone. If it's not for you, there are plenty of perfectly fine (even gasp better) alternatives.
Why did you use it for 8 full years if it is so awful? Maybe other alternatives for your use case were simply more awful, thus making Emacs the best tool for the job?
It's hard to go bad on this article given the source, no?
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?
While it is almost always nicer to have videos attached to slideshows, I am quite sure we would miss out on plenty of excellent content if this idea was implemented. After all, you only see so many videoless slideshows here because your peers have found, enjoyed, submitted and up voted them...
Is this really the attitude you want to see in the community around you? There are pages full of other potentially interesting things just on this one site. Go find one that's interesting to you and be constructive.
So that some random pundit can leave an annoying and pointless comment on it.
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?
> That was really really annoying and pointless. Why has this been up voted?
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.
Hey so I'm usually the first person to point out when something sucks, but this thread is soo negative. What's up with that? Is everyone on HN all about Python and Vi or what?
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)?
I agree. This presentation sucks because it could be written as a simple paragraph of text. There is no need for slides. It was upvoted only because it's by Yukihiro Matzumoto, the author of Ruby programming language.
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.