Skip to content
Browse files

Updates for boston.rb talk

  • Loading branch information...
1 parent b1d6c16 commit 621b76008928b24a7543b09bc4a96d6cfa443c43 @jasonm committed Oct 13, 2011
Showing with 130 additions and 368 deletions.
  1. +92 −314 index.html
  2. +38 −54 slides/index.md
View
406 index.html
@@ -1274,19 +1274,14 @@
<header><h1>Backbone.js on Rails</h1></header>
- <section><p>(This is an HTML slide deck. Press "h" for help, or use the arrow keys to navigate. Press "p" for presenter notes, where you'll find a bunch of links, especially towards the end.)</p>
+ <section><p>(This is an HTML slide deck. Press "h" for help, or use the arrow keys to navigate. Press "p" for presenter notes, where you'll find a bunch of links, especially towards the end.)</p>
</section>
</div>
<div class="presenter_notes">
<header><h1>Presenter Notes</h1></header>
<section>
- <ul>
-<li>Presenter introduction</li>
-<li>Hands up: Ruby, Rails, JavaScript, web apps, csmvc</li>
-</ul>
-
</section>
</div>
<footer>
@@ -1296,7 +1291,7 @@
</aside>
<aside class="page_number">
- 1/26
+ 1/20
</aside>
</footer>
</div>
@@ -1307,30 +1302,29 @@
<div class="slide">
<div class="inner">
- <header><h1>This talk</h1></header>
+ <header><h1>Web apps shifting client-side</h1></header>
- <section><ul>
-<li>Client-side frameworks</li>
-<li>Moving parts of Backbone</li>
-<li>Example</li>
-<li>Code dive</li>
-<li>Bonus topics</li>
-<li>Resources</li>
-</ul>
-</section>
-
</div>
<div class="presenter_notes">
<header><h1>Presenter Notes</h1></header>
<section>
- <h2>After this talk, you will:</h2>
+ <ul>
+<li>These days, some web apps have more code on the client than on the server.</li>
+<li>Who is seeing these trends? What are you doing about it?</li>
+<li>
+<p>How much JS?</p>
<ul>
-<li>Know why and how to use a client-side framework</li>
-<li>Be able to read up on a few of them</li>
-<li>Be able to follow along with Backbone tutorials</li>
-<li>Know how to add Backbone to a new or existing Rails app</li>
+<li>Airbrake: Almost 0</li>
+<li>Copycopter: 30%</li>
+<li>Trajectory 41%</li>
+<li>IoraHealth: 62%</li>
+</ul>
+</li>
+<li>
+<p>Hands up: Ruby, Rails, JavaScript, web apps, csmvc</p>
+</li>
</ul>
</section>
@@ -1342,7 +1336,7 @@
</aside>
<aside class="page_number">
- 2/26
+ 2/20
</aside>
</footer>
</div>
@@ -1353,27 +1347,30 @@
<div class="slide">
<div class="inner">
- <header><h1>Web apps shifting client-side</h1></header>
+ <header><h1>This talk</h1></header>
+ <section><ul>
+<li>Client-side frameworks</li>
+<li>Moving parts of Backbone</li>
+<li>Example</li>
+<li>Code dive</li>
+<li>Bonus topics</li>
+<li>Resources</li>
+</ul>
+</section>
+
</div>
<div class="presenter_notes">
<header><h1>Presenter Notes</h1></header>
<section>
- <ul>
-<li>These days, some web apps have more code on the client than on the server.</li>
-<li>Who is seeing these trends? What are you doing about it?</li>
-<li>
-<p>How much JS?</p>
+ <h2>After this talk, you will:</h2>
<ul>
-<li>Airbrake: Almost 0</li>
-<li>Copycopter: 30%</li>
-<li>Trajectory 41%</li>
-<li>IoraHealth: 62%</li>
-<li>Substance.io: 100%</li>
-</ul>
-</li>
+<li>Know why and how to use a client-side framework</li>
+<li>Be able to read up on a few of them</li>
+<li>Be able to follow along with Backbone tutorials</li>
+<li>Know how to add Backbone to a new or existing Rails app</li>
</ul>
</section>
@@ -1385,7 +1382,7 @@
</aside>
<aside class="page_number">
- 3/26
+ 3/20
</aside>
</footer>
</div>
@@ -1405,11 +1402,13 @@
<section>
<ul>
-<li>Server cause &amp; antipatterns: Req/response (CGI, EHTML) -&gt; procedural &amp; tag soup *SP.</li>
-<li>Client cause &amp; antipatterns: Async ($) -&gt; Deeply nested callbacks (if-like), Stateful (DOM) -&gt; app data stored in the DOM.</li>
+<li>Where do frameworks come from?</li>
+<li>Paradigm -&gt; path-least-resistance -&gt; implementation -&gt; architecture -&gt; technical debt</li>
+<li>Server: Req/response (CGI, EHTML) -&gt; procedural &amp; tag soup *SP.</li>
+<li>Client: Async ($) -&gt; Deeply nested callbacks (if-like), Stateful (DOM) -&gt; app data stored in the DOM.</li>
<li>Patterns for organization. MVC is one. Good for GUI.</li>
<li>MVC over HTTP is often stateless. Some state maintained with session</li>
-<li>MVC in GUI is stateful. Embrace this.</li>
+<li>CS-MVC in GUI is stateful. THIS IS OKAY!</li>
</ul>
</section>
@@ -1421,7 +1420,7 @@
</aside>
<aside class="page_number">
- 4/26
+ 4/20
</aside>
</footer>
</div>
@@ -1472,7 +1471,7 @@
</aside>
<aside class="page_number">
- 5/26
+ 5/20
</aside>
</footer>
</div>
@@ -1500,7 +1499,7 @@
</aside>
<aside class="page_number">
- 6/26
+ 6/20
</aside>
</footer>
</div>
@@ -1551,7 +1550,7 @@
</aside>
<aside class="page_number">
- 7/26
+ 7/20
</aside>
</footer>
</div>
@@ -1565,121 +1564,33 @@
<header><h1>Example</h1></header>
+ <section><ul>
+<li>http://backbonechat.herokuapp.com</li>
+<li>https://github.com/jasonm/chat_app</li>
+</ul>
+</section>
+
</div>
<div class="presenter_notes">
<header><h1>Presenter Notes</h1></header>
<section>
<ul>
-<li>Trajectory on local</li>
-<li>stories#index</li>
-</ul>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 8/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Walk through a request</h1></header>
-
-
- <section><ul>
+<li>https://github.com/jasonm/chat_app</li>
<li>URI: <code>/projects/oss/stories/#1</code></li>
<li><code>GET /projects/oss/stories/</code></li>
<li>Rails response: HTML, <code>&lt;script&gt;</code>s, JSON</li>
-</ul></section>
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 9/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Walk through a request</h1></header>
-
-
- <section><ul>
<li>Bootstrap collections</li>
<li>Instantiate router</li>
<li><code>Backbone.history.start()</code></li>
-</ul></section>
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 10/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Walk through a request</h1></header>
-
-
- <section><ul>
-<li>Route <code>'#1/issues/1'</code> fragment</li>
-<li>Dispatch to action</li>
-<li><code>new View(modelOrCollection)</code></li>
+<li>Route fragment</li>
+<li>Dispatch to backbone action</li>
+<li>Create view</li>
<li>event and data bindings</li>
<li><code>view.render()</code></li>
<li><code>_.template()</code></li>
<li><code>$('#some-elem').html(someHtml)</code></li>
-</ul></section>
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
+</ul>
</section>
</div>
@@ -1690,7 +1601,7 @@
</aside>
<aside class="page_number">
- 11/26
+ 8/20
</aside>
</footer>
</div>
@@ -1722,7 +1633,7 @@
<li>File organization for 3.1: Asset pipeline, <a href="https://github.com/codebrew/backbone-rails"><code>rails-backbone</code> gem</a></li>
<li>JSON APIs<ul>
<li><a href="https://github.com/jasonm/wizards/blob/master/config/initializers/wrap_parameters.rb"><code>ActiveRecord.include_root_in_json</code></a></li>
-<li>Rails 3.1 <a href="https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/params_wrapper.rb">Params Wrapper</a></li>
+<li>Rails 3.1 <a href="https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/params_wrapper.rb">Params Wrapper</a> / wrap_parameters</li>
<li>Model#as_json probably isnt the best place for presentation: Presenter object, <a href="https://github.com/nesquena/rabl">rabl</a></li>
</ul>
</li>
@@ -1740,7 +1651,7 @@
</aside>
<aside class="page_number">
- 12/26
+ 9/20
</aside>
</footer>
</div>
@@ -1777,35 +1688,7 @@
</aside>
<aside class="page_number">
- 13/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Testing</h1></header>
-
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 14/26
+ 10/20
</aside>
</footer>
</div>
@@ -1819,19 +1702,16 @@
<header><h1>Testing</h1></header>
- <section><ul>
-<li>It's just JavaScript!</li>
-</ul>
-</section>
-
</div>
<div class="presenter_notes">
<header><h1>Presenter Notes</h1></header>
<section>
<ul>
-<li>Yes it's just JavaScript.</li>
-<li>But...</li>
+<li>Business and presentation logic</li>
+<li>Stateful</li>
+<li>Asynchronous</li>
+<li>Modular, decoupled JS</li>
</ul>
</section>
@@ -1843,76 +1723,7 @@
</aside>
<aside class="page_number">
- 15/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Testing</h1></header>
-
-
- <section><ul>
-<li>It's just <strong>stateful and asynchronous business and presentation logic written in</strong> JavaScript!</li>
-</ul>
-</section>
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
-
- <ul>
-<li>Luckily...</li>
-</ul>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 16/26
- </aside>
- </footer>
- </div>
- </div>
-
- <!-- slide source: slides/index.md -->
- <div class="slide-wrapper">
- <div class="slide">
- <div class="inner">
-
- <header><h1>Testing</h1></header>
-
-
- <section><ul>
-<li>It's just stateful and asynchronous business and presentation logic written in <strong>modular, decoupled</strong> JavaScript!</li>
-</ul></section>
-
- </div>
- <div class="presenter_notes">
- <header><h1>Presenter Notes</h1></header>
- <section>
-
- </section>
- </div>
- <footer>
-
- <aside class="source">
- Source: <a href="slides/index.md">slides/index.md</a>
- </aside>
-
- <aside class="page_number">
- 17/26
+ 11/20
</aside>
</footer>
</div>
@@ -1963,7 +1774,7 @@
</aside>
<aside class="page_number">
- 18/26
+ 12/20
</aside>
</footer>
</div>
@@ -1997,7 +1808,7 @@
</aside>
<aside class="page_number">
- 19/26
+ 13/20
</aside>
</footer>
</div>
@@ -2040,7 +1851,7 @@
</aside>
<aside class="page_number">
- 20/26
+ 14/20
</aside>
</footer>
</div>
@@ -2068,7 +1879,7 @@
</aside>
<aside class="page_number">
- 21/26
+ 15/20
</aside>
</footer>
</div>
@@ -2101,7 +1912,7 @@
</aside>
<aside class="page_number">
- 22/26
+ 16/20
</aside>
</footer>
</div>
@@ -2137,7 +1948,7 @@
</aside>
<aside class="page_number">
- 23/26
+ 17/20
</aside>
</footer>
</div>
@@ -2152,11 +1963,11 @@
<section><ul>
+<li><a href="http://workshops.thoughtbot.com/backbone-js-on-rails?utm_source=jm-talk">Backbone on Rails eBook</a></li>
<li><a href="http://documentcloud.github.com/backbone/">Official Backbone docs</a></li>
<li><a href="http://documentcloud.github.com/backbone/docs/backbone.html">Annotated source code</a></li>
<li><a href="http://documentcloud.github.com/underscore/">Underscore docs</a> and <a href="http://documentcloud.github.com/underscore/docs/underscore.html">source</a></li>
<li><a href="https://groups.google.com/group/backbonejs">Backbone Google Group</a></li>
-<li><a href="http://workshops.thoughtbot.com/backbone-js-on-rails?utm_source=jm-talk">Backbone on Rails eBook</a></li>
<li><a href="http://peepcode.com/products/backbone-js">Peepcode episodes on Backbone</a></li>
</ul></section>
@@ -2174,7 +1985,7 @@
</aside>
<aside class="page_number">
- 24/26
+ 18/20
</aside>
</footer>
</div>
@@ -2211,7 +2022,7 @@
</aside>
<aside class="page_number">
- 25/26
+ 19/20
</aside>
</footer>
</div>
@@ -2229,7 +2040,6 @@
<li>Me:<ul>
<li><a href="mailto:jason.p.morrison@gmail.com">jason.p.morrison@gmail.com</a></li>
<li><a href="http://twitter.com/jayunit">http://twitter.com/jayunit</a></li>
-<li><a href="http://github.com/jasonm">http://github.com/jasonm</a></li>
<li><a href="http://jayunit.net">http://jayunit.net</a></li>
</ul>
</li>
@@ -2238,6 +2048,10 @@
<li><a href="http://github.com/jasonm/backbone-js-on-rails-talk">View slides source on GitHub</a></li>
</ul>
</li>
+<li>Code:<ul>
+<li><a href="http://github.com/jasonm/chat_app">View chat app source on GitHub</a></li>
+</ul>
+</li>
</ul></section>
</div>
@@ -2254,7 +2068,7 @@
</aside>
<aside class="page_number">
- 26/26
+ 20/20
</aside>
</footer>
</div>
@@ -2275,13 +2089,13 @@
<tr id="toc-row-2">
- <th><a href="#slide2">This talk</a></th>
+ <th><a href="#slide2">Web apps shifting client-side</a></th>
<td><a href="#slide2">2</a></td>
</tr>
<tr id="toc-row-3">
- <th><a href="#slide3">Web apps shifting client-side</a></th>
+ <th><a href="#slide3">This talk</a></th>
<td><a href="#slide3">3</a></td>
</tr>
@@ -2317,113 +2131,77 @@
<tr id="toc-row-9">
- <th><a href="#slide9">Walk through a request</a></th>
+ <th><a href="#slide9">Rails integration</a></th>
<td><a href="#slide9">9</a></td>
</tr>
<tr id="toc-row-10">
- <th><a href="#slide10">Walk through a request</a></th>
+ <th><a href="#slide10">Bonus stuff!</a></th>
<td><a href="#slide10">10</a></td>
</tr>
<tr id="toc-row-11">
- <th><a href="#slide11">Walk through a request</a></th>
+ <th><a href="#slide11">Testing</a></th>
<td><a href="#slide11">11</a></td>
</tr>
<tr id="toc-row-12">
- <th><a href="#slide12">Rails integration</a></th>
+ <th><a href="#slide12">Testing</a></th>
<td><a href="#slide12">12</a></td>
</tr>
<tr id="toc-row-13">
- <th><a href="#slide13">Bonus stuff!</a></th>
+ <th><a href="#slide13">pushState</a></th>
<td><a href="#slide13">13</a></td>
</tr>
<tr id="toc-row-14">
- <th><a href="#slide14">Testing</a></th>
+ <th><a href="#slide14">Push synchronization</a></th>
<td><a href="#slide14">14</a></td>
</tr>
<tr id="toc-row-15">
- <th><a href="#slide15">Testing</a></th>
+ <th><a href="#slide15">Resources</a></th>
<td><a href="#slide15">15</a></td>
</tr>
<tr id="toc-row-16">
- <th><a href="#slide16">Testing</a></th>
+ <th><a href="#slide16">Get your code on</a></th>
<td><a href="#slide16">16</a></td>
</tr>
<tr id="toc-row-17">
- <th><a href="#slide17">Testing</a></th>
+ <th><a href="#slide17">Further reading: Books on JavaScript</a></th>
<td><a href="#slide17">17</a></td>
</tr>
<tr id="toc-row-18">
- <th><a href="#slide18">Testing</a></th>
+ <th><a href="#slide18">Further reading: Online resources</a></th>
<td><a href="#slide18">18</a></td>
</tr>
<tr id="toc-row-19">
- <th><a href="#slide19">pushState</a></th>
+ <th><a href="#slide19">Recap</a></th>
<td><a href="#slide19">19</a></td>
</tr>
<tr id="toc-row-20">
- <th><a href="#slide20">Push synchronization</a></th>
+ <th><a href="#slide20">Thanks!</a></th>
<td><a href="#slide20">20</a></td>
</tr>
- <tr id="toc-row-21">
- <th><a href="#slide21">Resources</a></th>
- <td><a href="#slide21">21</a></td>
- </tr>
-
-
- <tr id="toc-row-22">
- <th><a href="#slide22">Get your code on</a></th>
- <td><a href="#slide22">22</a></td>
- </tr>
-
-
- <tr id="toc-row-23">
- <th><a href="#slide23">Further reading: Books on JavaScript</a></th>
- <td><a href="#slide23">23</a></td>
- </tr>
-
-
- <tr id="toc-row-24">
- <th><a href="#slide24">Further reading: Online resources</a></th>
- <td><a href="#slide24">24</a></td>
- </tr>
-
-
- <tr id="toc-row-25">
- <th><a href="#slide25">Recap</a></th>
- <td><a href="#slide25">25</a></td>
- </tr>
-
-
- <tr id="toc-row-26">
- <th><a href="#slide26">Thanks!</a></th>
- <td><a href="#slide26">26</a></td>
- </tr>
-
-
</table>
</div>
View
92 slides/index.md
@@ -1,10 +1,26 @@
# Backbone.js on Rails
-(This is an HTML slide deck. Press "h" for help, or use the arrow keys to navigate. Press "p" for presenter notes, where you'll find a bunch of links, especially towards the end.)
+(This is an HTML slide deck. Press "h" for help, or use the arrow keys to navigate. Press "p" for presenter notes, where you'll find a bunch of links, especially towards the end.)
+
+
+# Presenter Notes
+
+---
+# Web apps shifting client-side
+
+
# Presenter Notes
-* Presenter introduction
+* These days, some web apps have more code on the client than on the server.
+* Who is seeing these trends? What are you doing about it?
+* How much JS?
+
+ * Airbrake: Almost 0
+ * Copycopter: 30%
+ * Trajectory 41%
+ * IoraHealth: 62%
+
* Hands up: Ruby, Rails, JavaScript, web apps, csmvc
---
@@ -26,30 +42,17 @@
* Know how to add Backbone to a new or existing Rails app
---
-# Web apps shifting client-side
-
-# Presenter Notes
-
-* These days, some web apps have more code on the client than on the server.
-* Who is seeing these trends? What are you doing about it?
-* How much JS?
-
- * Airbrake: Almost 0
- * Copycopter: 30%
- * Trajectory 41%
- * IoraHealth: 62%
- * Substance.io: 100%
-
----
# Organize your JavaScript
# Presenter Notes
-* Server cause & antipatterns: Req/response (CGI, EHTML) -> procedural & tag soup *SP.
-* Client cause & antipatterns: Async ($) -> Deeply nested callbacks (if-like), Stateful (DOM) -> app data stored in the DOM.
+* Where do frameworks come from?
+* Paradigm -> path-least-resistance -> implementation -> architecture -> technical debt
+* Server: Req/response (CGI, EHTML) -> procedural & tag soup *SP.
+* Client: Async ($) -> Deeply nested callbacks (if-like), Stateful (DOM) -> app data stored in the DOM.
* Patterns for organization. MVC is one. Good for GUI.
* MVC over HTTP is often stateless. Some state maintained with session
-* MVC in GUI is stateful. Embrace this.
+* CS-MVC in GUI is stateful. THIS IS OKAY!
---
# But which framework?
@@ -104,31 +107,21 @@
---
# Example
-# Presenter Notes
-
-* Trajectory on local
-* stories#index
+* http://backbonechat.herokuapp.com
+* https://github.com/jasonm/chat_app
----
-# Walk through a request
+# Presenter Notes
+* https://github.com/jasonm/chat_app
* URI: `/projects/oss/stories/#1`
* `GET /projects/oss/stories/`
* Rails response: HTML, `<script>`s, JSON
-
----
-# Walk through a request
-
* Bootstrap collections
* Instantiate router
* `Backbone.history.start()`
-
----
-# Walk through a request
-
-* Route `'#1/issues/1'` fragment
-* Dispatch to action
-* `new View(modelOrCollection)`
+* Route fragment
+* Dispatch to backbone action
+* Create view
* event and data bindings
* `view.render()`
* `_.template()`
@@ -148,7 +141,7 @@
* File organization for 3.1: Asset pipeline, [`rails-backbone` gem](https://github.com/codebrew/backbone-rails)
* JSON APIs
* [`ActiveRecord.include_root_in_json`](https://github.com/jasonm/wizards/blob/master/config/initializers/wrap_parameters.rb)
- * Rails 3.1 [Params Wrapper](https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/params_wrapper.rb)
+ * Rails 3.1 [Params Wrapper](https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/params_wrapper.rb) / wrap_parameters
* Model#as_json probably isnt the best place for presentation: Presenter object, [rabl](https://github.com/nesquena/rabl)
* [CSRF Token](https://github.com/codebrew/backbone-rails/blob/master/vendor/assets/javascripts/backbone_rails_sync.js#L26-27)
@@ -165,22 +158,12 @@
---
# Testing
----
-# Testing
-* It's just JavaScript!
-# Presenter Notes
-* Yes it's just JavaScript.
-* But...
-
----
-# Testing
-* It's just **stateful and asynchronous business and presentation logic written in** JavaScript!
# Presenter Notes
-* Luckily...
----
-# Testing
-* It's just stateful and asynchronous business and presentation logic written in **modular, decoupled** JavaScript!
+* Business and presentation logic
+* Stateful
+* Asynchronous
+* Modular, decoupled JS
---
# Testing
@@ -244,11 +227,11 @@
---
# Further reading: Online resources
+* [Backbone on Rails eBook](http://workshops.thoughtbot.com/backbone-js-on-rails?utm_source=jm-talk)
* [Official Backbone docs](http://documentcloud.github.com/backbone/)
* [Annotated source code](http://documentcloud.github.com/backbone/docs/backbone.html)
* [Underscore docs](http://documentcloud.github.com/underscore/) and [source](http://documentcloud.github.com/underscore/docs/underscore.html)
* [Backbone Google Group](https://groups.google.com/group/backbonejs)
-* [Backbone on Rails eBook](http://workshops.thoughtbot.com/backbone-js-on-rails?utm_source=jm-talk)
* [Peepcode episodes on Backbone](http://peepcode.com/products/backbone-js)
---
@@ -267,8 +250,9 @@
* Me:
* [jason.p.morrison@gmail.com](mailto:jason.p.morrison@gmail.com)
* [http://twitter.com/jayunit](http://twitter.com/jayunit)
- * [http://github.com/jasonm](http://github.com/jasonm)
* [http://jayunit.net](http://jayunit.net)
* Slides:
* [View slides online](http://jayunit.net/backbone-js-on-rails-talk)
* [View slides source on GitHub](http://github.com/jasonm/backbone-js-on-rails-talk)
+* Code:
+ * [View chat app source on GitHub](http://github.com/jasonm/chat_app)

0 comments on commit 621b760

Please sign in to comment.
Something went wrong with that request. Please try again.