Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why (Still) Ruby?

Akira Matsuda
September 24, 2016

Why (Still) Ruby?

Slides for my final keynote "Why (Still) Ruby" at RubyConf Brasil 2016 (the final RubyConf Brasil 😢) http://www.rubyconf.com.br/en/schedule#7eb62dc8b9508ea70bfd1be5f71773d4 #rubyconfbr

Akira Matsuda

September 24, 2016
Tweet

More Decks by Akira Matsuda

Other Decks in Programming

Transcript

  1. Why (Still) Ruby?
    Akira Matsuda
    #rubyconfbr

    View full-size slide

  2. Me
    ⚽ Akira Matsuda

    View full-size slide

  3. OMG! I'm Doing the

    Closing Keynote!
    ⚽ It's a great honor!

    View full-size slide

  4. How Was RubyConf Brasil?

    View full-size slide

  5. How Was RubyConf Brasil?

    View full-size slide

  6. How Were the Talks?

    View full-size slide

  7. We Had Some Great Talks
    About Web Frameworks
    ⚽ Rails
    ⚽ etc.

    View full-size slide

  8. We Had Some Amazing Talks
    About Elixir / Crystal

    View full-size slide

  9. We Had Some Amazing Talks
    About Elixir / Crystal

    View full-size slide

  10. This Event is_a RubyConf
    ⚽ According to its name

    View full-size slide

  11. Why Didn't You All Talk About
    Ruby?

    View full-size slide

  12. Why Didn't You All Talk About
    Ruby?

    View full-size slide

  13. Because Ruby is Matured?

    So There's No New Topic Anymore?

    View full-size slide

  14. Because People Are Losing Their Interest in
    Ruby?

    And Shifting to Newer Languages?

    View full-size slide

  15. I Don't Think So
    ⚽ Ruby has many new topics that you
    should know
    ⚽ People are still interested in these stories

    View full-size slide

  16. Let Me Show You an Example
    of a Conference That

    View full-size slide

  17. People Are Still Enthusiastically
    Talking About Ruby

    View full-size slide

  18. RubyKaigi
    ⚽ http://rubykaigi.org/

    View full-size slide

  19. The Organizing Team
    ⚽ http://rubykaigi.org/team

    View full-size slide

  20. The Organizing Team

    View full-size slide

  21. The Organizing Team
    Me

    View full-size slide

  22. Me
    ⚽ Akira Matsuda
    ⚽ "Chief Organizer" of RubyKaigi

    View full-size slide

  23. RubyKaigi
    ⚽ A purely technical international
    conference
    ⚽ Deeply focused on Ruby language
    ⚽ Held in Japan annualy

    View full-size slide

  24. RubyKaigi.is_a International
    Conference

    View full-size slide

  25. RubyKaigi.attendees

    .map(&:from)

    View full-size slide

  26. Brasil?
    ⚽ I came all the way from Japan for this
    conference!
    ⚽ It's your turn to come visit our conference
    in Japan
    ⚽ Why don't you?

    View full-size slide

  27. RubyKaigi.has_many
    Ruby.committers
    ⚽ Because most of Ruby core developers
    live in Japan
    ⚽ We had about 30 Ruby committers at this
    year's event

    View full-size slide

  28. "Ruby Committers vs The
    World"
    ⚽ And, we put them all together on stage!

    View full-size slide

  29. "Ruby Committers vs The
    World"

    View full-size slide

  30. "Ruby Committers vs The
    World"
    ⚽ 1 hour live discussion and Q&A
    ⚽ Only possible in RubyKaigi because no
    other conference in the world has this
    many Ruby committers

    View full-size slide

  31. "Ruby Committers vs The
    World"
    Me

    View full-size slide

  32. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer

    View full-size slide

  33. Ruby Is Pretty Mature
    ⚽ 23 years old. Not a kid anymore
    ⚽ Conquered the web world

    View full-size slide

  34. Is Ruby Language Mature
    Enough?
    ⚽ Is Ruby "Done" already?

    View full-size slide

  35. There're So Much Room for

    Feature & Performance Improvements

    View full-size slide

  36. At RubyKaigi, We Made
    Some Announcements
    ⚽ Ruby 2.4 New Features
    ⚽ Ruby 3.0 Plans

    View full-size slide

  37. Ruby 2.4 New Features

    View full-size slide

  38. Integer Unification (akr)
    ⚽ http://rubykaigi.org/2016/
    presentations/tanaka_akr.html

    View full-size slide

  39. Ruby <= 2.3
    1.class #=> Fixnum
    (2**100).class #=> Bignum

    View full-size slide

  40. Ruby 2.4
    1.class #=> Integer
    (2**100).class #=> Integer

    View full-size slide

  41. Slides Are Linked from the
    Official Site
    ⚽ http://rubykaigi.org/2016/schedule/
    ⚽ Please check them out if you want to
    know more details

    View full-size slide

  42. Improvements on Unicode
    Case Conversion (duerst)
    ⚽ http://rubykaigi.org/2016/
    presentations/duerst.html

    View full-size slide

  43. Ruby <= 2.3
    'São Paulo'.upcase #=> "SãO PAULO"

    View full-size slide

  44. Ruby 2.4
    'São Paulo'.upcase #=> "SÃO PAULO"

    View full-size slide

  45. Slides and Video Are Linked
    from the Official Site
    ⚽ http://rubykaigi.org/2016/schedule/
    ⚽ Please check them out if you want to
    know more details

    View full-size slide

  46. Plans for Ruby 3

    View full-size slide

  47. New Type System (matz)
    ⚽ http://rubykaigi.org/2016/
    presentations/yukihiro_matz.html

    View full-size slide

  48. Matz's Original "Typing System"

    (͖Ύ͏Γվ)
    http://www.itmedia.co.jp/enterprise/articles/0704/24/news006_2.html

    View full-size slide

  49. "Soft Typing"

    View full-size slide

  50. "You will see the future of the
    type system in Ruby3."
    ⚽ http://rubykaigi.org/2016/
    presentations/yukihiro_matz.html

    View full-size slide

  51. New Concurrency System
    (ko1)
    ⚽ http://rubykaigi.org/2016/
    presentations/ko1.html

    View full-size slide

  52. ko1
    ⚽ The author of current Ruby VM
    ⚽ Full-time Ruby committer at Heroku Inc.

    View full-size slide

  53. "Guild"
    ⚽ Wraps Ruby Thread manipulation
    ⚽ Influenced by recent languages, libraries
    with strong concurrency system
    ⚽ His answer to them

    View full-size slide

  54. Slides and Video Are Linked
    from the Official Site
    ⚽ http://rubykaigi.org/2016/schedule/
    ⚽ Please check them out if you want to
    know more details

    View full-size slide

  55. Ruby 3x3
    ⚽ Ruby 3 will be 3 times faster than Ruby 2

    View full-size slide

  56. Deoptimization Engine
    (shyouhei)
    ⚽ http://rubykaigi.org/2016/
    presentations/shyouhei.html

    View full-size slide

  57. The est Talk Proposal

    I've Ever Seen

    View full-size slide

  58. Deoptimization
    ⚽ The patch is already online
    ⚽ https://github.com/ruby/ruby/pull/1419

    View full-size slide

  59. shyouhei
    ⚽ Full-time Ruby committer at
    MoneyForward Inc.

    View full-size slide

  60. Companies That've Been
    Supporting Ruby Development
    ⚽ NaCl (supporting Matz: since 1997)
    ⚽ Heroku (Matz, ko1, nobu: since
    2011-2012)
    ⚽ MoneyForward (shyouhei: since 2015)

    View full-size slide

  61. The Deoptimization Patch
    ⚽ This patch is his first output from
    MoneyForward
    ⚽ Will hopefully be merged to 2.4 (?)

    View full-size slide

  62. Slides Are Linked from the
    Official Site
    ⚽ http://rubykaigi.org/2016/schedule/
    ⚽ Please check them out if you want to
    know more details

    View full-size slide

  63. Dive into CRuby (naruse)
    ⚽ Closing keynote of RubyKaigi 2016

    View full-size slide

  64. naruse
    ⚽ Release manager of Ruby 2.4

    View full-size slide

  65. Did You Know that Matz is No
    Longer a Release Manager?
    ⚽ <= 1.8.5 matz
    ⚽ 1.8.5, 1.8.6, 1.8.7 shyouhei
    ⚽ 1.9 yugui
    ⚽ 1.9.3 yugui, mame
    ⚽ 2.0 mame
    ⚽ 2.1, 2.2, 2.3, 2.4 naruse

    View full-size slide

  66. naruse as a Release Manager
    ⚽ 2.1, 2.2, 2.3, 2.4
    ⚽ Released, and going to release all these
    Rubies since we decided to release Ruby
    once per year

    View full-size slide

  67. Dive into CRuby (naruse)
    ⚽ He showed us how he hacks the C code in
    ruby core
    ⚽ He showed us there're so much rooms for
    improvement

    View full-size slide

  68. Also, He Stated That
    ⚽ We can improve not only the language
    core such as VM, but also stdlibs

    View full-size slide

  69. Ingredients of the Ruby Repo
    ⚽ The language core
    ⚽ stdlibs as C extensions
    ⚽ stdlibs in Ruby

    View full-size slide

  70. Maintaining Stdlibs is Hard

    View full-size slide

  71. Stdlibs Tend to Easily
    Become Unmaintained
    ⚽ OpenSSL: No maintainer until rhe joined
    ruby-core this year
    ⚽ WEBRick: Nobody actively maintains

    View full-size slide

  72. Stdlibs Maintainers
    ⚽ https://bugs.ruby-lang.org/projects/
    ruby/wiki/MaintainersStdlib
    ⚽ You'll see so many "unmaintained"
    libraries
    ⚽ And this list is also "unmaintained" indeed

    View full-size slide

  73. Number of Stdlibs
    ⚽ Very roughly counted by


    % cat <(ls lib) <(ls ext) | sed 's/\.rb$//' | sort -u | wc -l

    View full-size slide

  74. Number of Stdlibs
    ⚽ 1.6: 79
    ⚽ 1.8: 121 ⤴⤴⤴
    ⚽ 1.9: 113 ⤵
    ⚽ 2.0: 111 ⤵
    ⚽ 2.1: 111
    ⚽ 2.2: 107 ⤵
    ⚽ 2.3: 105 ⤵
    ⚽ 2.4: 102 ⤵

    View full-size slide

  75. Number of Stdlibs
    ⚽ Gradually decreasing in recent versions

    View full-size slide

  76. Gemifying Stdlibs
    ⚽ Recent trend is to "gemify" stdlibs
    ⚽ And extract each individual repo under
    https://github.com/ruby/

    View full-size slide

  77. What Were Gemified in 2.4
    ⚽ Tk
    ⚽ XMLRPC

    View full-size slide

  78. Ruby/Tk
    ⚽ The oldest GUI library in Ruby (since the last
    century!)
    ⚽ Cross Platform
    ⚽ Initially created by Matz
    ⚽ Being maintained by nagai

    View full-size slide

  79. Who Uses Tk Now?

    View full-size slide

  80. Gemified
    ⚽ https://github.com/ruby/tk

    View full-size slide

  81. Pros
    ⚽ Tarball size ⤵
    ⚽ Build time ⤵
    ⚽ No need to add a build option
    `RUBY_CONFIGURE_OPTS="--with-out-ext=tk,tk/*"`
    anymore
    ⚽ Easier to patch, contribute, and release

    View full-size slide

  82. Cons
    ⚽ Those who uses Tk has to

    `gem install tk`

    before using

    View full-size slide

  83. We're Extracting Stdlibs to
    Gems
    ⚽ So everyone can easily contribute
    ⚽ IMO this is the main purpose

    View full-size slide

  84. Future Plans
    ⚽ WEBRick?
    ⚽ OpenSSL?
    ⚽ Anything in the stdlibs list

    View full-size slide

  85. ruby/* gems Are Looking for
    Maintainers / Contributors
    ⚽ Patches are welcome!

    View full-size slide

  86. And Ruby Stdlibs Are Also
    Looking for Maintainers
    ⚽ Send us your patches!

    View full-size slide

  87. Let's Go Back to RubyKaigi

    View full-size slide

  88. These Talks Were About
    Developing Ruby

    View full-size slide

  89. For What Do We Use Ruby?

    View full-size slide

  90. An Unix Shell Written in
    Ruby (keiju, 2015)
    ⚽ http://rubykaigi.org/2015/
    presentations/keiju

    View full-size slide

  91. keiju
    ⚽ God father of the language "Ruby"
    ⚽ Author of IRB

    View full-size slide

  92. Infra as a Code
    ⚽ Chef / Puppet / Itamae
    ⚽ Serverspec
    ⚽ Hashicorp products
    ⚽ winebarrel wares

    View full-size slide

  93. Infra as a Code
    ⚽ Ruby DSL

    View full-size slide

  94. Haconiwa (@udzura)
    ⚽ http://rubykaigi.org/2016/
    presentations/udzura.html
    ⚽ mruby x container

    View full-size slide

  95. Systems Programming

    View full-size slide

  96. Hijacking syscalls with
    (m)ruby (@franckverrot)
    ⚽ http://rubykaigi.org/2016/
    presentations/franckverrot.html
    ⚽ An experiment on overriding Unix syscalls
    using mruby

    View full-size slide

  97. Building maintainable command-
    line tools with mruby (drbrain)
    ⚽ http://rubykaigi.org/2016/
    presentations/drbrain.html
    ⚽ mruby & mruby-cli

    View full-size slide

  98. mruby
    ⚽ People talk about this a lot at RubyKaigi

    View full-size slide

  99. What is mruby?
    ⚽ Matz's new toy
    ⚽ Yet another Ruby implementation
    ⚽ Lightweight
    ⚽ m is for "Embedded"
    ⚽ https://github.com/mruby/mruby

    View full-size slide

  100. Embedded Devices x mruby

    View full-size slide

  101. making robot with mruby
    (@yuri_at_earth, 2015)
    ⚽ http://rubykaigi.org/2015/presentations/
    yurie
    ⚽ RTOS + LEGO Mindstorms EV3 + Raspberry
    Pi + mruby
    ⚽ With a demo

    View full-size slide

  102. High Tech Seat in mruby
    (@yuri_at_earth)
    ⚽ http://rubykaigi.org/2016/presentations/
    yuri_at_earth.html
    ⚽ Controlling "High Tech Seat" (toilet) with
    mruby
    ⚽ With a demo!

    View full-size slide

  103. Charming Robots
    (@juliancheal, 2015)
    ⚽ http://rubykaigi.org/2015/presentations/
    juliancheal
    ⚽ How to control physical devices with Ruby
    (not mruby)
    ⚽ With tons of demos

    View full-size slide

  104. It's More Fun to Compute
    (@juliancheal)
    ⚽ http://rubykaigi.org/2016/
    presentations/juliancheal.html
    ⚽ How to make music with Ruby
    ⚽ With tons of demos

    View full-size slide

  105. Game Development + Ruby =
    Happiness? (@amirrajan)
    ⚽ http://rubykaigi.org/2016/
    presentations/amirrajan.html
    ⚽ iOS Game: A Dark Room
    ⚽ Game programming with Ruby

    View full-size slide

  106. Writing A Gameboy
    Emulator in Ruby (0xColby)
    ⚽ http://rubykaigi.org/2016/presentations/
    0xColby.html
    ⚽ Nintendo Gameboy emulator in Ruby
    ⚽ Was nice that we had this for RubyKaigi 2016
    ⚽ Because Nintendo was a RubyKaigi sponsor!

    View full-size slide

  107. Nintendo Sponsors
    RubyKaigi!

    View full-size slide

  108. NES Emulator Written in
    Ruby
    ⚽ Optcarrot
    ⚽ Created by mame
    ⚽ https://github.com/mame/optcarrot
    ⚽ He created this for benchmarking ruby
    implementations

    View full-size slide

  109. We Didn't Have a Talk About
    This at RubyKaigi
    ⚽ But he made a talk about this at

    a "regional RubyKaigi" called

    Kawasaki RubyKaigi 01

    View full-size slide

  110. The Benchmark Shows That
    ⚽ Optcarrot runs at 20 fps in Ruby 2.0
    ⚽ The original NES requires 60 fps
    ⚽ If Ruby became 3x faster, then we can
    comfortably play NES games with ruby!

    View full-size slide

  111. Purpose of This Project
    ⚽ To check if we could achieve "Ruby 3x3"

    View full-size slide

  112. mame
    ⚽ Ruby committer
    ⚽ Ruby 2.0 release manager
    ⚽ Very well known by his another mind-
    blowing masterpiece

    View full-size slide

  113. 100 Programming Languages
    Quine
    ⚽ https://github.com/mame/quine-relay
    ⚽ A Ruby code that prints a Scala code that
    prints a Scheme code that prints a .............
    Ruby code that prints a Scala code
    that .............

    View full-size slide

  114. mame at RubyKaigi 2015

    View full-size slide

  115. TRICK
    ⚽ "Transcendental Ruby Imbroglio Contest for rubyKaigi"
    ⚽ Weirdest Ruby code contest
    ⚽ So crazy weird that I cannot explain. Please take a look
    at the repo
    ⚽ https://github.com/tric/trick2015

    View full-size slide

  116. You See, We're Having Fun
    with Ruby!

    View full-size slide

  117. Playing with Ruby is Fun!
    ⚽ Ruby gives us joy of programming
    ⚽ We're sharing such fun at the events

    View full-size slide

  118. Ruby Can Also Be Used for
    Serious Projects

    View full-size slide

  119. Science x Ruby

    View full-size slide

  120. Pwrake: Distributed Workflow Engine
    based on Rake (@masa16tanaka)
    ⚽ http://rubykaigi.org/2016/
    presentations/masa16tanaka.html
    ⚽ A distributed workflow engine designed
    and used for scientific data processing on
    cluster

    View full-size slide

  121. @masa16tanaka
    ⚽ The autor of NArray since 1999

    View full-size slide

  122. Data Analysis in RUby with
    daru (@v0dro)
    ⚽ http://rubykaigi.org/2016/presentations/v0dro.html
    ⚽ A "library for analysis, cleaning, manipulation and
    visualization of data"
    ⚽ So many features for scientific computing
    ⚽ https://github.com/v0dro/daru

    View full-size slide

  123. SciRuby Machine Learning
    Current Status and Future (mrkn)
    ⚽ Machine learning with Ruby
    ⚽ Introduced SciRuby project, showed that
    there're so many works to be done
    ⚽ And urged the audience to join the project

    View full-size slide

  124. mrkn
    ⚽ A Ruby committer
    ⚽ Mainteiner of BigDecimal which was
    gemified last year (2.3)

    View full-size slide

  125. Another Alternative Ruby
    Implementation

    View full-size slide

  126. JRuby 9000 Last Year, Today,
    and Tomorrow (@tom_enebo)
    ⚽ http://rubykaigi.org/2016/
    presentations/tom_enebo.html
    ⚽ JRuby 9000

    View full-size slide

  127. Yet Another Ruby
    Implementation
    ⚽ Opal

    View full-size slide

  128. Isomorphic Web
    Programming (@youchan)
    ⚽ http://rubykaigi.org/2016/
    presentations/youchan.html

    View full-size slide

  129. Isomorphic Web
    Programming (@youchan)
    ⚽ She demonstrated her own React-like
    framework built on top of Opal
    ⚽ That can share same Ruby code between
    Rails and the frontend

    View full-size slide

  130. Web Programming

    View full-size slide

  131. Web Programming with
    Ruby
    ⚽ I'm sure majority of you here use Ruby for
    this
    ⚽ Rails programmer?

    View full-size slide

  132. Rails
    ⚽ Rails is still great
    ⚽ And so Rails is great in Ruby conferences

    View full-size slide

  133. In Fact, We Had Many Good Talks
    About Rails at RubyConf Brasil 2016

    View full-size slide

  134. Rails in RubyKaigi 2016

    View full-size slide

  135. Rails in RubyKaigi 2016
    ⚽ (none)

    View full-size slide

  136. OMG! There Were NO Rails
    Talk at RubyKaigi This Year

    View full-size slide

  137. Why No Rails Talk?
    ⚽ RubyKaigi may accept Rails talks if they
    are as technically interesting (for me) as
    other Ruby talks
    ⚽ But we just didn't get none of such
    proposal

    View full-size slide

  138. My Recent Concern on Rails
    ⚽ Framework performance

    View full-size slide

  139. My Presentation at RailsConf
    This Year
    ⚽ "3x Rails"

    View full-size slide

  140. 3x Rails
    ⚽ https://speakerdeck.com/a_matsuda/3x-
    rails
    ⚽ At RailsConf 2016

    View full-size slide

  141. BTW at RailsConf This Year,

    I Got the RubyHero Award!

    View full-size slide

  142. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer
    ⚽ A Ruby hero

    View full-size slide

  143. At That Presentation, I Revealed
    Some Ideas to Make Rails Faster
    ⚽ Some of them are already implemented or
    PRed

    View full-size slide

  144. For Example
    ⚽ Unicode on Rails
    ⚽ ActiveSupport::TimeWithZone speed up
    ⚽ AV Template Resolver

    View full-size slide

  145. Unicode on Rails
    ⚽ As I introduced earlier in this talk, Ruby's
    built-in Unicode treatment is being improved
    by Martin-sensei
    ⚽ Rails also has its own Unicode module
    ⚽ Can't we unify them?

    View full-size slide

  146. PRs
    ⚽ https://github.com/rails/rails/pull/
    26402
    ⚽ https://github.com/rails/rails/pull/
    26403 (withdrawn)

    View full-size slide

  147. My Future Plans on Rails
    ⚽ I'll work on these perf things after this
    conference

    View full-size slide

  148. I Said, "I'll Work", But...

    View full-size slide

  149. Rails Is Not Actually My
    "Work"
    ⚽ I'm not paid

    View full-size slide

  150. I'm In Fact Just a Hobby
    Rails Committer

    View full-size slide

  151. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer
    ⚽ A Ruby hero
    ⚽ A Rails committer

    View full-size slide

  152. Another Hobby of Mine
    ⚽ Creating Rails plugins

    View full-size slide

  153. I Authored
    ⚽ kaminari
    ⚽ active_decorator
    ⚽ action_args

    View full-size slide

  154. I Authored
    ⚽ stateful_enum
    ⚽ motorhead
    ⚽ database_rewinder
    ⚽ jb
    ⚽ erd
    ⚽ i18n_generators
    ⚽ html5_validators
    ⚽ hocus_pocus
    ⚽ traceroute
    ⚽ ...

    View full-size slide

  155. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer
    ⚽ A Ruby hero
    ⚽ A Rails committer
    ⚽ A Rails plugin author

    View full-size slide

  156. Kaminari ⚡

    View full-size slide

  157. I'm Sorry I'm Terribly Bad at
    Maintaining Gems
    ⚽ But I guess we're pretty close to 1.0!

    View full-size slide

  158. Plans for Kaminari 1.0
    ⚽ Off topic for today's talk
    ⚽ Maybe I'll talk about this at another
    conference

    View full-size slide

  159. Anyway,
    ⚽ I'm having fun with organizing Ruby events
    ⚽ I'm having fun with hacking Rails
    ⚽ I make money with consulting Ruby/Rails
    ⚽ And I'm happy with that :)

    View full-size slide

  160. I'm Just a Rails Programmer
    Now
    ⚽ But it's so exciting to see how people use
    Ruby for other things

    View full-size slide

  161. Ruby Is Still Improving
    ⚽ Ruby is still expanding its limit

    View full-size slide

  162. Sure, Ruby Is Not the Only
    Tool to Do it
    ⚽ There're alternatives
    ⚽ As we're seeing in this conference

    View full-size slide

  163. Elixir Is Actually Becoming
    Popular in Japan

    View full-size slide

  164. ElixirKaigi
    ⚽ Back in 2013
    ⚽ We invited José to RubyKaigi 2013
    ⚽ Then Asakusa.rb hosted an Elixir event
    named "ElixirKaigi"

    View full-size slide

  165. Asakusa.rb
    ⚽ A Rubyists meetup in Tokyo
    ⚽ Since 2008
    ⚽ Meet up every Tuesday (just had 375th meetup this week)
    ⚽ Don't forget to visit us when you're coming to Japan!
    ⚽ Founded by

    View full-size slide

  166. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer
    ⚽ A Ruby hero
    ⚽ A Rails committer
    ⚽ A Rails plugin author
    ⚽ Founder of Asakusa.rb

    View full-size slide

  167. The Elixir Book
    ⚽ ko1 (the Ruby VM author) and his wife
    just translated Dave's Elixir book into
    Japanese

    View full-size slide

  168. The Elixir Book
    ko1

    View full-size slide

  169. Elixir Is Great
    ⚽ But I don't think Elixir could/should
    defeat Ruby

    View full-size slide

  170. I'm Not Telling You to Stop
    Learning New Things
    ⚽ Of course we should never stop learning
    new things
    ⚽ Even the Ruby VM author is learning a lot
    from Elixir

    View full-size slide

  171. But, Please Keep in Mind
    That
    ⚽ We're not enemies
    ⚽ You don't have to quit Ruby to learn Elixir

    View full-size slide

  172. We're Friends!
    ⚽ Some people are working on Elixir to make
    the world better
    ⚽ Some other people are working on Ruby to
    make the world better
    ⚽ This is a lovely situation!

    View full-size slide

  173. It's Really Happy to See Those
    Ruby Children Are Growing
    ⚽ Ruby can learn from them
    ⚽ Thank you for inspiring Ruby!

    View full-size slide

  174. We Still Believe That

    Ruby Can Do it Better

    View full-size slide

  175. Why Not Ruby?
    ⚽ Why don't you just keep using Ruby?
    ⚽ Can you think of any reason that you don't
    choose Ruby?

    View full-size slide

  176. Speed?
    ⚽ Because Ruby is considered slow?

    View full-size slide

  177. Speed
    ⚽ Ruby 3x3

    View full-size slide

  178. Speed
    ⚽ No problem! Ruby is soon getting 3x
    faster!

    View full-size slide

  179. Concurrency?
    ⚽ Because Ruby doesn't have rich support
    for concurrent programming?

    View full-size slide

  180. Concurrency
    ⚽ "Guild"

    View full-size slide

  181. Concurrency
    ⚽ This should be nicely resolved in Ruby 3!

    View full-size slide

  182. Types?
    ⚽ Because Ruby cannot deal with types?

    View full-size slide

  183. Types
    ⚽ Matz's "soft typing"

    View full-size slide

  184. Types
    ⚽ Matz has some plan on improving the
    Ruby type system!

    View full-size slide

  185. Library / Ecosystem?
    ⚽ Because Ruby has no good libraries
    outside of the Rails ecosystem?

    View full-size slide

  186. Library / Ecosystem
    ⚽ People are eagerly working on them!
    ⚽ Let's do this together!

    View full-size slide

  187. Why Not Ruby?
    ⚽ There's really no reason "why not Ruby"!

    View full-size slide

  188. Today's Topic
    ⚽ Why Ruby?

    View full-size slide

  189. Because
    ⚽ I see that much people are having fun
    with Ruby!

    View full-size slide

  190. People Are Having Fun

    with Ruby!
    ⚽ Maybe because Ruby is essentially fun!

    View full-size slide

  191. Ruby's Design Principle
    ⚽ "Ruby is designed to make programmers
    happy" - Matz

    View full-size slide

  192. Ruby Made My Life as a
    Programmer Happy
    ⚽ No other programming language did such
    a thing to me

    View full-size slide

  193. Ruby Made Me Friends

    View full-size slide

  194. And Ruby Brought Me to
    Brasil
    ⚽ Thank you Fabio for inviting me!

    View full-size slide

  195. Ruby Changed My Life

    This Way

    View full-size slide

  196. I Believe in Ruby's Power
    ⚽ Power to change people
    ⚽ Power to make the world a better place

    View full-size slide

  197. Why (Still) Ruby?

    View full-size slide

  198. Why (Still) Ruby?
    ⚽ Ruby is still evolving
    ⚽ Ruby has Rails
    ⚽ The Ruby community
    ⚽ Fun of programming

    View full-size slide

  199. Ruby Is Still Evolving
    ⚽ Getting faster
    ⚽ New features

    View full-size slide

  200. Ruby Has Rails
    ⚽ And no other language has Rails
    ⚽ Expanding Rubyism to the web world
    ⚽ A great tool to change your code to

    View full-size slide

  201. The Ruby Community
    ⚽ We are nice! (MINASWAN)
    ⚽ Ruby brought social coding to us
    ⚽ #rubyfriends
    ⚽ Amazing offline events (like RubyKaigi, RubyConf Brasil)
    ⚽ Strong ecosystem

    View full-size slide

  202. Fun of Programming
    ⚽ Playing with Ruby is fun
    ⚽ Ruby usage is expanding
    ⚽ So,

    View full-size slide

  203. Fun of Programming
    ⚽ Playing with Ruby is fun
    ⚽ Ruby usage is expanding
    ⚽ Fun of Programming is expanding!

    View full-size slide

  204. Keep Having Fun with Ruby!
    ⚽ Enjoy yourself being a Rubyist!

    View full-size slide

  205. Why (Still) Ruby?
    ⚽ Ruby is still evolving ⤴
    ⚽ Ruby has Rails
    ⚽ The Ruby community
    ⚽ Fun of programming /

    View full-size slide

  206. Me
    ⚽ Akira Matsuda
    ⚽ Chief organizer of RubyKaigi
    ⚽ A Ruby committer
    ⚽ A Ruby hero
    ⚽ A Rails committer
    ⚽ A Rails plugin author
    ⚽ Founder of Asakusa.rb
    ⚽ https://github.com/amatsuda
    ⚽ https://twitter.com/a_matsuda

    View full-size slide