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
11
470
How Ruby Programmed Me
Closing keynote in RubyConf Uruguay 2013
Jano González
March 23, 2013
Tweet
Share
More Decks by Jano González
See All by Jano González
Containerizing your monolith
janogonzalez
0
230
Migrando a Microservicios
janogonzalez
1
260
Extracting services from a monolith
janogonzalez
3
240
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
400
Microservices in Practice
janogonzalez
7
610
Two programmers in one
janogonzalez
1
130
The Bipolar Programmer
janogonzalez
4
560
Ruby for your two internal programmers
janogonzalez
4
210
Ruby for Java minds
janogonzalez
4
990
Other Decks in Programming
See All in Programming
DMMプラットフォームにおけるTiDBの導入から運用まで
pospome
7
3k
Android開発者のための Kotlin Multiplatform入門
ntaro
0
190
AWSでゲームサーバーを運用! Amazon GameLiftのお話
iriikeita
0
200
I/O Extended Android in Korea 2024 ~ Whats new in Android development tools
pluu
0
250
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
81k
Polarsの成長: v0.14からv1.0までの変遷と今後の展望
zerebom
1
350
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
190
How to use Macrobenchmark
veronikapj
0
160
OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた
tomiyan
0
790
継続的な活動で築く地方エンジニアの道
myamashii
2
360
SRE チーム立ち上げ前に考えたこと・取り組んだこと / Considerations and Preparations Before Establishing an SRE Team
mackey0225
3
320
Activities at Cairo Library
cairolibrary720
0
1.2k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
44
4.7k
How to Ace a Technical Interview
jacobian
274
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
325
21k
Debugging Ruby Performance
tmm1
71
11k
Six Lessons from altMBA
skipperchong
24
3.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
The Invisible Customer
myddelton
117
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
Build your cross-platform service in a week with App Engine
jlugia
227
17k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
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!