Keynote, RubyConf indonesia 2017
12 Years Of Ruby@ponnappa
View Slide
this talk is also about beauty(and magic)
but that’s for the end
`whoami`formally, Chonira Ponnappafully, Sidu Ponnappa Chonira Kariappausually, Sidu
LOGO 1991 GWBASIC 1994QBASIC 1998 C 1999 C++ 1999Java 2002C# 2004Javascript 2005Ruby 2005
started working in 2005
5 startups, 2 jobs, 1 exit
at GO-JEK since 2015managing director, GO-JEK India 2015-2016head, data engineering 2016-nowhead, global talent acquisition 2017-now
developerfounderteachercommunity organiser sales guymarketing guyhr guyrecruiterproject managerproduct manager
tl;dri’ve done a bunch of stuff in 12 years working, and most of it involvedRuby
2005-2008activ money and activ mobsruby 1.8.3/rails 0.11
jsp/struts/hibernate vs railsthe first aha momentconvention > configurationmvcactiverecord pattern as a lib!reloading! no more server restarts.
unit tests as first class citizensbut not TDD, sadly
controller tests ftw!functional tests for request/response endpointsfilled the gap between unit tests and browser automation
automate everythingrake + generators
ruby was actually slow backthen1.8.x was very slowmulti process deploymentsnginx+lighttpdjust restart the process!
and i learned rails first(which is a bad idea)
minswaneasiest communitykindest IRC channelsESR’s smart questions FAQ not necessary for survival
2007-nowBRUG
india’s first major RUG10 years old this yearjust under 1000 members
my first large communityexperience10 years old this yearjust under 1000 members
2007-2009rackspace blackboxearly private cloud implementationgenesis of openstackmicroservicesRESTruby 1.8.7/rails 2.x
rails 2.xREST!activeresource (omg, in hindsight it sucked)activerecord query cachejson serialization support (phew)plugins (awkward!)
phusion passenger + REEfinally, a not so painful server setupfork friendly ruby 1.8.x implementationbetter GCeasier on memory
importance of specsruby codebases decay fastmigrations from 2.0.x to 2.1.x/2.2.xmuch painspecs saved the day
backward compatibility #failplugins ecosystem like js lib ecosystem is today
microservicesrails 2.x made it easy
don’t metaprogramcool 2 edged swordmore likely to cut me than the problem :)definitely don’t override Object#responds_to? :D
rjsserver side rendered jsanother omg #failridiculous amounts of couplingso brittle!helped evolve my understand of separation of concerns betweenfrontend and backend
did i say REST?oops, but it was (and is) flawedno hypermedia controlsa model isn’t a resourceactually, a controller represents a resouncelevel 1 on richardson maturity model
still no bundler :(plugins, grrrtried sharing common components across serviceswhattay nightmare
2008-nowgithub.com/kaiwren/wrestfluent REST client lib
no good optionsactiveresourcenet/httplibcurlhttparty
activeresourcebolted activerecord semantics over HTTPmapped HTTP verbs to CRUD :/REST != CRUDJUST DID NOT FIT
net/httparrgh that apislow and unreliableno keep alive supporttotally meh
libcurlmany rb wrappersdifferent apisbut fast and the only sane choice for prod
httpartyterse apibut everything is a class method :/no client caching
so, results of diymulti-runtime support (mri, rbx, jruby, ironruby)(though some are since retired)transparent switch between net/http & libcurlfocus on the URI & serialization, not CRUDobject oriented & fully specceddev friendly api designed for use with REST endpoints
in use across GO-JEKcurrently handling millions of RPM
2010-nowrubyconf india400+ participants annually
first conferencelearned from pycon indiathank you, bang-pypersstill going stronggenesis of the emerging technology trust
led to the ettmy first non-profitraises > $100k annuallynow runs 3 annual open source conferecesfunds students contributing to ossconnects students to oss mentorsthank you satish, gautam, niranjan, ajey
2010c42 engineeringboutique ruby/rails consultancyself funded product company$1M run rate in 18 months
bundler + rbenv =dependeciesmulti rubyphew
2010rubyconf x, new orleansfirst talk at the main rubyconf
open mindedlook beyond rubyno egominswan again! such nice people.
2011github.com/rspec/rspec-mocksany_instance
because speccing railscontrollers is a painobjects that are create in a controller or libnot everyone does DImocking non-public apis by reading source is scarylong, implementation bound mock chain
incredible learningthank you, dchelimskyrefactored my PRs, then explained them to me(paitiently!)implementation bound specs anti-pattern
2011-2013rubymonk.comtop ruby e-learning product(still live)ruby 1.9.2/rails 3.x
thank you, matz!
proved beauty mattersthe aesthetic made all the differenceboth visual and narrative stylelaunched at rubyconf xi8 hours on HN top 324 hours on HN homepage
empathytaught me to teach through storiesobjects, blocks, message passing
still popular80-90% of new rubyists use it at some point
a labour of lovebut still, no munny :/learned the importance of businessmake it and they will pay is a fallacy
2012-nowdev bootcamptaught in ruby
consistency of languageruby is more consistent than most popular choicesmakes it so easy to teach inone of my favourite teaching languages
2015github.com/opal/opalruby to js transpiler
dream of same language onfrontend and backendand that language wasn’t js :)
redsongithub.com/kaiwren/redsonmy usual obsession with ui and ui frameworksopal based client side component framework for RoRonly a poc, because gojek happened
in conclusion(and with a healthy dose of hindsight)
when i startedcode was a puzzle that needed to be solved
1991-2005: computer > memy focus was the computer’s productivity
BASIC/C/C++/Javamaking the computer do something was the goal
nothing magical about itit was just hard
what is magic?write some wordsperform certain ritualsmakes the impossible possible
that sounds like writing code!it was years before i realised writing code is magic
beauty mattersin code, beauty is utilitarianbeauty makes magic happen
utilitarian beauty?easy to understandeasy to changeeasy to scaleincreasingly magical
ruby made me see thisruby was the first language that felt beautifulthen i discovered there are othersseek them, it’s worth it
this was about beautyit was all about making more beautiful things
always build beautiful thingsthey just work bettermuch better
terima kasih!@ponnappa