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
550
Microservices in Practice
janogonzalez
7
730
Two programmers in one
janogonzalez
1
240
The Bipolar Programmer
janogonzalez
4
670
Ruby for your two internal programmers
janogonzalez
4
310
Ruby for Java minds
janogonzalez
4
1.2k
Other Decks in Programming
See All in Programming
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
190
仕様駆動開発の消費期限
watany
20
8.8k
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
330
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
580
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.4k
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
340
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
140
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
560
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
450
Featured
See All Featured
Crafting Experiences
bethany
1
260
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Building Applications with DynamoDB
mza
96
7.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
Scaling GitHub
holman
464
140k
GraphQLとの向き合い方2022年版
quramy
50
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Become a Pro
speakerdeck
PRO
31
6.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
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!