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

12 Years of Ruby

12 Years of Ruby

Keynote, RubyConf indonesia 2017


Sidu Ponnappa

October 06, 2017

More Decks by Sidu Ponnappa

Other Decks in Programming


  1. 12 Years Of Ruby @ponnappa

  2. this talk is also about beauty (and magic)

  3. but that’s for the end

  4. `whoami` formally, Chonira Ponnappa fully, Sidu Ponnappa Chonira Kariappa usually,

  5. LOGO 1991 GWBASIC 1994 QBASIC 1998 C 1999 C++ 1999

    Java 2002 C# 2004 Javascript 2005 Ruby 2005
  6. started working in 2005

  7. 5 startups, 2 jobs, 1 exit

  8. at GO-JEK since 2015 managing director, GO-JEK India 2015-2016 head,

    data engineering 2016-now head, global talent acquisition 2017-now
  9. developer founder teacher community organiser sales guy marketing guy hr

    guy recruiter project manager product manager
  10. tl;dr i’ve done a bunch of stuff in 12 years

    working, and most of it involved Ruby
  11. developer founder teacher community organiser sales guy marketing guy hr

    guy recruiter project manager product manager
  12. 2005-2008 activ money and activ mobs ruby 1.8.3/rails 0.11

  13. jsp/struts/hibernate vs rails the first aha moment convention > configuration

    mvc activerecord pattern as a lib! reloading! no more server restarts.
  14. unit tests as first class citizens but not TDD, sadly

  15. controller tests ftw! functional tests for request/response endpoints filled the

    gap between unit tests and browser automation
  16. automate everything rake + generators

  17. ruby was actually slow back then 1.8.x was very slow

    multi process deployments nginx+lighttpd just restart the process!
  18. and i learned rails first (which is a bad idea)

  19. minswan easiest community kindest IRC channels ESR’s smart questions FAQ

    not necessary for survival
  20. 2007-now BRUG

  21. india’s first major RUG 10 years old this year just

    under 1000 members
  22. my first large community experience 10 years old this year

    just under 1000 members
  23. 2007-2009 rackspace blackbox early private cloud implementation genesis of openstack

    microservices REST ruby 1.8.7/rails 2.x
  24. rails 2.x REST! activeresource (omg, in hindsight it sucked) activerecord

    query cache json serialization support (phew) plugins (awkward!)
  25. phusion passenger + REE finally, a not so painful server

    setup fork friendly ruby 1.8.x implementation better GC easier on memory
  26. importance of specs ruby codebases decay fast migrations from 2.0.x

    to 2.1.x/2.2.x much pain specs saved the day
  27. backward compatibility #fail plugins ecosystem like js lib ecosystem is

  28. microservices rails 2.x made it easy

  29. don’t metaprogram cool 2 edged sword more likely to cut

    me than the problem :) definitely don’t override Object#responds_to? :D
  30. rjs server side rendered js another omg #fail ridiculous amounts

    of coupling so brittle! helped evolve my understand of separation of concerns between frontend and backend
  31. did i say REST? oops, but it was (and is)

    flawed no hypermedia controls a model isn’t a resource actually, a controller represents a resounce level 1 on richardson maturity model
  32. still no bundler :( plugins, grrr tried sharing common components

    across services whattay nightmare
  33. 2008-now github.com/kaiwren/wrest fluent REST client lib

  34. no good options activeresource net/http libcurl httparty

  35. activeresource bolted activerecord semantics over HTTP mapped HTTP verbs to

  36. net/http arrgh that api slow and unreliable no keep alive

    support totally meh
  37. libcurl many rb wrappers different apis but fast and the

    only sane choice for prod
  38. httparty terse api but everything is a class method :/

    no client caching
  39. so, results of diy multi-runtime support (mri, rbx, jruby, ironruby)

    (though some are since retired) transparent switch between net/http & libcurl focus on the URI & serialization, not CRUD object oriented & fully specced dev friendly api designed for use with REST endpoints
  40. None
  41. in use across GO-JEK currently handling millions of RPM

  42. 2010-now rubyconf india 400+ participants annually

  43. first conference learned from pycon india thank you, bang-pypers still

    going strong genesis of the emerging technology trust
  44. led to the ett my first non-profit raises > $100k

    annually now runs 3 annual open source confereces funds students contributing to oss connects students to oss mentors thank you satish, gautam, niranjan, ajey
  45. 2010 c42 engineering boutique ruby/rails consultancy self funded product company

    $1M run rate in 18 months
  46. bundler + rbenv = dependecies multi ruby phew

  47. 2010 rubyconf x, new orleans first talk at the main

  48. open minded look beyond ruby no ego minswan again! such

    nice people.
  49. 2011 github.com/rspec/rspec-mocks any_instance

  50. because speccing rails controllers is a pain objects that are

    create in a controller or lib not everyone does DI mocking non-public apis by reading source is scary long, implementation bound mock chain
  51. incredible learning thank you, dchelimsky refactored my PRs, then explained

    them to me (paitiently!) implementation bound specs anti-pattern
  52. 2011-2013 rubymonk.com top ruby e-learning product (still live) ruby 1.9.2/rails

  53. thank you, matz!

  54. proved beauty matters the aesthetic made all the difference both

    visual and narrative style launched at rubyconf xi 8 hours on HN top 3 24 hours on HN homepage
  55. empathy taught me to teach through stories objects, blocks, message

  56. still popular 80-90% of new rubyists use it at some

  57. a labour of love but still, no munny :/ learned

    the importance of business make it and they will pay is a fallacy
  58. 2012-now dev bootcamp taught in ruby

  59. consistency of language ruby is more consistent than most popular

    choices makes it so easy to teach in one of my favourite teaching languages
  60. 2015 github.com/opal/opal ruby to js transpiler

  61. dream of same language on frontend and backend and that

    language wasn’t js :)
  62. redson github.com/kaiwren/redson my usual obsession with ui and ui frameworks

    opal based client side component framework for RoR only a poc, because gojek happened
  63. in conclusion (and with a healthy dose of hindsight)

  64. when i started code was a puzzle that needed to

    be solved
  65. 1991-2005: computer > me my focus was the computer’s productivity

  66. BASIC/C/C++/Java making the computer do something was the goal

  67. nothing magical about it it was just hard

  68. what is magic? write some words perform certain rituals makes

    the impossible possible
  69. that sounds like writing code! it was years before i

    realised writing code is magic
  70. beauty matters in code, beauty is utilitarian beauty makes magic

  71. utilitarian beauty? easy to understand easy to change easy to

    scale increasingly magical
  72. ruby made me see this ruby was the first language

    that felt beautiful then i discovered there are others seek them, it’s worth it
  73. this was about beauty it was all about making more

    beautiful things
  74. always build beautiful things they just work better much better

  75. terima kasih! @ponnappa