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
Ruby; Exported
Search
Tatsuhiko Miyagawa
September 15, 2012
Technology
1
1k
Ruby; Exported
Sapporo RubyKaigi 2012
Tatsuhiko Miyagawa
September 15, 2012
Tweet
Share
More Decks by Tatsuhiko Miyagawa
See All by Tatsuhiko Miyagawa
Carmel at YAPC::EU 2015
miyagawa
0
530
Carton at London Perl Workshop 2013
miyagawa
0
270
Managing CPAN dependencies with Carton
miyagawa
0
320
What's new in Carton and cpanm at YAPC::Asia 2013
miyagawa
6
1.3k
Carton 1.0 at OSCON 2013
miyagawa
11
2.3k
cpanm 1.6 at OSDC.TW
miyagawa
6
1.3k
10 more things to be ripped off
miyagawa
7
1.4k
10 Years: LL, you and me
miyagawa
2
200
Plack 1.0 announcement at OSCON
miyagawa
1
280
Other Decks in Technology
See All in Technology
CRE Camp #1 エンジニアリングを民主化するCREチームでありたい話
mntsq
1
130
Delegating the chores of authenticating users to Keycloak
ahus1
0
140
ネットワーク保護はどう変わるのか?re:Inforce 2025最新アップデート解説
tokushun
0
210
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
280
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
7
5.3k
関数型プログラミングで 「脳がバグる」を乗り越える
manabeai
1
190
SEQUENCE object comparison - db tech showcase 2025 LT2
nori_shinoda
0
150
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
320
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
340
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
160
Flutter向けPDFビューア、pdfrxのpdfium WASM対応について
espresso3389
0
130
Featured
See All Featured
Scaling GitHub
holman
460
140k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Practical Orchestrator
shlominoach
189
11k
It's Worth the Effort
3n
185
28k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
Docker and Python
trallard
44
3.5k
The Invisible Side of Design
smashingmag
301
51k
Designing for Performance
lara
610
69k
Code Review Best Practice
trishagee
69
18k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Transcript
Ruby; Exported Tatsuhiko Miyagawa Sapporo RubyKaigi 2012 Sunday, September 30,
12
About Me • Tatsuhiko Miyagawa • @miyagawa • San Francisco,
CA • COOKPAD Inc. US Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://www.flickr.com/photos/ya-ko/5086710287/in/set-72157625177557742 Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Cross Language Pollination Sunday, September 30, 12
Perl's influence in Ruby Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Ruby Heritage from Perl Sunday, September 30, 12
http://edward.oconnor.cx/2006/03/ruby-is-perl-done-right Sunday, September 30, 12
http://edward.oconnor.cx/2006/03/ruby-is-perl-done-right Sunday, September 30, 12
ARGF Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
%q %Q Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
`` Sunday, September 30, 12
> `date` # => "Sat Sep 15 09:20:07 JST
2012\n" > %x{echo oops && exit 99} # => "echo\n" > $?.exitstatus # => 99 Sunday, September 30, 12
$! $@ $; $, $/ $\ $. $_ $> $<
$$ $? $~ $= $* $& $` $' Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Mostly, things you don't like :p Sunday, September 30, 12
"Perl's special variables are one of the biggest mistake I
made in Ruby." Sunday, September 30, 12
http://blog.nicksieger.com/articles/2007/10/06/obscure-and-ugly-perlisms-in-ruby Sunday, September 30, 12
Gems Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Ruby's influences in other languages (Perl) Sunday, September 30, 12
Sunday, September 30, 12
Full-stack Web frameworks Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
micro web frameworks Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
DSL Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Perl Modules for Ruby Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
My Cases Sunday, September 30, 12
Plack / PSGI Sunday, September 30, 12
# WSGI def hello(environ, start_response): start_response(“200 OK”, [
(‘Content-‐Type’, ‘text/plain’) ]) return [“Hello World”] Sunday, September 30, 12
# Rack app = -‐>(env) { return [
200, { 'Content-‐Type' => 'text/plain' }, [ 'Hello World' ] ] } Sunday, September 30, 12
# PSGI my $app = sub { my $env
= shift; return [ 200, [ 'Content-‐Type', 'text/plain' ], [ 'Hello World' ] ]; }; Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
It's been a huge success. Sunday, September 30, 12
CGI::Application Apache IIS lighttpd CGI.pm CGI fastcgi mod_perl Jifty Mason
Catalyst Mason::CGIHandler Catalyst::Engine nginx HTTP::Server ::Simple Sunday, September 30, 12
PSGI Plack::Middleware Catalyst CGI::App Jifty Dancer Apache lighttpd HTTP::Server::PSGI Perlbal
mod_psgi Plack::Handler::* (CGI, FCGI, Apache) Starman Twiggy uWSGI Corona Feersum Mojolicious Sunday, September 30, 12
We chose Rack (over WSGI) to copy from: It's newer
and simpler. Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Plack Sunday, September 30, 12
Inspired by: Rack, Werkzeug Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
WSGI: Dec 2003 Rack: Aug 2009 (0.9) Sunday, September 30,
12
“The nicest thing about being late is that there are
plenty of things left to steal.” Sunday, September 30, 12
Better late than never Sunday, September 30, 12
Better late than too early :) Sunday, September 30, 12
Cross-language Pollination Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://bulknews.typepad.com/blog/2009/10/psgiplack-streaming-is-now-complete.html Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
rubygems Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
rubygems quiet and intuitive. Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Carton Sunday, September 30, 12
Sunday, September 30, 12
Like Bundler Sunday, September 30, 12
Sunday, September 30, 12
Starman PSGI HTTP Server Sunday, September 30, 12
http://tomayko.com/writings/unicorn-is-unix Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Name Sunday, September 30, 12
"Naming is Important." Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
CPAN traditionally prefers long names Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Too many ::’s! Hard to type nor say. People tend
to shorten the names. e.g. MXMARMR (MooseX::MetaAttribute::Role::Meta::Role) Sunday, September 30, 12
Sunday, September 30, 12
Perl • HTTP::Server::Simple • JSON::XS • Devel::StackTrace • Net::OAuth::Lite •
Text::CSV_XS Sunday, September 30, 12
Python • python-json • pyoauth2 • pygeoip • PyYAML •
Numpy Sunday, September 30, 12
Ruby • Yajl • Psych • unicorn • thin •
puma • doorkeeper • kaminari • paperclip • resque • pry • factory_girl • capybara Sunday, September 30, 12
Perl Descriptive, boring, ::Simple Python Descriptive, confusing, py*, *.py Ruby
Fancy, creative, chaotic Sunday, September 30, 12
except Frameworks. Django, bottle, Catalyst, Dancer, Mojolicious, Rails, Sinatra Sunday,
September 30, 12
People tend to love software with names. (citation needed) Sunday,
September 30, 12
Starman Starlet Twiggy Markapl Corona Pinto Xslate Carton Confusing for
a bit, but it feels more "real". Sunday, September 30, 12
How it's received: Sunday, September 30, 12
Telling Perl developers "Ruby is awesome" makes them defensive. Sunday,
September 30, 12
Shipping awesome code inspired by Ruby makes them appreciative Sunday,
September 30, 12
(We Code) Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Starman Starlet Twiggy Plack::Handler::FCGI mod_perl 2 HTTP::Server::PSGI H::S::Simple::PSGI CGI Feersum
uWSGI mod_perl 1.3 0 15 30 45 60 Sunday, September 30, 12
http://www.bofh.org.uk/2010/03/10/falling-out-of-love-with-a-language Sunday, September 30, 12
Sunday, September 30, 12
Quite contrary! Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Wrap up Sunday, September 30, 12
Perl respects Ruby Sunday, September 30, 12
http://www.artima.com/intv/ruby3.html Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
Sunday, September 30, 12
http://yapcasia.org/2012/talk/show/bcdf8c9e-da9d-11e1-a79e-0d4e6aeab6a4 Sunday, September 30, 12
Thank you. Sunday, September 30, 12