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 Kiss JavaScript Goodbye With Opal

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 Kiss JavaScript Goodbye With Opal (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

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Kiss JavaScript Goodbye With Opal