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

Why (Still) Ruby?

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

76a777ff80f30bd3b390e275cce625bc?s=128

Akira Matsuda

September 24, 2016
Tweet

Transcript

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

  2. Me ⚽ Akira Matsuda

  3. OMG! I'm Doing the
 Closing Keynote! ⚽ It's a great

    honor!
  4. How Was RubyConf Brasil?

  5. How Was RubyConf Brasil?

  6. How Were the Talks?

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

    ⚽ etc.
  8. We Had Some Amazing Talks About Elixir / Crystal

  9. We Had Some Amazing Talks About Elixir / Crystal

  10. But,

  11. This Event is_a RubyConf ⚽ According to its name

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

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

  14. Because Ruby is Matured?
 So There's No New Topic Anymore?

  15. Because People Are Losing Their Interest in Ruby?
 And Shifting

    to Newer Languages?
  16. I Don't Think So ⚽ Ruby has many new topics

    that you should know ⚽ People are still interested in these stories
  17. Let Me Show You an Example of a Conference That

  18. People Are Still Enthusiastically Talking About Ruby

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

  20. RubyKaigi

  21. 2.weeks.ago

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

  23. The Organizing Team

  24. The Organizing Team Me

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

  26. RubyKaigi ⚽ A purely technical international conference ⚽ Deeply focused

    on Ruby language ⚽ Held in Japan annualy
  27. RubyKaigi.is_a International Conference

  28. RubyKaigi.attendees
 .map(&:from)

  29. Brasil?

  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?
  31. RubyKaigi

  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
  33. "Ruby Committers vs The World" ⚽ And, we put them

    all together on stage!
  34. "Ruby Committers vs The World"

  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
  36. "Ruby Committers vs The World" Me

  37. Me ⚽ Akira Matsuda ⚽ Chief organizer of RubyKaigi ⚽

    A Ruby committer
  38. Ruby

  39. Ruby Is Pretty Mature ⚽ 23 years old. Not a

    kid anymore ⚽ Conquered the web world
  40. Is Ruby Language Mature Enough? ⚽ Is Ruby "Done" already?

  41. No!

  42. There're So Much Room for
 Feature & Performance Improvements

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

    Features ⚽ Ruby 3.0 Plans
  44. Ruby 2.4 New Features

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

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

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

  48. Slides Are Linked from the Official Site ⚽ http://rubykaigi.org/2016/schedule/ ⚽

    Please check them out if you want to know more details
  49. Improvements on Unicode Case Conversion (duerst) ⚽ http://rubykaigi.org/2016/ presentations/duerst.html

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

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

  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
  53. Plans for Ruby 3

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

  55. Matz's Original "Typing System"
 (͖Ύ͏Γվ) http://www.itmedia.co.jp/enterprise/articles/0704/24/news006_2.html

  56. "Soft Typing"

  57. "You will see the future of the type system in

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

  59. ko1 ⚽ The author of current Ruby VM ⚽ Full-time

    Ruby committer at Heroku Inc.
  60. "Guild" ⚽ Wraps Ruby Thread manipulation ⚽ Influenced by recent

    languages, libraries with strong concurrency system ⚽ His answer to them
  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
  62. Ruby 3x3

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

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

  65. The est Talk Proposal
 I've Ever Seen

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

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

  68. Companies That've Been Supporting Ruby Development ⚽ NaCl (supporting Matz:

    since 1997) ⚽ Heroku (Matz, ko1, nobu: since 2011-2012) ⚽ MoneyForward (shyouhei: since 2015)
  69. The Deoptimization Patch ⚽ This patch is his first output

    from MoneyForward ⚽ Will hopefully be merged to 2.4 (?)
  70. Slides Are Linked from the Official Site ⚽ http://rubykaigi.org/2016/schedule/ ⚽

    Please check them out if you want to know more details
  71. Dive into CRuby (naruse) ⚽ Closing keynote of RubyKaigi 2016

  72. naruse ⚽ Release manager of Ruby 2.4

  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
  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
  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
  76. Also, He Stated That ⚽ We can improve not only

    the language core such as VM, but also stdlibs
  77. Ingredients of the Ruby Repo ⚽ The language core ⚽

    stdlibs as C extensions ⚽ stdlibs in Ruby
  78. Maintaining Stdlibs is Hard

  79. Stdlibs Tend to Easily Become Unmaintained ⚽ OpenSSL: No maintainer

    until rhe joined ruby-core this year ⚽ WEBRick: Nobody actively maintains
  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
  81. Number of Stdlibs ⚽ Very roughly counted by
 
 %

    cat <(ls lib) <(ls ext) | sed 's/\.rb$//' | sort -u | wc -l
  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 ⤵
  83. Number of Stdlibs ⚽ Gradually decreasing in recent versions

  84. Gemifying Stdlibs ⚽ Recent trend is to "gemify" stdlibs ⚽

    And extract each individual repo under https://github.com/ruby/
  85. What Were Gemified in 2.4 ⚽ Tk ⚽ XMLRPC

  86. Ruby/Tk ⚽ The oldest GUI library in Ruby (since the

    last century!) ⚽ Cross Platform ⚽ Initially created by Matz ⚽ Being maintained by nagai
  87. Who Uses Tk Now?

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

  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
  90. Cons ⚽ Those who uses Tk has to
 `gem install

    tk`
 before using
  91. We're Extracting Stdlibs to Gems ⚽ So everyone can easily

    contribute ⚽ IMO this is the main purpose
  92. Future Plans ⚽ WEBRick? ⚽ OpenSSL? ⚽ Anything in the

    stdlibs list
  93. ruby/* gems Are Looking for Maintainers / Contributors ⚽ Patches

    are welcome!
  94. And Ruby Stdlibs Are Also Looking for Maintainers ⚽ Send

    us your patches!
  95. Let's Go Back to RubyKaigi

  96. These Talks Were About Developing Ruby

  97. For What Do We Use Ruby?

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

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

    of IRB
  100. Infra as a Code ⚽ Chef / Puppet / Itamae

    ⚽ Serverspec ⚽ Hashicorp products ⚽ winebarrel wares
  101. Infra as a Code ⚽ Ruby DSL

  102. Container

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

  104. Systems Programming

  105. Hijacking syscalls with (m)ruby (@franckverrot) ⚽ http://rubykaigi.org/2016/ presentations/franckverrot.html ⚽ An

    experiment on overriding Unix syscalls using mruby
  106. Building maintainable command- line tools with mruby (drbrain) ⚽ http://rubykaigi.org/2016/

    presentations/drbrain.html ⚽ mruby & mruby-cli
  107. mruby ⚽ People talk about this a lot at RubyKaigi

  108. What is mruby? ⚽ Matz's new toy ⚽ Yet another

    Ruby implementation ⚽ Lightweight ⚽ m is for "Embedded" ⚽ https://github.com/mruby/mruby
  109. Embedded Devices x mruby

  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
  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!
  112. Charming Robots (@juliancheal, 2015) ⚽ http://rubykaigi.org/2015/presentations/ juliancheal ⚽ How to

    control physical devices with Ruby (not mruby) ⚽ With tons of demos
  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
  114. Games

  115. Game Development + Ruby = Happiness? (@amirrajan) ⚽ http://rubykaigi.org/2016/ presentations/amirrajan.html

    ⚽ iOS Game: A Dark Room ⚽ Game programming with Ruby
  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!
  117. Nintendo Sponsors RubyKaigi!

  118. NES Emulator Written in Ruby ⚽ Optcarrot ⚽ Created by

    mame ⚽ https://github.com/mame/optcarrot ⚽ He created this for benchmarking ruby implementations
  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
  120. Benchmark

  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!
  122. Purpose of This Project ⚽ To check if we could

    achieve "Ruby 3x3"
  123. mame ⚽ Ruby committer ⚽ Ruby 2.0 release manager ⚽

    Very well known by his another mind- blowing masterpiece
  124. Quine Relay

  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 .............
  126. mame at RubyKaigi 2015

  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
  128. You See, We're Having Fun with Ruby!

  129. Playing with Ruby is Fun! ⚽ Ruby gives us joy

    of programming ⚽ We're sharing such fun at the events
  130. Actually,

  131. Ruby Can Also Be Used for Serious Projects

  132. Science x Ruby

  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
  134. @masa16tanaka ⚽ The autor of NArray since 1999

  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
  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
  137. mrkn ⚽ A Ruby committer ⚽ Mainteiner of BigDecimal which

    was gemified last year (2.3)
  138. Another Alternative Ruby Implementation

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

    presentations/tom_enebo.html ⚽ JRuby 9000
  140. Yet Another Ruby Implementation ⚽ Opal

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

  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
  143. Web Programming

  144. Web Programming with Ruby ⚽ I'm sure majority of you

    here use Ruby for this ⚽ Rails programmer?
  145. Rails ⚽ Rails is still great ⚽ And so Rails

    is great in Ruby conferences
  146. In Fact, We Had Many Good Talks About Rails at

    RubyConf Brasil 2016
  147. Rails in RubyKaigi 2016

  148. Rails in RubyKaigi 2016 ⚽ (none)

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

  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
  151. My Recent Concern on Rails ⚽ Framework performance

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

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

  154. BTW at RailsConf This Year,
 I Got the RubyHero Award!

  155. Me ⚽ Akira Matsuda ⚽ Chief organizer of RubyKaigi ⚽

    A Ruby committer ⚽ A Ruby hero
  156. Anyway,

  157. At That Presentation, I Revealed Some Ideas to Make Rails

    Faster ⚽ Some of them are already implemented or PRed
  158. For Example ⚽ Unicode on Rails ⚽ ActiveSupport::TimeWithZone speed up

    ⚽ AV Template Resolver
  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?
  160. PRs ⚽ https://github.com/rails/rails/pull/ 26402 ⚽ https://github.com/rails/rails/pull/ 26403 (withdrawn)

  161. My Future Plans on Rails ⚽ I'll work on these

    perf things after this conference
  162. I Said, "I'll Work", But...

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

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

  165. Me ⚽ Akira Matsuda ⚽ Chief organizer of RubyKaigi ⚽

    A Ruby committer ⚽ A Ruby hero ⚽ A Rails committer
  166. Another Hobby of Mine ⚽ Creating Rails plugins

  167. I Authored ⚽ kaminari ⚽ active_decorator ⚽ action_args

  168. I Authored ⚽ stateful_enum ⚽ motorhead ⚽ database_rewinder ⚽ jb

    ⚽ erd ⚽ i18n_generators ⚽ html5_validators ⚽ hocus_pocus ⚽ traceroute ⚽ ...
  169. Me ⚽ Akira Matsuda ⚽ Chief organizer of RubyKaigi ⚽

    A Ruby committer ⚽ A Ruby hero ⚽ A Rails committer ⚽ A Rails plugin author
  170. Kaminari ⚡

  171. I'm Sorry I'm Terribly Bad at Maintaining Gems ⚽ But

    I guess we're pretty close to 1.0!
  172. Plans for Kaminari 1.0 ⚽ Off topic for today's talk

    ⚽ Maybe I'll talk about this at another conference
  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 :)
  174. I'm Just a Rails Programmer Now ⚽ But it's so

    exciting to see how people use Ruby for other things
  175. Ruby Is Still Improving ⚽ Ruby is still expanding its

    limit
  176. Sure, Ruby Is Not the Only Tool to Do it

    ⚽ There're alternatives ⚽ As we're seeing in this conference
  177. Elixir Is Actually Becoming Popular in Japan

  178. ElixirKaigi ⚽ Back in 2013 ⚽ We invited José to

    RubyKaigi 2013 ⚽ Then Asakusa.rb hosted an Elixir event named "ElixirKaigi"
  179. Asakusa.rb

  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
  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
  182. The Elixir Book ⚽ ko1 (the Ruby VM author) and

    his wife just translated Dave's Elixir book into Japanese
  183. The Elixir Book ko1

  184. Anyway,

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

    defeat Ruby
  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
  187. But, Please Keep in Mind That ⚽ We're not enemies

    ⚽ You don't have to quit Ruby to learn Elixir
  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!
  189. It's Really Happy to See Those Ruby Children Are Growing

    ⚽ Ruby can learn from them ⚽ Thank you for inspiring Ruby!
  190. However,

  191. We Still Believe That
 Ruby Can Do it Better

  192. Why Not Ruby? ⚽ Why don't you just keep using

    Ruby? ⚽ Can you think of any reason that you don't choose Ruby?
  193. Speed? ⚽ Because Ruby is considered slow?

  194. Speed ⚽ Ruby 3x3

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

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

    programming?
  197. Concurrency ⚽ "Guild"

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

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

  200. Types ⚽ Matz's "soft typing"

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

    type system!
  202. Library / Ecosystem? ⚽ Because Ruby has no good libraries

    outside of the Rails ecosystem?
  203. Library / Ecosystem ⚽ People are eagerly working on them!

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

    Ruby"!
  205. Today's Topic ⚽ Why Ruby?

  206. Why Ruby?

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

    with Ruby!
  208. People Are Having Fun
 with Ruby! ⚽ Maybe because Ruby

    is essentially fun!
  209. Ruby's Design Principle ⚽ "Ruby is designed to make programmers

    happy" - Matz
  210. Ruby Made My Life as a Programmer Happy ⚽ No

    other programming language did such a thing to me
  211. Ruby Made Me Friends

  212. And Ruby Brought Me to Brasil ⚽ Thank you Fabio

    for inviting me!
  213. Ruby Changed My Life
 This Way

  214. So,

  215. I Believe in Ruby's Power ⚽ Power to change people

    ⚽ Power to make the world a better place
  216. Why (Still) Ruby?

  217. Why (Still) Ruby? ⚽ Ruby is still evolving ⚽ Ruby

    has Rails ⚽ The Ruby community ⚽ Fun of programming
  218. Ruby Is Still Evolving ⚽ Getting faster ⚽ New features

  219. Ruby Has Rails ⚽ And no other language has Rails

    ⚽ Expanding Rubyism to the web world ⚽ A great tool to change your code to
  220. The Ruby Community ⚽ We are nice! (MINASWAN) ⚽ Ruby

    brought social coding to us ⚽ #rubyfriends ⚽ Amazing offline events (like RubyKaigi, RubyConf Brasil) ⚽ Strong ecosystem
  221. Fun of Programming ⚽ Playing with Ruby is fun ⚽

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

    Ruby usage is expanding ⚽ Fun of Programming is expanding!
  223. Keep Having Fun with Ruby! ⚽ Enjoy yourself being a

    Rubyist!
  224. Why (Still) Ruby? ⚽ Ruby is still evolving ⤴ ⚽

    Ruby has Rails ⚽ The Ruby community ⚽ Fun of programming /
  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