How Emacs changed
     my Life

  Yukihiro "Matz" Matsumoto
       @yukihiro_matz




                              Powered by Rabbit 0.9.2
 




1980




              1/74
       Powered by Rabbit 0.9.2
 




I started programming




                               2/74
                        Powered by Rabbit 0.9.2
 




           3/74
    Powered by Rabbit 0.9.2
 




BASIC




               4/74
        Powered by Rabbit 0.9.2
 




400 steps




                   5/74
            Powered by Rabbit 0.9.2
 




1988




              6/74
       Powered by Rabbit 0.9.2
 




I met Emacs




                     7/74
              Powered by Rabbit 0.9.2
 




on Sun-3




                  8/74
           Powered by Rabbit 0.9.2
 




shared by 200 undergraduates




                                9/74
                         Powered by Rabbit 0.9.2
 




I tried Emacs




                     10/74
                Powered by Rabbit 0.9.2
 




but I never used




                        11/74
                   Powered by Rabbit 0.9.2
 




Emacs was prohibited




                            12/74
                       Powered by Rabbit 0.9.2
 



It consumed too much
   precious memory



                            13/74
                       Powered by Rabbit 0.9.2
 



We are free to download free
          software



                               14/74
                          Powered by Rabbit 0.9.2
 



We are free to read the source
             code



                                15/74
                           Powered by Rabbit 0.9.2
 



I downloaded Emacs source
           code



                            16/74
                       Powered by Rabbit 0.9.2
 




and investigated




                        17/74
                   Powered by Rabbit 0.9.2
 



Emacs was my first Lisp
     interpreter



                              18/74
                         Powered by Rabbit 0.9.2
 



I learned a lot about language
  implementation from Emacs



                                19/74
                           Powered by Rabbit 0.9.2
 



Embedding integers in
     pointers



                             20/74
                        Powered by Rabbit 0.9.2
 



Mark and sweep garbage
       collection



                              21/74
                         Powered by Rabbit 0.9.2
 



Calling convention between
         Lisp and C



                             22/74
                        Powered by Rabbit 0.9.2
 



I really understood how Lisp
            work



                               23/74
                          Powered by Rabbit 0.9.2
 



I was fascinated by Lisp
         objects



                                24/74
                           Powered by Rabbit 0.9.2
 




Lisp objects implemented by C




                               25/74
                          Powered by Rabbit 0.9.2
 




Then I got a Sparc Station




                              26/74
                         Powered by Rabbit 0.9.2
 




I started to use Emacs




                              27/74
                         Powered by Rabbit 0.9.2
 




Emacs become part of me




                           28/74
                      Powered by Rabbit 0.9.2
 



If I didn't like anything in
Emacs, I could change it



                                    29/74
                               Powered by Rabbit 0.9.2
 




Emacs is totally configurable




                               30/74
                          Powered by Rabbit 0.9.2
 



   Emacs made me realize
anything can be changed by a
        programmer



                              31/74
                         Powered by Rabbit 0.9.2
 




It is total freedom




                           32/74
                      Powered by Rabbit 0.9.2
 



I could edit without thinking
         key binding



                                33/74
                           Powered by Rabbit 0.9.2
 



I didn't want to write anything
         without Emacs



                                 34/74
                            Powered by Rabbit 0.9.2
 



Programs, Documents and
          Mails



                           35/74
                      Powered by Rabbit 0.9.2
 




so I wrote my own mail client




                                36/74
                           Powered by Rabbit 0.9.2
 




named "cmail"




                     37/74
                Powered by Rabbit 0.9.2
 




in Emacs lisp




                     38/74
                Powered by Rabbit 0.9.2
 



It was my first non-trivial
  (Emacs) Lisp program



                                  39/74
                             Powered by Rabbit 0.9.2
 




I used it everyday




                          40/74
                     Powered by Rabbit 0.9.2
 




1993




            41/74
       Powered by Rabbit 0.9.2
 




I started Ruby development




                             42/74
                        Powered by Rabbit 0.9.2
 



with influence from Emacs
      implementation



                            43/74
                       Powered by Rabbit 0.9.2
 



Integers are coded in tagged
          pointers



                               44/74
                          Powered by Rabbit 0.9.2
 



It uses simple mark and
sweep garbage collector



                               45/74
                          Powered by Rabbit 0.9.2
 



It uses similar object model to
              Lisp



                                 46/74
                            Powered by Rabbit 0.9.2
 



Then I put Smalltalk-like OO
       system on top



                               47/74
                          Powered by Rabbit 0.9.2
 



For syntax, I wanted Algol/Ada/
         Eiffel like one



                                 48/74
                            Powered by Rabbit 0.9.2
 



  But as an Emacs addict,
I needed a language mode



                             49/74
                        Powered by Rabbit 0.9.2
 




auto-indent was a must




                              50/74
                         Powered by Rabbit 0.9.2
 


Back in 1993, there was no
 auto-indenting language
 mode for a language with
        such syntax


                              51/74
                         Powered by Rabbit 0.9.2
 



So I tried to write experimental
          ruby-mode.el



                                  52/74
                             Powered by Rabbit 0.9.2
 



fighting with emacs lisp and
    regular expression,



                              53/74
                         Powered by Rabbit 0.9.2
 




for almost whole week




                             54/74
                        Powered by Rabbit 0.9.2
 



  I somehow succeeded to
implement auto-indentation



                             55/74
                        Powered by Rabbit 0.9.2
 



for a language with "end"
         delimiters



                             56/74
                        Powered by Rabbit 0.9.2
 



If I couldn't make ruby-mode
            to work



                               57/74
                          Powered by Rabbit 0.9.2
 



the syntax of Ruby would
      have changed



                                58/74
                           Powered by Rabbit 0.9.2
 




to more C-like one




                          59/74
                     Powered by Rabbit 0.9.2
 



too similar to other scripting
         languages



                                 60/74
                            Powered by Rabbit 0.9.2
 



  as a result, Ruby would not
have gained current popularity



                                61/74
                           Powered by Rabbit 0.9.2
 




Summary




               62/74
          Powered by Rabbit 0.9.2
 



1. Emacs taught me freedom
        for software



                             63/74
                        Powered by Rabbit 0.9.2
 



2. Emacs taught me how to
        read code



                             64/74
                        Powered by Rabbit 0.9.2
 



3. Emacs taught me power of
            Lisp



                              65/74
                         Powered by Rabbit 0.9.2
 



4. Emacs taught me how to
implement a language core



                             66/74
                        Powered by Rabbit 0.9.2
 



  5. Emacs taught me how to
implement a garbage collector



                               67/74
                          Powered by Rabbit 0.9.2
 



6. Emacs helped me to code
        and debug



                             68/74
                        Powered by Rabbit 0.9.2
 



 7. Emacs helped me to write
and edit text/mails/documents



                               69/74
                          Powered by Rabbit 0.9.2
 



8. Emacs helped me to be a
   effective programmer



                             70/74
                        Powered by Rabbit 0.9.2
 




9. Emacs made me a hacker




                            71/74
                       Powered by Rabbit 0.9.2
 




10. Emacs has changed my life




                               72/74
                          Powered by Rabbit 0.9.2
 




forever




               73/74
          Powered by Rabbit 0.9.2
 




Thank you




                 74/74
            Powered by Rabbit 0.9.2

How Emacs changed my life