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 Slide

  2. Me
    ⚽ Akira Matsuda

    View Slide

  3. OMG! I'm Doing the

    Closing Keynote!
    ⚽ It's a great honor!

    View Slide

  4. How Was RubyConf Brasil?

    View Slide

  5. How Was RubyConf Brasil?

    View Slide

  6. How Were the Talks?

    View Slide

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

    View Slide

  8. We Had Some Amazing Talks
    About Elixir / Crystal

    View Slide

  9. We Had Some Amazing Talks
    About Elixir / Crystal

    View Slide

  10. But,

    View Slide

  11. This Event is_a RubyConf
    ⚽ According to its name

    View Slide

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

    View Slide

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

    View Slide

  14. Because Ruby is Matured?

    So There's No New Topic Anymore?

    View Slide

  15. Because People Are Losing Their Interest in
    Ruby?

    And Shifting to Newer Languages?

    View Slide

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

    View Slide

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

    View Slide

  18. People Are Still Enthusiastically
    Talking About Ruby

    View Slide

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

    View Slide

  20. RubyKaigi

    View Slide

  21. 2.weeks.ago

    View Slide

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

    View Slide

  23. The Organizing Team

    View Slide

  24. The Organizing Team
    Me

    View Slide

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

    View Slide

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

    View Slide

  27. RubyKaigi.is_a International
    Conference

    View Slide

  28. RubyKaigi.attendees

    .map(&:from)

    View Slide

  29. Brasil?

    View Slide

  30. 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 Slide

  31. RubyKaigi

    View Slide

  32. 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 Slide

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

    View Slide

  34. "Ruby Committers vs The
    World"

    View Slide

  35. "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 Slide

  36. "Ruby Committers vs The
    World"
    Me

    View Slide

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

    View Slide

  38. Ruby

    View Slide

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

    View Slide

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

    View Slide

  41. No!

    View Slide

  42. There're So Much Room for

    Feature & Performance Improvements

    View Slide

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

    View Slide

  44. Ruby 2.4 New Features

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. 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 Slide

  53. Plans for Ruby 3

    View Slide

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

    View Slide

  55. Matz's Original "Typing System"

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

    View Slide

  56. "Soft Typing"

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  61. 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 Slide

  62. Ruby 3x3

    View Slide

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

    View Slide

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

    View Slide

  65. The est Talk Proposal

    I've Ever Seen

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. naruse
    ⚽ Release manager of Ruby 2.4

    View Slide

  73. 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 Slide

  74. 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 Slide

  75. 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 Slide

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

    View Slide

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

    View Slide

  78. Maintaining Stdlibs is Hard

    View Slide

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

    View Slide

  80. 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 Slide

  81. Number of Stdlibs
    ⚽ Very roughly counted by


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

    View Slide

  82. 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 Slide

  83. Number of Stdlibs
    ⚽ Gradually decreasing in recent versions

    View Slide

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

    View Slide

  85. What Were Gemified in 2.4
    ⚽ Tk
    ⚽ XMLRPC

    View Slide

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

    View Slide

  87. Who Uses Tk Now?

    View Slide

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

    View Slide

  89. 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 Slide

  90. Cons
    ⚽ Those who uses Tk has to

    `gem install tk`

    before using

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  95. Let's Go Back to RubyKaigi

    View Slide

  96. These Talks Were About
    Developing Ruby

    View Slide

  97. For What Do We Use Ruby?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  101. Infra as a Code
    ⚽ Ruby DSL

    View Slide

  102. Container

    View Slide

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

    View Slide

  104. Systems Programming

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  109. Embedded Devices x mruby

    View Slide

  110. 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 Slide

  111. 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 Slide

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

    View Slide

  113. 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 Slide

  114. Games

    View Slide

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

    View Slide

  116. 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 Slide

  117. Nintendo Sponsors
    RubyKaigi!

    View Slide

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

    View Slide

  119. 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 Slide

  120. Benchmark

    View Slide

  121. 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 Slide

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

    View Slide

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

    View Slide

  124. Quine Relay

    View Slide

  125. 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 Slide

  126. mame at RubyKaigi 2015

    View Slide

  127. 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 Slide

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

    View Slide

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

    View Slide

  130. Actually,

    View Slide

  131. Ruby Can Also Be Used for
    Serious Projects

    View Slide

  132. Science x Ruby

    View Slide

  133. 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 Slide

  134. @masa16tanaka
    ⚽ The autor of NArray since 1999

    View Slide

  135. 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 Slide

  136. 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 Slide

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

    View Slide

  138. Another Alternative Ruby
    Implementation

    View Slide

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

    View Slide

  140. Yet Another Ruby
    Implementation
    ⚽ Opal

    View Slide

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

    View Slide

  142. 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 Slide

  143. Web Programming

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  147. Rails in RubyKaigi 2016

    View Slide

  148. Rails in RubyKaigi 2016
    ⚽ (none)

    View Slide

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

    View Slide

  150. 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 Slide

  151. My Recent Concern on Rails
    ⚽ Framework performance

    View Slide

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

    View Slide

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

    View Slide

  154. BTW at RailsConf This Year,

    I Got the RubyHero Award!

    View Slide

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

    View Slide

  156. Anyway,

    View Slide

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

    View Slide

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

    View Slide

  159. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  166. Another Hobby of Mine
    ⚽ Creating Rails plugins

    View Slide

  167. I Authored
    ⚽ kaminari
    ⚽ active_decorator
    ⚽ action_args

    View Slide

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

    View Slide

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

    View Slide

  170. Kaminari ⚡

    View Slide

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

    View Slide

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

    View Slide

  173. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

  177. Elixir Is Actually Becoming
    Popular in Japan

    View Slide

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

    View Slide

  179. Asakusa.rb

    View Slide

  180. 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 Slide

  181. 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 Slide

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

    View Slide

  183. The Elixir Book
    ko1

    View Slide

  184. Anyway,

    View Slide

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

    View Slide

  186. 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 Slide

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

    View Slide

  188. 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 Slide

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

    View Slide

  190. However,

    View Slide

  191. We Still Believe That

    Ruby Can Do it Better

    View Slide

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

    View Slide

  193. Speed?
    ⚽ Because Ruby is considered slow?

    View Slide

  194. Speed
    ⚽ Ruby 3x3

    View Slide

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

    View Slide

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

    View Slide

  197. Concurrency
    ⚽ "Guild"

    View Slide

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

    View Slide

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

    View Slide

  200. Types
    ⚽ Matz's "soft typing"

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  205. Today's Topic
    ⚽ Why Ruby?

    View Slide

  206. Why Ruby?

    View Slide

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

    View Slide

  208. People Are Having Fun

    with Ruby!
    ⚽ Maybe because Ruby is essentially fun!

    View Slide

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

    View Slide

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

    View Slide

  211. Ruby Made Me Friends

    View Slide

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

    View Slide

  213. Ruby Changed My Life

    This Way

    View Slide

  214. So,

    View Slide

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

    View Slide

  216. Why (Still) Ruby?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  225. 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 Slide