Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
How Ruby Programmed Me
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Jano González
March 23, 2013
Programming
550
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
How Ruby Programmed Me
Closing keynote in RubyConf Uruguay 2013
Jano González
March 23, 2013
More Decks by Jano González
See All by Jano González
Containerizing your monolith
janogonzalez
0
510
Migrando a Microservicios
janogonzalez
1
350
Extracting services from a monolith
janogonzalez
3
300
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
530
Microservices in Practice
janogonzalez
7
730
Two programmers in one
janogonzalez
1
230
The Bipolar Programmer
janogonzalez
4
660
Ruby for your two internal programmers
janogonzalez
4
300
Ruby for Java minds
janogonzalez
4
1.1k
Other Decks in Programming
See All in Programming
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.1k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
140
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
260
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
RTSPクライアントを自作してみた話
simotin13
0
610
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.6k
Oxcを導入して開発体験が向上した話
yug1224
4
310
Lessons from Spec-Driven Development
simas
PRO
0
200
The NotImplementedError Problem in Ruby
koic
1
790
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
140
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
630
Featured
See All Featured
HDC tutorial
michielstock
2
710
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Crafting Experiences
bethany
1
180
For a Future-Friendly Web
brad_frost
183
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The World Runs on Bad Software
bkeepers
PRO
72
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Color Theory Basics | Prateek | Gurzu
gurzu
0
360
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
What's in a price? How to price your products and services
michaelherold
247
13k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Transcript
HOW RUBY PROGRAMMED ME
@janogonzalez
@hop_in
@dynlangchile
@dynlangchile
LANGUAGE & THOUGHT
LANGUAGE SHAPES OUR THOUGHT HOW
CHICKEN / EGG
DISCLAIMER
NOT A LINGUIST
NOT A NEUROSCIENTIST
NOT A PHILOSOPHER
JUST MY EXPERIENCE
AND OPINIONS
DON’T WORRY
PROGRAMMER’S BRAIN
OUR BRAIN
LANGUAGES SHAPE YOUR THOUGHT WHICH
THE PROBLEM
“Ars longa, vita brevis” –Hippocrates
HOW TO CHOOSE
“A language that doesn't affect the way you think about
programming, is not worth knowing.” –Alan Perlis
PARADIGMS
SINTAX
IDIOMS
COMMUNITY
RUBY
BLOCKS File.open('my.txt').each do |line| puts line if line =~ /jano/
end
JAVASCRIPT
PROTOTYPES function Person(name) { this.name = name; } Person.protoype.sayHi =
function() { return “Hi, I’m “ + this.name; }; var jano = new Person(‘Jano’); jano.sayHi();
PYTHON
INDENTATION def median(pool): copy = sorted(pool) size = len(copy) if
size % 2 == 1: return copy[(size - 1) / 2] else: return (copy[size/2 - 1] + copy[size/2]) / 2
LISP
MACROS (defmacro for ((var start stop) &body body) (let ((gstop
(gensym))) `(do ((,var ,start (1+ ,var)) (,gstop ,stop)) ((> ,var ,gstop)) ,@body)))
HASKELL
PATTERN MATCHING map _ [] = [] map f (x:xs)
= f x : map f xs
FORTH
STACK BASED : STAR! ( -- ) 42 EMIT ;
: STARS!( n -- ) 0 DO STAR LOOP ; CR 7 STARS
REMIX IT!
LANGUAGES SHAPE YOUR THOUGHT LET
“The determined Real Programmer can write FORTRAN programs in any
language.” –Ed Post
“The determined Real Programmer can write FORTRAN programs in any
language.” –Ed Post close-minded? C, Ruby, Lisp, etc
ARE YOU CHUCK?
ॳ৺
BEGINNER’S MIND
OPENNESS
A CUP OF TEA
EMPTY YOUR CUP
कഁ
कഁ
PROTECT / OBEY SHU
कഁ
DETACH / DISGRESS HA
कഁ
LEAVE / SEPARATE RI
None
HEY! THIS IS A RUBY CONFERENCE
RUBY & MY BRAIN
RUBY CHANGED MY BRAIN HOW
A TALE OF TWO DEVELOPERS
HACKER V/S THINKER
HACKER
GET THINGS DONE HACKER
FAST HACKER
HACKS HACKER
MAINTENANCE NIGHTMARE HACKER
NEEDS MORE DUCT TAPE
THINKER
THINKS ABOUT ABSTRACTIONS THINKER
THINKS ABOUT MANTAINABILITY THINKER
TOO MANY ABSTRACTIONS THINKER
ANALYSIS PARALYSIS THINKER
NEEDS MORE LAYERS
MY STORY
THE HACKER YEARS
THE HACKER YEARS
THE LEARNING YEARS
THE UML YEARS
THE UML YEARS
THE HACKER WAS GONE
UML, RUP, GoF, XML, ETC.
STOCKHOLM SYNDROME
EVOLUTION?
THE ONE TRUE WAY™
THE PATH?
FEAR
I WAS SO WRONG!
EVERYDAY LIFE IS THE PATH
ENTER RUBY
SMALLTALK IN PERL’S DISGUISE
HAPPY THINKER
THINKER class AccountProtectionProxy def initialize(real_account, owner_name) @subject = real_account @owner_name
= owner_name end def method_missing(name, *args) check_access @subject.send( name, *args ) end ... end
OMG! GoF NEVER WAS SO EASY
HAPPY HACKER
HACKER $1 if str ~= /(foo)+/
ONE LINERS FTW!
HACKER ❤ THINKER
LET’S WORK TOGETHER
HARMONY
HARMONY (1..42).select(&:even?). map { |n| n * 2 }. reduce(&:*)
THE PATH IS NO PATH
WEIRD FACT
(EVERY DEVELOPER IS A MANAGER)
(OMG)
RUBY & MY LIFE
RUBY CHANGED MY LIFE HOW
NEW GIGS
CONFERENCES
CONFERENCES
NEW FRIENDS
CRAZY FRIENDS
I ❤ .RB
I ❤ .UY
I ❤ .AR
RUBY & YOUR LIFE
RUBY CHANGE YOUR LIFE LET
PROGRAMMING CHANGE YOUR LIFE LET
FORK & MERGE
LEARN
HAVE FUN
SHARE
(AND REPEAT) loop do learn have_fun share end
THANKS!