Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Volt: Ruby Web Development Recharged
Search
Bozhidar Batsov
April 18, 2015
Programming
2
410
Volt: Ruby Web Development Recharged
Slide deck from my talk at the BulgariaWebSummit 2015.
Bozhidar Batsov
April 18, 2015
Tweet
Share
More Decks by Bozhidar Batsov
See All by Bozhidar Batsov
Clojure: The Bad Parts
bbatsov
0
44
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
140
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
140
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
17
Victims of Complexity
bbatsov
0
310
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
260
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
450
The Elements of Programming Style (HackConf 2019)
bbatsov
0
180
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
280
Other Decks in Programming
See All in Programming
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
230
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
810
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
XP, Testing and ninja testing
m_seki
3
210
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
570
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
110
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
580
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
420
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
ニーリーにおけるプロダクトエンジニア
nealle
0
580
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
140
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Being A Developer After 40
akosma
90
590k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
230
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Fireside Chat
paigeccino
37
3.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Transcript
Volt: Ruby Web Development Recharged by Bozhidar Batsov
@bbatsov
Joan
None
Few important things you need to know about me
None
None
I’m an Emacs fanatic
I still have nightmares about PHP4
I love Ruby
I tolerate Rails
I don’t like JavaScript
None
Why am I here?
Welcome to Rubylandia!
Ruby (2005)
None
None
None
Ruby (2006)
OMG, Rails is amazing!
Ruby (2008)
OMG, Rails is amazing & useful!
Ruby (today)
Rails is somewhat boring…
Rails is the new JEE!
Aren’t all the cool devs doing Clojure now?
Hell, yeah!!!
Rails innovation (2005-2008) Convention over configuration Interactive development Scaffolding ActiveRecord
REST
Rails innovation (today) Turbolinks foreign keys background jobs
None
None
10% 90% Rails Other
4% 96% Web Development Other
Fuck this shit!!!
Rails, Rails, Rails
Development Complexity
0 25 50 75 100 1999 2000 2001 2002 2003
2004 2005 2006 2007 2009 2011 2015
Web development (2005) Model View Controller Routing Server Client
Web development (2006) Model View Controller Routing Server Client AJAX
RandomJS
Web development (2010) Model View Controller Routing Server Client AJAX
REST Assets RandomJS
Web development (2013) Model View Controller Routing Server Client AJAX
REST Model View Controller Routing Assets Assets
None
What’s the solution?
VBScript!
Isomorphic Development
Isomorphic?
Isomorphic being of identical or similar form, shape, or structure
Same code runs on the client & the server
Web development (2015) Model View Controller Routing Server Client AJAX
REST Model View Controller Routing Assets Assets Shared Auto Sync
None
Meet Volt
Volt is isomorphic
Models, views, controllers & routing are shared between the client
and the server
WOW!!!
Meteor.js
Ruby on the server-side, Ruby on the client-side
Ruby on the server- side, Ruby on the client- side
Ruby on the server-side
Ruby on the client-side
Fuck this shit!!!
Ruby > JavaScript
None
None
Ruby’s advantages Does’t have this Sane nil semantics No need
for a book called “Ruby: The Good Parts” Standard library Do you really need more?
Fuck this shit!!!
Opal.rb http://opalrb.org/
Does this shit work?
Yes!
def hello(name) puts "Hello, #{name.capitalize}!" end hello("bruce")
/* Generated by Opal 0.7.0 */ (function(Opal) { Opal.dynamic_require_severity =
"error"; var self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice; Opal.add_stubs(['$puts', '$capitalize', '$hello']); Opal.Object.$$proto.$hello = function(name) { var self = this; return self.$puts("Hello, " + (name.$capitalize()) + "!"); }; return self.$hello("bruce"); })(Opal);
Is this shit any good?
Debatable
Opal features Source maps ruby-spec compatibility Small footprint Little performance
overhead
Ruby compatibility Mostly compatible with Ruby 2.0 Implements most of
the Ruby stdlib Has immutable strings (unlike Ruby)
Fuck this shit!!!
Volt Architecture
MVC Controller View Model
MVVM Controller/ ViewModel View Model
Volt is reactive
Web Sockets FTW
<:Body> <h1>Todo List</h1> <form e-submit="add_todo" role="form"> <div class="form-group"> <label>Todo</label> <input
class="form-control" type="text" value="{{ page._new_todo }}" /> </div> </form>
def add_todo page._todos << { name: page._new_todo } page._new_todo =
'' end
<:Body> <h1>Todo List</h1> <table class="todo-table"> {{ page._todos.each do |todo| }}
<tr> <td>{{ todo._name }}</td> </tr> {{ end }} </table>
None
Demo
Interesting bits Components User management is built-in Tasks
Volt’s not perfect Opal isn’t quite there yet MongoDB is
the only supported datastore Many features are work in progress The documentation is kind of lacking
Contribute to Volt!
https://github.com/voltrb
0 25 50 75 100 1998 1999 2000 2001 2002
2003 2004 2005 2006 2009 2011 2015
0 25 50 75 100 1998 1999 2000 2001 2002
2003 2004 2005 2006 2009 2011 2015 2016
Hell, yeah!!!
Getting Started with Volt Official docs (http://voltframework.com/docs) gitter office hours
video tutorials
Felina
@bbatsov http://batsov.com http://emacsredux.com
[email protected]