Rubyconf 2013 presentation on Opal - Ruby in the browser. A New Hope for Ruby Programmers. Actual presentation has a ton of sound and video. I'll post the confreaks link when it's available.
Update 2: link with sound, then a link to the rest of the video - https://vimeo.com/82573680
Update 1: Confreaks link. http://confreaks.com/videos/2904-rubyconf2013-opal-a-new-hope-for-ruby-programmers - They had to mute the star wars music coz youtube would reject all the sound. I'll see what can be done about that
1. Opal - a new
hope
(for Ruby Programmers)
Forrest Chang
@fkchang2000
Sunday, November 10, 13
2. THIS PRESENTATION HAS BEEN RATED
R
RUBY
UNDER 17 REQUIRES ACCOMPANYING PARENT OR ADULT GUARDIAN
STRONG CODER HAPPINESS, COOLNESS,
JOY AND LANGUAGE
FOR OPTIMUM VIEWING EXPERIENCE, PLEASE WAIT
UNTIL THE TEXT HITS THE MIDDLE OF THE SCREEN
BEFORE READING (YOU’LL KNOW WHAT THIS MEANS
Sunday, November 10, 13
33. felt this way, you
have?
“JAVASCRIPT IS THE PATH TO THE DARK SIDE. JAVASCRIPT LEADS TO ANGER.
ANGER LEADS TO HATE. HATE LEADS TO SUFFERING.”
- YODA, IF HE WERE A CODER
Sunday, November 10, 13
43. matz on ruby
"For me the purpose of life is partly to have joy.
Programmers often feel joy when they can concentrate on
the creative side of programming, So Ruby is designed to
make programmers happy."
Sunday, November 10, 13
68. What is opal?
• Ruby to js source to source
compiler, similar to coffeescript
Sunday, November 10, 13
69. What is opal?
• Ruby to js source to source
compiler, similar to coffeescript
• small runtime (supports method
missing, operator overloading,
etc)
Sunday, November 10, 13
70. What is opal?
• Ruby to js source to source
compiler, similar to coffeescript
• small runtime (supports method
missing, operator overloading,
etc)
• Ruby in the browser
Sunday, November 10, 13
72. As Code
class Opal < Ruby
include Browser::Access
include Javascript::Interaction
runs_in :browser
runs_in :node
makes_you :happy
end
Sunday, November 10, 13
79. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
Sunday, November 10, 13
80. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
Sunday, November 10, 13
81. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
Sunday, November 10, 13
82. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
4. Frameworks, we don't need no stinking frameworks
(but we have some)
Sunday, November 10, 13
83. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
4. Frameworks, we don't need no stinking frameworks
(but we have some)
5. Tools you already know and love
Sunday, November 10, 13
84. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
4. Frameworks, we don't need no stinking frameworks
(but we have some)
5. Tools you already know and love
6. Easy integration with Ruby web frameworks
Sunday, November 10, 13
85. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
4. Frameworks, we don't need no stinking frameworks
(but we have some)
5. Tools you already know and love
6. Easy integration with Ruby web frameworks
7. Awesome In Browser tools
Sunday, November 10, 13
86. Reasons Opal will make you
happy
1. It's just Ruby, and a viable one
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way, making the programmer
happy
4. Frameworks, we don't need no stinking frameworks
(but we have some)
5. Tools you already know and love
6. Easy integration with Ruby web frameworks
7. Awesome In Browser tools
8. New possibilities
Sunday, November 10, 13
87. 1. It's just Ruby, and a
viable one
Sunday, November 10, 13
88. 1. It's just Ruby, and a
viable one
• Question Number 1 - is opal a viable
option?
Sunday, November 10, 13
89. 1. It's just Ruby, and a
viable one
• Question Number 1 - is opal a viable
option?
• in production - 6 plus apps, 2 more
coming soon
Sunday, November 10, 13
90. 1. It's just Ruby, and a
viable one
• Question Number 1 - is opal a viable
option?
• in production - 6 plus apps, 2 more
coming soon
• Biggest apps are the store and
mobile sites for a High end fashion/
luxury brand (client confidentiality
agreement)
Sunday, November 10, 13
93. High End Fashion/
Luxury Site
•
globally
•
Sunday, November 10, 13
~2 million unique visitors/month
94. High End Fashion/
Luxury Site
•
globally
•
•
Sunday, November 10, 13
~2 million unique visitors/month
~20 Million page views/month
95. High End Fashion/
Luxury Site
•
globally
•
•
•
Sunday, November 10, 13
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
96. High End Fashion/
Luxury Site
•
globally
•
•
•
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
•
Sunday, November 10, 13
store: ~2 million page views/month
97. High End Fashion/
Luxury Site
•
globally
•
•
•
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
•
•
Sunday, November 10, 13
store: ~2 million page views/month
mobile: ~2 million page views/month
98. High End Fashion/
Luxury Site
•
globally
•
•
•
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
•
•
•
Sunday, November 10, 13
store: ~2 million page views/month
mobile: ~2 million page views/month
store is responsive, mobile works
99. High End Fashion/
Luxury Site
•
globally
•
•
•
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
•
•
•
store: ~2 million page views/month
mobile: ~2 million page views/month
store is responsive, mobile works
•
Sunday, November 10, 13
opal is not too heavy mobile devices
100. High End Fashion/
Luxury Site
•
globally
•
•
•
~2 million unique visitors/month
~20 Million page views/month
Parts that involve opal
•
•
•
store: ~2 million page views/month
mobile: ~2 million page views/month
store is responsive, mobile works
•
•
Sunday, November 10, 13
opal is not too heavy mobile devices
opal battle tested for ie8+, chrome, safari, firefox
101. 1. It's just Ruby, and a
viable one
Sunday, November 10, 13
102. 1. It's just Ruby, and a
viable one
•
Sunday, November 10, 13
Real Ruby1.9.3 - compliant (mostly)
103. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
Sunday, November 10, 13
passes 2367 rubyspec examples - goal to pass all
104. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
Sunday, November 10, 13
passes 2367 rubyspec examples - goal to pass all
capable of running complex ruby
105. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
capable of running complex ruby
•
Sunday, November 10, 13
passes 2367 rubyspec examples - goal to pass all
runs asciidoc gem unmodified
106. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
passes 2367 rubyspec examples - goal to pass all
capable of running complex ruby
•
•
Sunday, November 10, 13
runs asciidoc gem unmodified
runs mspec gem unmodified,
107. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
passes 2367 rubyspec examples - goal to pass all
capable of running complex ruby
•
runs asciidoc gem unmodified
•
runs mspec gem unmodified,
•
rspec with some modification, primarily due to mutable
strings
Sunday, November 10, 13
108. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
passes 2367 rubyspec examples - goal to pass all
capable of running complex ruby
•
runs asciidoc gem unmodified
•
runs mspec gem unmodified,
•
rspec with some modification, primarily due to mutable
strings
•
Sunday, November 10, 13
can compile itself
109. 1. It's just Ruby, and a
viable one
•
Real Ruby1.9.3 - compliant (mostly)
•
•
passes 2367 rubyspec examples - goal to pass all
capable of running complex ruby
•
runs asciidoc gem unmodified
•
runs mspec gem unmodified,
•
rspec with some modification, primarily due to mutable
strings
•
•
Sunday, November 10, 13
can compile itself
much of stdlib in already in place
121. Ruby language
features in OPal
• classes
• blocks
• modules &and mixins
• yield
• singleton methods
• constants
• method-missing
• global variables
• arity checks
• class variables
• lambda
• instance variables
Sunday, November 10, 13
122. More Ruby language
features in OPal
• Basic object
• Kernel
• Nilclass
• range
• hash
Sunday, November 10, 13
• string
interpolation
• heredocs
• %%w splits
124. don’t underestimate the
power of a a better language
• those who chose ruby for the
backend know what i mean
Sunday, November 10, 13
125. don’t underestimate the
power of a a better language
• those who chose ruby for the
backend know what i mean
• opal-irb, opal-inspector easy
to write, easy to read, little
code ***
Sunday, November 10, 13
126. don’t underestimate the
power of a a better language
• those who chose ruby for the
backend know what i mean
• opal-irb, opal-inspector easy
to write, easy to read, little
code ***
• leads us to ...
Sunday, November 10, 13
128. 2. Greenspun's 10th
Rule, Opal Edition
Greenspun’s Rule
Any sufficiently complicated C or Fortran program
contains an ad hoc, informally-specified, bug-ridden,
slow implementation of half of Common Lisp.
Sunday, November 10, 13
129. 2. Greenspun's 10th
Rule, Opal Edition
Greenspun’s Rule
Any sufficiently complicated C or Fortran program
contains an ad hoc, informally-specified, bug-ridden,
slow implementation of half of Common Lisp.
Sunday, November 10, 13
131. 2. Greenspun's 10th
Rule, Opal Edition
Greenspun’s Rule, Opal Edition
Any sufficiently complicated Javascript program
contains an ad hoc, informally-specified, bug-ridden,
slow implementation of half of Ruby
Sunday, November 10, 13
171. 3. Solves things the Ruby way,
making the programmer happy
Sunday, November 10, 13
172. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
Sunday, November 10, 13
173. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
Sunday, November 10, 13
174. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
• modular code
Sunday, November 10, 13
175. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
• modular code
• namespaces
Sunday, November 10, 13
176. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
• modular code
• namespaces
• external templates
Sunday, November 10, 13
177. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
• modular code
• namespaces
• external templates
• automation tasks
Sunday, November 10, 13
178. 3. Solves things the Ruby way,
making the programmer happy
• could be its own presentation, only
selected examples
• comparisons
• modular code
• namespaces
• external templates
• automation tasks
• scope
Sunday, November 10, 13
179. 3. Solves things the Ruby way,
making the programmer happy
Sunday, November 10, 13
180. 3. Solves things the Ruby way,
making the programmer happy
• non comparision
Sunday, November 10, 13
181. 3. Solves things the Ruby way,
making the programmer happy
• non comparision
• dom
Sunday, November 10, 13
182. 3. Solves things the Ruby way,
making the programmer happy
• non comparision
• dom
• css
Sunday, November 10, 13
183. 3. Solves things the Ruby way,
making the programmer happy
• non comparision
• dom
• css
• javascript integration
Sunday, November 10, 13
184. 3. Solves things the Ruby way,
making the programmer happy
• non comparision
• dom
• css
• javascript integration
• testing
Sunday, November 10, 13
186. modular code:
Javascript
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
// Consider 'foo' and 'bar' are two external modules
// In this example, the 'exports' from the two modules loaded are passed as
// function arguments to the callback (foo and bar)
// so that they can similarly be accessed
Sunday, November 10, 13
187. modular code:
Javascript
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
// Consider 'foo' and 'bar' are two external modules
// In this example, the 'exports' from the two modules loaded are passed as
// function arguments to the callback (foo and bar)
// so that they can similarly be accessed
require(['foo', 'bar'], function ( foo, bar ) {
// rest of your code here
foo.doSomething();
});
Sunday, November 10, 13
188. modular code:
Javascript
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
// Consider 'foo' and 'bar' are two external modules
// In this example, the 'exports' from the two modules loaded are passed as
// function arguments to the callback (foo and bar)
// so that they can similarly be accessed
require(['foo', 'bar'], function ( foo, bar ) {
// rest of your code here
foo.doSomething();
});
Lots of other stuff
Sunday, November 10, 13
231. javascript
integration
• x-strings
• %x(window.location)
• `window.location`
• used to have seemless bridging (via
method missing) like jruby, now need to
wrap objects with native
• @editor =
Native(`CodeMirror.fromTextArea(areas)`)
Sunday, November 10, 13
240. 3. Solves things the Ruby way,
making the programmer happy
Sunday, November 10, 13
241. 3. Solves things the Ruby way,
making the programmer happy
• not done (but easy in ruby)
Sunday, November 10, 13
242. 3. Solves things the Ruby way,
making the programmer happy
• not done (but easy in ruby)
• monkey patching
Sunday, November 10, 13
243. 3. Solves things the Ruby way,
making the programmer happy
• not done (but easy in ruby)
• monkey patching
• method missing
Sunday, November 10, 13
244. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
Sunday, November 10, 13
245. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
Sunday, November 10, 13
246. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• opal-irb, opal-inspector easy
to write without a
framework, very few lines
Sunday, November 10, 13
247. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• opal-irb, opal-inspector easy
to write without a
framework, very few lines
• power of a better language
Sunday, November 10, 13
250. opal-inspector
spike code
• 448 lines including
whitespace and debugging
lines
• mostly just plain ruby w/
some opal-jquery
Sunday, November 10, 13
251. opal-inspector
spike code
• 448 lines including
whitespace and debugging
lines
• mostly just plain ruby w/
some opal-jquery
• selected code showN
Sunday, November 10, 13
259. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
Sunday, November 10, 13
260. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
Sunday, November 10, 13
261. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
• opal-jquery - jquery wrapped in a ruby way
Sunday, November 10, 13
262. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
• opal-jquery - jquery wrapped in a ruby way
• opal-browser - browser functionality
Sunday, November 10, 13
263. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
• opal-jquery - jquery wrapped in a ruby way
• opal-browser - browser functionality
• can use iN lieu of opal-jquery if you’re
not using jquery
Sunday, November 10, 13
264. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
• opal-jquery - jquery wrapped in a ruby way
• opal-browser - browser functionality
• can use iN lieu of opal-jquery if you’re
not using jquery
• vienna - MVC
Sunday, November 10, 13
265. 4. Frameworks, we don't
need no stinking frameworks
(but we have some)
• while ruby is powerful by itself, opal have
some libs
• opal-jquery - jquery wrapped in a ruby way
• opal-browser - browser functionality
• can use iN lieu of opal-jquery if you’re
not using jquery
• vienna - MVC
• lissio - MVC
Sunday, November 10, 13
266. 5. Tools you already
know and love
Sunday, November 10, 13
267. 5. Tools you already
know and love
• opal is Ruby
Sunday, November 10, 13
268. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
Sunday, November 10, 13
269. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
• Rake
Sunday, November 10, 13
270. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
• Rake
• rspec (sorry DHH)
Sunday, November 10, 13
271. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
• Rake
• rspec (sorry DHH)
• guard
Sunday, November 10, 13
272. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
•
•
•
•
Sunday, November 10, 13
Rake
rspec (sorry DHH)
guard
<fill in the ruby tool> - remember
it's just Ruby
273. 5. Tools you already
know and love
• opal is Ruby
• editor - emacs, textmate, vim,
sublime, Rubymine, etc.
•
•
•
•
Rake
rspec (sorry DHH)
guard
<fill in the ruby tool> - remember
it's just Ruby
• Reuse your ood and patterns
Knowledge
Sunday, November 10, 13
286. opal-sprockets
FOR NON RAILS STANDALONE RAKEFILE
require 'bundler/setup'
require 'opal'
require 'opal-sprockets'
desc "build jqconsole based irb"
task :build_jqconsole do
File.open("js/app-jqconsole.js", "w+") do |out|
env = Opal::Environment.new
env.append_path "examples"
env.append_path "opal"
out << env["app-jqconsole"].to_s
end
# system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
system "open -a 'Google Chrome' index-jq.html"
end
Sunday, November 10, 13
287. opal-sprockets
FOR NON RAILS STANDALONE RAKEFILE
require 'bundler/setup'
require 'opal'
require 'opal-sprockets'
desc "build jqconsole based irb"
task :build_jqconsole do
file to write to
File.open("js/app-jqconsole.js", "w+") do |out|
env = Opal::Environment.new
env.append_path "examples"
env.append_path "opal"
out << env["app-jqconsole"].to_s
end
# system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
system "open -a 'Google Chrome' index-jq.html"
end
Sunday, November 10, 13
288. opal-sprockets
FOR NON RAILS STANDALONE RAKEFILE
require 'bundler/setup'
require 'opal'
require 'opal-sprockets'
desc "build jqconsole based irb"
task :build_jqconsole do
file to write to
File.open("js/app-jqconsole.js", "w+") do |out|
env = Opal::Environment.new
env.append_path "examples"
env.append_path "opal"
out << env["app-jqconsole"].to_s
end
# system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
system "open -a 'Google Chrome' index-jq.html"
end
append dirs to search
Sunday, November 10, 13
289. opal-sprockets
FOR NON RAILS STANDALONE RAKEFILE
require 'bundler/setup'
require 'opal'
require 'opal-sprockets'
desc "build jqconsole based irb"
task :build_jqconsole do
file to write to
File.open("js/app-jqconsole.js", "w+") do |out|
env = Opal::Environment.new
env.append_path "examples"
env.append_path "opal"
out << env["app-jqconsole"].to_s
end
# system "terminal-notifier -title 'opal-irb build' -message 'js file built'"
system "open -a 'Google Chrome' index-jq.html"
end
append dirs to search
write contents
Sunday, November 10, 13
300. opal-irb
• irb for opal
• history
• readline controls (most)
Sunday, November 10, 13
301. opal-irb
• irb for opal
• history
• readline controls (most)
• popup multiline editor (works
over all history)
Sunday, November 10, 13
302. opal-irb
• irb for opal
• history
• readline controls (most)
• popup multiline editor (works
over all history)
• send a link (live gist)
Sunday, November 10, 13
305. opal-inspector
• inspired by amber.js’s in browser
smalltalk code browser
• persistent live opal objects is
similar to the Smalltalk image
Sunday, November 10, 13
306. opal-inspector
• inspired by amber.js’s in browser
smalltalk code browser
• persistent live opal objects is
similar to the Smalltalk image
• change the paradigm of webapp
development
Sunday, November 10, 13
307. opal-inspector
• inspired by amber.js’s in browser
smalltalk code browser
• persistent live opal objects is
similar to the Smalltalk image
• change the paradigm of webapp
development
• develop in browser w/better tools
Sunday, November 10, 13
315. 8. New possibilities
•
in browser development
•
Sunday, November 10, 13
change the development paradigm
316. 8. New possibilities
•
in browser development
•
•
Sunday, November 10, 13
change the development paradigm
take goodness from Smalltalk, ruby, lisp machines
317. 8. New possibilities
•
in browser development
•
•
take goodness from Smalltalk, ruby, lisp machines
•
Sunday, November 10, 13
change the development paradigm
finally a standard Ui platform
318. 8. New possibilities
•
in browser development
•
change the development paradigm
•
take goodness from Smalltalk, ruby, lisp machines
•
finally a standard Ui platform
•
fragmented/stagnant before, gtk, wxwindows,
qt, tk, etc.
Sunday, November 10, 13
319. 8. New possibilities
•
in browser development
•
change the development paradigm
•
take goodness from Smalltalk, ruby, lisp machines
•
finally a standard Ui platform
•
fragmented/stagnant before, gtk, wxwindows,
qt, tk, etc.
•
Sunday, November 10, 13
everyone has a browser
320. 8. New possibilities
•
in browser development
•
change the development paradigm
•
take goodness from Smalltalk, ruby, lisp machines
•
finally a standard Ui platform
•
fragmented/stagnant before, gtk, wxwindows,
qt, tk, etc.
•
•
Sunday, November 10, 13
everyone has a browser
use these tools for backend too, ala better errors
321. 8. New possibilities
•
in browser development
•
change the development paradigm
•
take goodness from Smalltalk, ruby, lisp machines
•
finally a standard Ui platform
•
fragmented/stagnant before, gtk, wxwindows,
qt, tk, etc.
•
•
use these tools for backend too, ala better errors
•
Sunday, November 10, 13
everyone has a browser
better tooling for ruby across the board
323. 8. New possibilities
• meteor.js like same code on front and
back end
Sunday, November 10, 13
324. 8. New possibilities
• meteor.js like same code on front and
back end
• blurring the lines - vienna
experiment
Sunday, November 10, 13
325. 8. New possibilities
• meteor.js like same code on front and
back end
• blurring the lines - vienna
experiment
• eventd safe ruby libs
Sunday, November 10, 13
326. 8. New possibilities
• meteor.js like same code on front and
back end
• blurring the lines - vienna
experiment
• eventd safe ruby libs
• as opal matures, eventd safe ruby
libs/gems for both front and
backend
Sunday, November 10, 13
328. 8. New possibilities
• component based coding, all in one place
for the web
Sunday, November 10, 13
329. 8. New possibilities
• component based coding, all in one place
for the web
• hard to do oo programming with markup
and css
Sunday, November 10, 13
330. 8. New possibilities
• component based coding, all in one place
for the web
• hard to do oo programming with markup
and css
• lissio - ruby class, all parts in ruby
Sunday, November 10, 13
331. 8. New possibilities
• component based coding, all in one place
for the web
• hard to do oo programming with markup
and css
• lissio - ruby class, all parts in ruby
• html
Sunday, November 10, 13
332. 8. New possibilities
• component based coding, all in one place
for the web
• hard to do oo programming with markup
and css
• lissio - ruby class, all parts in ruby
• html
• css
Sunday, November 10, 13
333. 8. New possibilities
• component based coding, all in one place
for the web
• hard to do oo programming with markup
and css
• lissio - ruby class, all parts in ruby
• html
• css
• behavior
Sunday, November 10, 13
343. 8. New possibilities
•
can you imagine a world w/o ruby?
•
Sunday, November 10, 13
possible w/the javascript revolution
344. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
Sunday, November 10, 13
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
345. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
facilitate the fantasy land of ruby everywhere
•
Sunday, November 10, 13
possible w/the javascript revolution
backend mri, jruby, rubinius
346. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
•
Sunday, November 10, 13
backend mri, jruby, rubinius
mirah - everywhere jvm runs
347. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
•
mirah - everywhere jvm runs
•
Sunday, November 10, 13
backend mri, jruby, rubinius
embedded mruby
348. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
•
mirah - everywhere jvm runs
•
embedded mruby
•
Sunday, November 10, 13
backend mri, jruby, rubinius
mobile
349. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
backend mri, jruby, rubinius
•
mirah - everywhere jvm runs
•
embedded mruby
•
mobile
•
Sunday, November 10, 13
rubymotion
350. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
backend mri, jruby, rubinius
•
mirah - everywhere jvm runs
•
embedded mruby
•
mobile
•
•
Sunday, November 10, 13
rubymotion
mobiruby
351. 8. New possibilities
•
can you imagine a world w/o ruby?
•
•
possible w/the javascript revolution
facilitate the fantasy land of ruby everywhere
•
backend mri, jruby, rubinius
•
mirah - everywhere jvm runs
•
embedded mruby
•
mobile
•
•
•
Sunday, November 10, 13
rubymotion
mobiruby
opal - everywhere javascript runs
353. Episode 1: The
Phantom JS Menace
Mesa use Javascript on the backend!
Mesa use Javascript everywhere!!!!
Mesa use Javascript in ways unintended...
Sunday, November 10, 13
354. Episode 2: Attack
of the Clones
Typescript
JSX
Sunday, November 10, 13
Coffescript
Dart
Fantom
355. Episode 3: Revenge
of the Sith
Windows 8 development using Javascript.
Evil Empire complete
http://conquent.com/bissellator/blogimg/darth_gates.jpg
Sunday, November 10, 13
356. Episode 4: A New
Hope
OPAL Wan Kenobi,
you’re my only hope
Sunday, November 10, 13
357. Episode 5: The
Empire Strikes Back
Join us, we have Ecmascript 6
Sunday, November 10, 13
358. Episode 6: Return
of the Jedi
Opal Viable, New Deathstar explodes
Sunday, November 10, 13
363. Call to arms
• hope for momentum like
rubinius
Sunday, November 10, 13
364. Call to arms
• hope for momentum like
rubinius
• rubyconf 06 - just an idea
Sunday, November 10, 13
365. Call to arms
• hope for momentum like
rubinius
• rubyconf 06 - just an idea
• rubyconf 07 - a movement
Sunday, November 10, 13
366. Call to arms
• hope for momentum like
rubinius
• rubyconf 06 - just an idea
• rubyconf 07 - a movement
• opal is farther along, if we
could make similar progress...
Sunday, November 10, 13
369. right now
• things are pretty good
• things could be better
Sunday, November 10, 13
370. right now
• things are pretty good
• things could be better
• more ruby compatibility
Sunday, November 10, 13
371. right now
• things are pretty good
• things could be better
• more ruby compatibility
• more libs, complete libs **
Sunday, November 10, 13
372. right now
• things are pretty good
• things could be better
• more ruby compatibility
• more libs, complete libs **
• documentation
Sunday, November 10, 13
373. right now
• things are pretty good
• things could be better
• more ruby compatibility
• more libs, complete libs **
• documentation
• we need your helP
Sunday, November 10, 13
376. things to do
• try it out,
• opalrb.org/try
Sunday, November 10, 13
377. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
Sunday, November 10, 13
378. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
Sunday, November 10, 13
379. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
Sunday, November 10, 13
380. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
• contribute, it’s just ruby
Sunday, November 10, 13
381. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
• contribute, it’s just ruby
• convert gems****, write new stuff, test, etc..
Sunday, November 10, 13
382. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
• contribute, it’s just ruby
• convert gems****, write new stuff, test, etc..
• be a garbage collector, change the world
Sunday, November 10, 13
383. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
• contribute, it’s just ruby
• convert gems****, write new stuff, test, etc..
• be a garbage collector, change the world
• have fun
Sunday, November 10, 13
384. things to do
• try it out,
• opalrb.org/try
• http://fkchang.github.io/opal-irb/indexembeddable.html
• communicate - irc, google group
• document
• contribute, it’s just ruby
• convert gems****, write new stuff, test, etc..
• be a garbage collector, change the world
• have fun
• be happy
Sunday, November 10, 13
390. resources
• opalrb.org
• github.com/opal
• irc opal
• google groups - not very active
• my blog funkworks.blogspot.com
• not a lot, but better than nothing
• more soon
Sunday, November 10, 13
391. thankful I am, for the
garbage collectors
Sunday, November 10, 13
392. thankful I am, for the
garbage collectors
• matz - ruby
Sunday, November 10, 13
393. thankful I am, for the
garbage collectors
• matz - ruby
• dhh - rails
Sunday, November 10, 13
394. thankful I am, for the
garbage collectors
• matz - ruby
• dhh - rails
• adam, meh, elia - opal
Sunday, November 10, 13
395. thankful I am, for the
garbage collectors
• matz - ruby
• dhh - rails
• adam, meh, elia - opal
• ruby and rails communities
Sunday, November 10, 13
396. thankful I am, for the
garbage collectors
• matz - ruby
• dhh - rails
• adam, meh, elia - opal
• ruby and rails communities
• George Lucas
Sunday, November 10, 13
397. thankful I am, for the
garbage collectors
• matz - ruby
• dhh - rails
• adam, meh, elia - opal
• ruby and rails communities
• George Lucas
• you
Sunday, November 10, 13
398. hedgeye
• hiring like everyone else
• NYC Area, Stamford CT
Sunday, November 10, 13