SlideShare a Scribd company logo
1 of 70
Download to read offline
my-preamble
OPAL - CHAPTER 4: A
NEW HOPE
FORREST CHANG
FKCHANG2000@YAHOO.COM
WHO CODES RUBY?
WHO WORKS WITH THE WEB?
WHO LIKES JAVASCRIPT
WHO LIKES RUBY BETTER?
from
http://dark--romance.deviantart.com/art/Screamy-and-
Bee-love-Ruby-146852940
YOU ARE MY AUDIENCE
THE PITCH
OPAL WILL MAKE YOU HAPPY
STEP BACK
(from:
)
http://www.celiajohnsononline.com/knee-exercises-
osteoarthritis-joint-pain/
WHAT IS OPAL?
Ruby to JS Source to Source, similar to Coffescript
Runtime (supports method missing, operator overloading,
etc)
TOTALLY AWESOME
AS CODE
class Opal < Ruby
include Browser::Access
include Javascript::Interaction
runs_in :browser
runs_in :node
end
WHAT'S CURRENTLY UNDER
GITHUB.COM/OPAL
PAGE 2
THE RUBY WAY
Matz wrote in an introductory article to 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."
OPAL IS THE RUBY WAY
(from
)
http://www.get-covers.com/do-more-of-what-makes-you-
happy/
OPAL IS JDD FOR ME
Joy Driven Development
no need for it, but I can't stop coding
Forrest just loves to write opal (Test Infected parody)
WHAT IF YOU CODE RUBY IN THE BROWSER?
TOP 7 REASONS WHY OPAL WILL MAKE YOU
HAPPY
1. It is a viable Ruby
2. Greenspun's 10th Rule, Opal Edition
3. Solves things the Ruby way
4. Tools you already know and love
5. Easy integration with Ruby
6. Better tools (In Browser)
7. A new future
#1 VIABLE - NOT A TOY
In production - 5 + apps, 2 more coming soon
Real Ruby1.9.3 - compliant (mostly)
passes 1377 rubyspec examples
runs asciidoc gem unmodified
runs mspec gem unmodified
can compile itself
Capable of compiling complex code
Is written in Ruby, easy to contribute
RUBY LANGUAGE FEATURES IN OPAL
classes
modules & mixins
singleton methods
method_missing
arity checks
lambda
blocks
yield
CONSTANTS
global variables
MORE FEATURES
class variables
instance variable
Enumerable
BasicObject
Kernel
NilClass
Range
Hash
String Interpolation
Heredocs
%w splits
DON'T UNDERESTIMATE THE POWER OF A
BETTER LANGUAGE
opal-irb, opal-inspector, easy to write
leads us to Greenspun's 10th rule
GREENSPUN'S 10TH RULE
Any sufficiently complicated C or Fortran program contains
an ad hoc, informally-specified, bug-ridden, slow
implementation of half of Common Lisp.
#2 GREENSPUN'S 10TH RULE, OPAL EDITION
Any sufficiently complicated Javascript program contains an
ad hoc, informally-specified, bug-ridden, slow implementation
of half of Ruby
JAVASCRIPT EFFORTS THAT IMITATE RUBY OR
RAILS
PROTOTYPE
UNDERSCORE
HTTP://RUBYJS.ORG
STRUKT
STRINGJS
HTTP://JSCLASS.JCOGLAN.COM
HTTP://CODE.GOOGLE.COM/P/JOOSE-JS/
HTTP://BLOG.JAVASCRIPTMVC.COM/?P=61
HTTPS://GITHUB.COM/TOBEYTAILOR/DEF.JS
HTTP://YEHUDAKATZ.COM/2012/01/10/JAVASC
NEEDS-BLOCKS/
HTTP://WWW.CODEPROJECT.COM/ARTICLES/314
IN-HUMAX-V0-3-EXTENDING-YOUR-JAVASCRIP
HTTP://WWW.SCATTERPOLL.COM/#TITLE-
SLIDE
ACTIVEJS
REDSCRIPT
FORML
OTHER ATTEMPTS TO DO RUBY ON JS
(from:
)
https://github.com/jashkenas/coffee-script/wiki/List-of-
languages-that-compile-to-JS
WHY NOT THE REAL THING?
OPAL IS RUBY
#3 SOLVING THINGS THE RUBY WAY
packaging/modules
javascript integration
testing
PACKAGING AND MODULE
JAVASCRIPT MODULES
long article
AMD
CommonJS
Harmony
http://addyosmani.com/writing-modular-js/
MODULES
Do This
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or objec
t*/
);
// 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
And This
require(['foo', 'bar'], function ( foo, bar ) {
// rest of your code here
foo.doSomething();
});
RUBY
require
uses gems
require 'file_or_gem_you_want'
OPAL
require
uses gems
opal-sprockets handles requires
also include templates
require 'file_gem_template_you_want'
FOR NON RAILS STANDALONE - RAKEFILE
require 'bundler/setup'
# require 'opal/rake_task'
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
FOR NON RAILS STANDALONE APP-JQCONSOLE.RB
require 'opal'
require 'opal-jquery'
require 'opal-parser'
require 'opal_irb_jqconsole'
Document.ready? do
OpalIrbJqconsole.create("#console")
end
JAVASCRIPT INTEGRATION
x strings (backticks %x)
method missing
window = `window`
window.location
TESTING
opal-spec
rake/phantomjs
in browser
OPAL-SPEC
#4 THE TOOLS YOU KNOW AND LOVE
language - Ruby
editor - emacs, vim, sublime, Rubymine, etc.
Rake
rspec (sorry DHH)
guard
<fill in the ruby tool> - remember it's just Ruby
#5 EASY INTEGRATION WITH RUBY
opal-rails
opal-sprockets (already shown in modules)
it's Ruby
OPAL RAILS
https://github.com/opal/opal-rails
#6 NEW IN BROWSER TOOLS
opal-irb
opal-inspector
OPAL-IRB
irb for opal
history
readline controls
multiline edit (over all of history)
send a link - live gist
OPAL-INSPECTOR
inspired by amber.js in browser Smalltalk like code browser
change the paradigm of development
develop in browser w/better tools
persistent live Opal objects is similar to Smalltalk image
DEMOS
opal-irb
opal-inspector
Source Maps (head has broken it somewhat though)
QUICK LOOK AT CODE
only 440 lines for opal-inspector current state
very short, small classes
didn't need a framework
#7 A NEW FUTURE (HOPE)
in browser dev, goodness from Smalltalk, Ruby and Lisp
Machines
meteor.js like same code on both sides
blurring front and back
1 language…
THERE CAN ONLY BE ONE
May that language be Ruby/Opal
CALL TO ARMS
things are good
they can be better
need your help
HELP
try it out
talk, google group, irc
document
contribute, it's just Ruby
have fun
KISS JAVASCRIPT GOODBYE
Created by fkchang.

More Related Content

What's hot

Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails PresentationChanHan Hy
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on RailsManoj Kumar
 
Ruby On Rails Basics
Ruby On Rails BasicsRuby On Rails Basics
Ruby On Rails BasicsAmit Solanki
 
I18nize Scala programs à la gettext
I18nize Scala programs à la gettextI18nize Scala programs à la gettext
I18nize Scala programs à la gettextNgoc Dao
 
Rails development environment talk
Rails development environment talkRails development environment talk
Rails development environment talkReuven Lerner
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBrian Sam-Bodden
 
Myphp-busters: symfony framework
Myphp-busters: symfony frameworkMyphp-busters: symfony framework
Myphp-busters: symfony frameworkStefan Koopmanschap
 
Flickr Architecture Presentation
Flickr Architecture PresentationFlickr Architecture Presentation
Flickr Architecture Presentationeraz
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with RubyAnis Ahmad
 
Myphp-busters: symfony framework (PHPCon.it)
Myphp-busters: symfony framework (PHPCon.it)Myphp-busters: symfony framework (PHPCon.it)
Myphp-busters: symfony framework (PHPCon.it)Stefan Koopmanschap
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails PresentationJoost Hietbrink
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)bryanbibat
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using ScalaNgoc Dao
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)srigi
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]Huy Do
 
Automating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Automating Your Daily Tasks with Scripting - RubyConf 2015 TaiwanAutomating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Automating Your Daily Tasks with Scripting - RubyConf 2015 TaiwanAdler Hsieh
 

What's hot (19)

Ruby On Rails Presentation
Ruby On Rails PresentationRuby On Rails Presentation
Ruby On Rails Presentation
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Rails
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Ruby On Rails Basics
Ruby On Rails BasicsRuby On Rails Basics
Ruby On Rails Basics
 
Hanami
HanamiHanami
Hanami
 
I18nize Scala programs à la gettext
I18nize Scala programs à la gettextI18nize Scala programs à la gettext
I18nize Scala programs à la gettext
 
Rails development environment talk
Rails development environment talkRails development environment talk
Rails development environment talk
 
New features of rails 5
New features of rails 5New features of rails 5
New features of rails 5
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRuby
 
Myphp-busters: symfony framework
Myphp-busters: symfony frameworkMyphp-busters: symfony framework
Myphp-busters: symfony framework
 
Flickr Architecture Presentation
Flickr Architecture PresentationFlickr Architecture Presentation
Flickr Architecture Presentation
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
 
Myphp-busters: symfony framework (PHPCon.it)
Myphp-busters: symfony framework (PHPCon.it)Myphp-busters: symfony framework (PHPCon.it)
Myphp-busters: symfony framework (PHPCon.it)
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]
 
Automating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Automating Your Daily Tasks with Scripting - RubyConf 2015 TaiwanAutomating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
Automating Your Daily Tasks with Scripting - RubyConf 2015 Taiwan
 

Viewers also liked

すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したTomohiko Himura
 
Isomorphic App Development with Ruby and Volt - Rubyconf2014
Isomorphic App Development with Ruby and Volt - Rubyconf2014Isomorphic App Development with Ruby and Volt - Rubyconf2014
Isomorphic App Development with Ruby and Volt - Rubyconf2014ryanstout
 
Cardapio Cartoon - Portfolio de Personagens
Cardapio Cartoon - Portfolio de PersonagensCardapio Cartoon - Portfolio de Personagens
Cardapio Cartoon - Portfolio de PersonagensBruno Pagani
 
きゃらみらーでユニティちゃんと踊ろう!
きゃらみらーでユニティちゃんと踊ろう!きゃらみらーでユニティちゃんと踊ろう!
きゃらみらーでユニティちゃんと踊ろう!Satoshi Maemoto
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahNick Plante
 
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahCharles Nutter
 
RoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることRoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることc-mitsuba
 
Introducing Windows 10 Universal Driver
Introducing Windows 10 Universal DriverIntroducing Windows 10 Universal Driver
Introducing Windows 10 Universal DriverAtomu Hidaka
 
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話Seigo Tanaka
 
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる5t111111
 
HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編Takashi Yoshinaga
 
20161126 vrgj ginza_1 中間発表
20161126 vrgj ginza_1 中間発表20161126 vrgj ginza_1 中間発表
20161126 vrgj ginza_1 中間発表yuu jii
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Yuta Matsumura
 
You say "Select!" for HoloLens
You say "Select!" for HoloLensYou say "Select!" for HoloLens
You say "Select!" for HoloLensTomoto Washio
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Kohei Asai
 
ARグラス基礎講座 位置トラッキングへの期待と注意
ARグラス基礎講座 位置トラッキングへの期待と注意ARグラス基礎講座 位置トラッキングへの期待と注意
ARグラス基礎講座 位置トラッキングへの期待と注意AmadeusSVX
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & developmentc-mitsuba
 
20121019-jenkins-akiko_pusu.pdf
20121019-jenkins-akiko_pusu.pdf20121019-jenkins-akiko_pusu.pdf
20121019-jenkins-akiko_pusu.pdfakiko_pusu
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますToshio Ehara
 

Viewers also liked (20)

すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試した
 
Isomorphic App Development with Ruby and Volt - Rubyconf2014
Isomorphic App Development with Ruby and Volt - Rubyconf2014Isomorphic App Development with Ruby and Volt - Rubyconf2014
Isomorphic App Development with Ruby and Volt - Rubyconf2014
 
Cardapio Cartoon - Portfolio de Personagens
Cardapio Cartoon - Portfolio de PersonagensCardapio Cartoon - Portfolio de Personagens
Cardapio Cartoon - Portfolio de Personagens
 
きゃらみらーでユニティちゃんと踊ろう!
きゃらみらーでユニティちゃんと踊ろう!きゃらみらーでユニティちゃんと踊ろう!
きゃらみらーでユニティちゃんと踊ろう!
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - Mirah
 
Rejectkaigi 2010
Rejectkaigi 2010Rejectkaigi 2010
Rejectkaigi 2010
 
RoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできることRoomAlive - HoloLensに向けていまできること
RoomAlive - HoloLensに向けていまできること
 
Introducing Windows 10 Universal Driver
Introducing Windows 10 Universal DriverIntroducing Windows 10 Universal Driver
Introducing Windows 10 Universal Driver
 
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話
ひとまずHoloLensと自分の周辺技術(WEB・IoT)と混ぜた話
 
Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる
 
HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編
 
20161126 vrgj ginza_1 中間発表
20161126 vrgj ginza_1 中間発表20161126 vrgj ginza_1 中間発表
20161126 vrgj ginza_1 中間発表
 
Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~Jenkins使ってみた~Windows編~
Jenkins使ってみた~Windows編~
 
You say "Select!" for HoloLens
You say "Select!" for HoloLensYou say "Select!" for HoloLens
You say "Select!" for HoloLens
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
 
ARグラス基礎講座 位置トラッキングへの期待と注意
ARグラス基礎講座 位置トラッキングへの期待と注意ARグラス基礎講座 位置トラッキングへの期待と注意
ARグラス基礎講座 位置トラッキングへの期待と注意
 
HoloLens first impression & development
HoloLens first impression & developmentHoloLens first impression & development
HoloLens first impression & development
 
20121019-jenkins-akiko_pusu.pdf
20121019-jenkins-akiko_pusu.pdf20121019-jenkins-akiko_pusu.pdf
20121019-jenkins-akiko_pusu.pdf
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
 

Similar to Opal chapter 4_a_new_hope

Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MePanagiotis Papadopoulos
 
A bridge between php and ruby
A bridge between php and ruby A bridge between php and ruby
A bridge between php and ruby do_aki
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To RailsEric Gruber
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaKeith Bennett
 
DevOps in PHP environment
DevOps in PHP environmentDevOps in PHP environment
DevOps in PHP environmentEvaldo Felipe
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Racksickill
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overviewThomas Asikis
 
Scripting OS X with Applescript, without Applescript
Scripting OS X with Applescript, without ApplescriptScripting OS X with Applescript, without Applescript
Scripting OS X with Applescript, without ApplescriptMatt Patterson
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on RailsDelphiCon
 
JRuby in the enterprise
JRuby in the enterpriseJRuby in the enterprise
JRuby in the enterpriseJerry Gulla
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
Alive and Well with Java 8
Alive and Well with Java 8Alive and Well with Java 8
Alive and Well with Java 8Adam Pelsoczi
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)True-Vision
 

Similar to Opal chapter 4_a_new_hope (20)

Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby Me
 
A bridge between php and ruby
A bridge between php and ruby A bridge between php and ruby
A bridge between php and ruby
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To Rails
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
DevOps in PHP environment
DevOps in PHP environmentDevOps in PHP environment
DevOps in PHP environment
 
Building web framework with Rack
Building web framework with RackBuilding web framework with Rack
Building web framework with Rack
 
How DSL works on Ruby
How DSL works on RubyHow DSL works on Ruby
How DSL works on Ruby
 
Ugo Cei Presentation
Ugo Cei PresentationUgo Cei Presentation
Ugo Cei Presentation
 
Ruby
RubyRuby
Ruby
 
Iq rails
Iq railsIq rails
Iq rails
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
Ruby on Rails - An overview
Ruby on Rails -  An overviewRuby on Rails -  An overview
Ruby on Rails - An overview
 
Scripting OS X with Applescript, without Applescript
Scripting OS X with Applescript, without ApplescriptScripting OS X with Applescript, without Applescript
Scripting OS X with Applescript, without Applescript
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
JRuby in the enterprise
JRuby in the enterpriseJRuby in the enterprise
JRuby in the enterprise
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Alive and Well with Java 8
Alive and Well with Java 8Alive and Well with Java 8
Alive and Well with Java 8
 
Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)Rails Presentation (Anton Dmitriyev)
Rails Presentation (Anton Dmitriyev)
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in ruby
 

More from Forrest Chang

Crystal is a Rubyists friend (quick anecdote)
Crystal is a Rubyists friend (quick anecdote)Crystal is a Rubyists friend (quick anecdote)
Crystal is a Rubyists friend (quick anecdote)Forrest Chang
 
Making terminal based apps w:ruby
Making terminal based apps w:rubyMaking terminal based apps w:ruby
Making terminal based apps w:rubyForrest Chang
 
Working Effectively with Legacy Javascript code in Opal
Working Effectively with Legacy Javascript code in OpalWorking Effectively with Legacy Javascript code in Opal
Working Effectively with Legacy Javascript code in OpalForrest Chang
 
Ruby-ying Javascript: Avoiding jQuery Spaghetti
Ruby-ying Javascript: Avoiding jQuery SpaghettiRuby-ying Javascript: Avoiding jQuery Spaghetti
Ruby-ying Javascript: Avoiding jQuery SpaghettiForrest Chang
 
6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friendForrest Chang
 
Data Intensive RIAs on Rails with very little code (Netzke)
Data Intensive RIAs on Rails with very little code (Netzke)Data Intensive RIAs on Rails with very little code (Netzke)
Data Intensive RIAs on Rails with very little code (Netzke)Forrest Chang
 

More from Forrest Chang (10)

Crystal is a Rubyists friend (quick anecdote)
Crystal is a Rubyists friend (quick anecdote)Crystal is a Rubyists friend (quick anecdote)
Crystal is a Rubyists friend (quick anecdote)
 
Making terminal based apps w:ruby
Making terminal based apps w:rubyMaking terminal based apps w:ruby
Making terminal based apps w:ruby
 
Working Effectively with Legacy Javascript code in Opal
Working Effectively with Legacy Javascript code in OpalWorking Effectively with Legacy Javascript code in Opal
Working Effectively with Legacy Javascript code in Opal
 
Opal-hot-reloader
Opal-hot-reloaderOpal-hot-reloader
Opal-hot-reloader
 
Ruby-ying Javascript: Avoiding jQuery Spaghetti
Ruby-ying Javascript: Avoiding jQuery SpaghettiRuby-ying Javascript: Avoiding jQuery Spaghetti
Ruby-ying Javascript: Avoiding jQuery Spaghetti
 
Rubyconf 2014 recap
Rubyconf 2014 recapRubyconf 2014 recap
Rubyconf 2014 recap
 
6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend6 reasons Jubilee could be a Rubyist's new best friend
6 reasons Jubilee could be a Rubyist's new best friend
 
Opal a new_hope
Opal a new_hopeOpal a new_hope
Opal a new_hope
 
Data Intensive RIAs on Rails with very little code (Netzke)
Data Intensive RIAs on Rails with very little code (Netzke)Data Intensive RIAs on Rails with very little code (Netzke)
Data Intensive RIAs on Rails with very little code (Netzke)
 
Rubyconf2012 recap
Rubyconf2012 recapRubyconf2012 recap
Rubyconf2012 recap
 

Recently uploaded

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 

Recently uploaded (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Opal chapter 4_a_new_hope