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
560
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
360
Extracting services from a monolith
janogonzalez
3
310
¿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
310
Ruby for Java minds
janogonzalez
4
1.1k
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.5k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
220
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
320
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
9
5.9k
その節約、円になってますか?
isamumumu
1
640
今さら聞けない .NET CLI
htkym
0
170
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
930
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
300
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
970
数百円から始めるRuby電子工作
tarosay
0
120
FDEが実現するAI駆動経営の現在地
gonta
2
250
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.3k
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
RailsConf 2023
tenderlove
30
1.5k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
How STYLIGHT went responsive
nonsquared
100
6.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
670
Embracing the Ebb and Flow
colly
88
5.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Building an army of robots
kneath
306
46k
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!