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
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
 
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
 
PPTX
Map
kikairoya
 
PDF
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
 
PDF
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
 
PDF
dbt Cloud intro 日本語 202206
Paul Hallaste
 
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
 
分散システムについて語らせてくれ
Kumazaki Hiroki
 
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama
 
dbt Cloud intro 日本語 202206
Paul Hallaste
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 

What's hot (20)

PPT
Lockfree list
Kumazaki Hiroki
 
PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
PDF
最近のストリーム処理事情振り返り
Sotaro Kimura
 
PDF
目grep入門 +解説
murachue
 
PDF
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
 
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
PDF
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
PDF
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
 
PDF
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
 
PPTX
地理分散DBについて
Kumazaki Hiroki
 
PPTX
グラフデータベース入門
Masaya Dake
 
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
PDF
基礎線形代数講座
SEGADevTech
 
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
 
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
PPTX
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
Yutaka Shimada
 
PPTX
トランザクションの設計と進化
Kumazaki Hiroki
 
PDF
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
PDF
協調フィルタリング入門
hoxo_m
 
Lockfree list
Kumazaki Hiroki
 
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
 
最近のストリーム処理事情振り返り
Sotaro Kimura
 
目grep入門 +解説
murachue
 
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
 
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
20分くらいでわかった気���になれるC++20コルーチン
yohhoy
 
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
 
RDF Semantic Graph「RDF 超入門」
オラクルエンジニア通信
 
地理分散DBについて
Kumazaki Hiroki
 
グラフデータベース入門
Masaya Dake
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
 
基礎線形代数講座
SEGADevTech
 
Linux女子部 systemd徹底入門
Etsuji Nakai
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
 
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
Yutaka Shimada
 
トランザクションの設計と進化
Kumazaki Hiroki
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
協調フィルタリング入門
hoxo_m
 
Ad

Viewers also liked (20)

PDF
Ruby everywhere
yukihiro_matz
 
PDF
Feeding the sharks
yukihiro_matz
 
PDF
Emacs Modes I can't work without
Hitesh Sharma
 
PDF
20130404 emacs conf 2013 sketchnotes
Sacha Chua
 
PDF
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
Sacha Chua
 
PPT
Python virtualenv & pip in 90 minutes
Larry Cai
 
PDF
Emacs
Yuto Suzuki
 
PDF
Simple responsive typography
Nabeelah Ali
 
PPT
HBase for Dealing with Large Matrices
gcapan
 
ZIP
Google
guest08e2d3
 
PPT
web page classification
Nabeelah Ali
 
PDF
Pymacs 初體驗
Kai-Yuan Cheng
 
PDF
Emacs Cheat Sheet
guest9ebed9
 
ODP
SLIME
chaitanyagupta
 
PDF
On editing text and Emacs: 9 habits of highly effective text editing
dmgerman
 
PPT
Emacs, a performant IDE for Perl
Laurent Dami
 
PDF
Emacs intro
Khon
 
PDF
Emacs - COSCUP 2012
Kan-Ru Chen
 
PDF
My Emacs Configs
Qin Jian
 
PDF
Emacs入门
yinhm .
 
Ruby everywhere
yukihiro_matz
 
Feeding the sharks
yukihiro_matz
 
Emacs Modes I can't work without
Hitesh Sharma
 
20130404 emacs conf 2013 sketchnotes
Sacha Chua
 
Quantified Awesome: Tracking Clothes, Groceries, and Other Small Things
Sacha Chua
 
Python virtualenv & pip in 90 minutes
Larry Cai
 
Simple responsive typography
Nabeelah Ali
 
HBase for Dealing with Large Matrices
gcapan
 
Google
guest08e2d3
 
web page classification
Nabeelah Ali
 
Pymacs 初體驗
Kai-Yuan Cheng
 
Emacs Cheat Sheet
guest9ebed9
 
On editing text and Emacs: 9 habits of highly effective text editing
dmgerman
 
Emacs, a performant IDE for Perl
Laurent Dami
 
Emacs intro
Khon
 
Emacs - COSCUP 2012
Kan-Ru Chen
 
My Emacs Configs
Qin Jian
 
Emacs入门
yinhm .
 
Ad

Recently uploaded (20)

PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Doc9.....................................
SofiaCollazos
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 

How Emacs changed my life