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
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
540
Microservices in Practice
janogonzalez
7
730
Two programmers in one
janogonzalez
1
240
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
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Contextとはなにか
chiroruxx
1
390
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
Agentic UI
manfredsteyer
PRO
0
220
Oxcを導入して開発体験が向上した話
yug1224
4
370
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
170
Webフレームワークの ベンチマークについて
yusukebe
0
190
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
190
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
110
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Evolving SEO for Evolving Search Engines
ryanjones
0
230
Faster Mobile Websites
deanohume
310
32k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
580
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Product Roadmaps are Hard
iamctodd
55
12k
Accessibility Awareness
sabderemane
1
150
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
620
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!