SlideShare a Scribd company logo
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

More Related Content

PDF
Design Principles for a High-Performance Smalltalk
PDF
Argocd up and running
PDF
Container Runtime Security with Falco, by Néstor Salceda
PDF
[KubeCon EU 2022] Running containerd and k3s on macOS
PDF
OFI libfabric Tutorial
PPTX
eBPF Basics
PPTX
Clean Code - Design Patterns and Best Practices at Silicon Valley Code Camp
PDF
DPDK in Containers Hands-on Lab
Design Principles for a High-Performance Smalltalk
Argocd up and running
Container Runtime Security with Falco, by Néstor Salceda
[KubeCon EU 2022] Running containerd and k3s on macOS
OFI libfabric Tutorial
eBPF Basics
Clean Code - Design Patterns and Best Practices at Silicon Valley Code Camp
DPDK in Containers Hands-on Lab

What's hot (20)

PDF
BPF Internals (eBPF)
PDF
BPF / XDP 8월 세미나 KossLab
PDF
Replacing iptables with eBPF in Kubernetes with Cilium
PPTX
Dpdk applications
PDF
Linux BPF Superpowers
PDF
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
PDF
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
PDF
Terraform
PDF
Introducing GitLab
PPTX
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
PPTX
Enable DPDK and SR-IOV for containerized virtual network functions with zun
PDF
Quick and Easy Device Drivers for Embedded Linux Using UIO
PDF
Git and Github
PPTX
Reverse proxy & web cache with NGINX, HAProxy and Varnish
PDF
VXLAN and FRRouting
PDF
Introduction to eBPF and XDP
PDF
EBPF and Linux Networking
PPTX
Understanding DPDK algorithmics
PPTX
DevOps with Kubernetes
PDF
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
BPF Internals (eBPF)
BPF / XDP 8월 세미나 KossLab
Replacing iptables with eBPF in Kubernetes with Cilium
Dpdk applications
Linux BPF Superpowers
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Terraform
Introducing GitLab
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Quick and Easy Device Drivers for Embedded Linux Using UIO
Git and Github
Reverse proxy & web cache with NGINX, HAProxy and Varnish
VXLAN and FRRouting
Introduction to eBPF and XDP
EBPF and Linux Networking
Understanding DPDK algorithmics
DevOps with Kubernetes
XPDDS17: Shared Virtual Memory Virtualization Implementation on Xen - Yi Liu,...
Ad

Viewers also liked (20)

PDF
Ruby everywhere
PDF
Feeding the sharks
PDF
Emacs Modes I can't work without
PDF
20130404 emacs conf 2013 sketchnotes
PDF
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
PPT
Python virtualenv & pip in 90 minutes
PDF
PDF
Simple responsive typography
PPT
HBase for Dealing with Large Matrices
ZIP
Google
PPT
web page classification
PDF
Pymacs 初體驗
PDF
Emacs Cheat Sheet
ODP
PDF
On editing text and Emacs: 9 habits of highly effective text editing
PPT
Emacs, a performant IDE for Perl
PDF
Emacs intro
PDF
Emacs - COSCUP 2012
PDF
My Emacs Configs
PDF
Emacs入门
Ruby everywhere
Feeding the sharks
Emacs Modes I can't work without
20130404 emacs conf 2013 sketchnotes
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
Python virtualenv & pip in 90 minutes
Simple responsive typography
HBase for Dealing with Large Matrices
Google
web page classification
Pymacs 初體驗
Emacs Cheat Sheet
On editing text and Emacs: 9 habits of highly effective text editing
Emacs, a performant IDE for Perl
Emacs intro
Emacs - COSCUP 2012
My Emacs Configs
Emacs入门
Ad

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Encapsulation theory and applications.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Big Data Technologies - Introduction.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
Teaching material agriculture food technology
Review of recent advances in non-invasive hemoglobin estimation
Reach Out and Touch Someone: Haptics and Empathic Computing
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Empathic Computing: Creating Shared Understanding
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Network Security Unit 5.pdf for BCA BBA.
Encapsulation theory and applications.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
“AI and Expert System Decision Support & Business Intelligence Systems”
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Unlocking AI with Model Context Protocol (MCP)
Per capita expenditure prediction using model stacking based on satellite ima...
Big Data Technologies - Introduction.pptx
The AUB Centre for AI in Media Proposal.docx
Chapter 3 Spatial Domain Image Processing.pdf
Approach and Philosophy of On baking technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation

How Emacs changed my life