Slide 1

Slide 1 text

12 Years Of Ruby @ponnappa

Slide 2

Slide 2 text

this talk is also about beauty (and magic)

Slide 3

Slide 3 text

but that’s for the end

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

LOGO 1991 GWBASIC 1994 QBASIC 1998 C 1999 C++ 1999 Java 2002 C# 2004 Javascript 2005 Ruby 2005

Slide 6

Slide 6 text

started working in 2005

Slide 7

Slide 7 text

5 startups, 2 jobs, 1 exit

Slide 8

Slide 8 text

at GO-JEK since 2015 managing director, GO-JEK India 2015-2016 head, data engineering 2016-now head, global talent acquisition 2017-now

Slide 9

Slide 9 text

developer founder teacher community organiser sales guy marketing guy hr guy recruiter project manager product manager

Slide 10

Slide 10 text

tl;dr i’ve done a bunch of stuff in 12 years working, and most of it involved Ruby

Slide 11

Slide 11 text

developer founder teacher community organiser sales guy marketing guy hr guy recruiter project manager product manager

Slide 12

Slide 12 text

2005-2008 activ money and activ mobs ruby 1.8.3/rails 0.11

Slide 13

Slide 13 text

jsp/struts/hibernate vs rails the first aha moment convention > configuration mvc activerecord pattern as a lib! reloading! no more server restarts.

Slide 14

Slide 14 text

unit tests as first class citizens but not TDD, sadly

Slide 15

Slide 15 text

controller tests ftw! functional tests for request/response endpoints filled the gap between unit tests and browser automation

Slide 16

Slide 16 text

automate everything rake + generators

Slide 17

Slide 17 text

ruby was actually slow back then 1.8.x was very slow multi process deployments nginx+lighttpd just restart the process!

Slide 18

Slide 18 text

and i learned rails first (which is a bad idea)

Slide 19

Slide 19 text

minswan easiest community kindest IRC channels ESR’s smart questions FAQ not necessary for survival

Slide 20

Slide 20 text

2007-now BRUG

Slide 21

Slide 21 text

india’s first major RUG 10 years old this year just under 1000 members

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

2007-2009 rackspace blackbox early private cloud implementation genesis of openstack microservices REST ruby 1.8.7/rails 2.x

Slide 24

Slide 24 text

rails 2.x REST! activeresource (omg, in hindsight it sucked) activerecord query cache json serialization support (phew) plugins (awkward!)

Slide 25

Slide 25 text

phusion passenger + REE finally, a not so painful server setup fork friendly ruby 1.8.x implementation better GC easier on memory

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

backward compatibility #fail plugins ecosystem like js lib ecosystem is today

Slide 28

Slide 28 text

microservices rails 2.x made it easy

Slide 29

Slide 29 text

don’t metaprogram cool 2 edged sword more likely to cut me than the problem :) definitely don’t override Object#responds_to? :D

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

still no bundler :( plugins, grrr tried sharing common components across services whattay nightmare

Slide 33

Slide 33 text

2008-now github.com/kaiwren/wrest fluent REST client lib

Slide 34

Slide 34 text

no good options activeresource net/http libcurl httparty

Slide 35

Slide 35 text

activeresource bolted activerecord semantics over HTTP mapped HTTP verbs to CRUD :/ REST != CRUD JUST DID NOT FIT

Slide 36

Slide 36 text

net/http arrgh that api slow and unreliable no keep alive support totally meh

Slide 37

Slide 37 text

libcurl many rb wrappers different apis but fast and the only sane choice for prod

Slide 38

Slide 38 text

httparty terse api but everything is a class method :/ no client caching

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

in use across GO-JEK currently handling millions of RPM

Slide 42

Slide 42 text

2010-now rubyconf india 400+ participants annually

Slide 43

Slide 43 text

first conference learned from pycon india thank you, bang-pypers still going strong genesis of the emerging technology trust

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

2010 c42 engineering boutique ruby/rails consultancy self funded product company $1M run rate in 18 months

Slide 46

Slide 46 text

bundler + rbenv = dependecies multi ruby phew

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

2011 github.com/rspec/rspec-mocks any_instance

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

incredible learning thank you, dchelimsky refactored my PRs, then explained them to me (paitiently!) implementation bound specs anti-pattern

Slide 52

Slide 52 text

2011-2013 rubymonk.com top ruby e-learning product (still live) ruby 1.9.2/rails 3.x

Slide 53

Slide 53 text

thank you, matz!

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

empathy taught me to teach through stories objects, blocks, message passing

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

a labour of love but still, no munny :/ learned the importance of business make it and they will pay is a fallacy

Slide 58

Slide 58 text

2012-now dev bootcamp taught in ruby

Slide 59

Slide 59 text

consistency of language ruby is more consistent than most popular choices makes it so easy to teach in one of my favourite teaching languages

Slide 60

Slide 60 text

2015 github.com/opal/opal ruby to js transpiler

Slide 61

Slide 61 text

dream of same language on frontend and backend and that language wasn’t js :)

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

in conclusion (and with a healthy dose of hindsight)

Slide 64

Slide 64 text

when i started code was a puzzle that needed to be solved

Slide 65

Slide 65 text

1991-2005: computer > me my focus was the computer’s productivity

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

nothing magical about it it was just hard

Slide 68

Slide 68 text

what is magic? write some words perform certain rituals makes the impossible possible

Slide 69

Slide 69 text

that sounds like writing code! it was years before i realised writing code is magic

Slide 70

Slide 70 text

beauty matters in code, beauty is utilitarian beauty makes magic happen

Slide 71

Slide 71 text

utilitarian beauty? easy to understand easy to change easy to scale increasingly magical

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

this was about beauty it was all about making more beautiful things

Slide 74

Slide 74 text

always build beautiful things they just work better much better

Slide 75

Slide 75 text

terima kasih! @ponnappa