• SAN DIEGO, CA / FEB 10 - 11, 2014 •

EVERYTHING A GROWING WEB DEVELOPER NEEDS TO KNOW ABOUT BUILDING MODERN WEBSITES AND APPLICATIONS.

• ABOUT •

Part training, part conference, Roost combines the best of both
experiences to give you a comprehensive narrative with real-world
application of core programming principles. You'll be guided through the
process of architecting, testing, and collaboratively building
a web-application. This February at Roost, explore core web-development
principles and best-practices while seeing them in action.

We've made this Roost experience even more complete by partnering with
our friends at the
jQuery Foundation to bring you four days of developer-focused
events. Follow up two days of immersive, fast-paced teaching with the
latest in jQuery, jQuery projects, code architecture and organization,
best practices and emerging browser technologies. All four days will be
in the same venue so that you can focus on getting the most out of this
great event, instead of on logistics of where to go.

• SPEAKERS •

Ben Alman is the author of numerous jQuery plugins and open source projects such as Grunt, the popular task-based command line build tool for JavaScript projects. He also writes and presents at conferences around the world.

Irene is a JavaScript developer, occasionally venturing into the lands of Ruby on Rails and node.js. When she isn’t contributing or writing about Backbone.js, she’s working on projects that focus on creating engaging interactive visual displays of information.

Mike Pennisi is a contributor to a number of open source projects, including JSHint, Socket.io, and Backbone.LayoutManager. His primary interests at Bocoup are user interface design, privacy and peer to peer networking on the Open Web.

Bob is Bocoup’s Director of Education. Bob brings his background in economics, finance, non-profit development, and education, to his mission of making Bocoup’s classes the best web education curriculum around.

• TRAINING CURRICULUM •

So you've learned a good amount about JavaScript, jQuery, HTML, CSS and
how it all works together. Now learn how to apply that knowledge in a sane
workflow that takes advantage of coding, testing, and code-organization
best practices. We'll walk you through the steps of assessing application
structure, working with revision control, creating tests for your
application, writing modularized and testable code, organizing your
project and working collaboratively with others.

Along the way, we'll dive into some of the complexities in JavaScript,
software libraries like jQuery and Backbone.js, writing good unit tests
and more. The focus, however, will be on the application of this
knowledge in a way that applies no matter your chosen front-end stack.
Don't worry if you aren't fully saturated with programming insight;
seeing what you need to learn in action can be a great jumping off point
for further learning.

Breaking Down Requirements

We'll receive requirements for our
application from our client. But before we dive into coding, we'll
show how we break those requirements down in to discrete tasks,
impose engineering standards on ourselves, and translate all of
those requirements into something a developer can understand.

Mike Pennisi

10:15 – 10:45

Break

10:45 – 11:45

Building the App, Part 1: Getting Started

We'll take what we've learned from our
requirements and what we know about application architecture to
set up our project folders and core files, automated task runner
(Grunt), and source control (Git).

Ben Alman

11:45 – 12:30

Intro to MVC on the Client

The Model-View-Controller paradigm has been
used since the 1970s to build GUI applications. We'll talk about
how this pattern translates to web applications and how our chosen
framework (Backbone) conforms to and/or alters this pattern.

Irene Ros

12:30 – 1:30

Lunch

1:30 – 2:15

Building the App, Part 2: Our First Page

We'll create a model and a view, set them up
to communicate with our API endpoints, and see how that all looks
together on the page!

Irene Ros

2:15 – 3:00

Modularizing Code with AMD/RequireJS

Large JavaScript applications can quickly
become unwieldy if we keep all of our code in a single file. On
the other hand, juggling dozens of <script>
tags leads to what is commonly known as "dependency hell." We'll
show how we can prevent both of these outcomes with a healthy dose
of vitamin AMD.

Mike Pennisi

3:00 – 3:30

Break

3:30 – 4:00

Building the App, Part 3: Adding a Collection

We've pulled a single piece of data into our
app, but we're often going to want to pull in a number of objects.
We'll talk about the things we need to consider when rendering an
entire collection of data to the page.

Irene Ros

4:00 – 5:00

Building the App, Part 4: Wiring it Together

At this point, we're successfully getting
data into our application and rendering our pages, but we've
created some redundant code. We also need a way to navigate from
page to page. We'll finish up the day by refactoring our current
codebase to keep things DRY (Don't Repeat Yourself) and wiring up
client-side URL routing.

Bob Holt

DAY 2

8:00 – 9:00

Breakfast

9:00 – 9:15

Recap

What the heck happened yesterday? We'll recap
the high points and set up today's sessions.

Bob Holt

9:15 – 9:45

Improving Your Styling Workflow

Our designer gave us a ton of great styles
for our app! How do we use a modular approach in creating our
style sheets, handle browser differences, and keep from repeating
code? We'll use a framework (Stylus) to keep ourselves in line!

Ben Alman

9:45 – 10:45

Building the App, Part 5: Writing Data

So far, our app reads data from the server
pretty nicely. How do we get data from the user into the server?
We'll talk about both form input and HTML5 APIs like
navigator.getUserMedia, and how we implement graceful
degradation in browsers that do not support features we may want
to use.

Irene Ros & Mike Pennisi

10:45 – 11:15

Break

11:15 – 12:30

Unit Testing

Unit testing is an integral part of writing
stable software. We'll talk about why it's important, when to
test, and how we do it in JavaScript using Mocha, Chai, and Sinon.

Mike Pennisi

12:30 – 1:30

Lunch

1:30 – 2:15

Building the App, Part 6: Deleting Data

Our app can read and write data, but now we
want to let our users delete it. If we follow the principles we've
learned up to this point, it should be a piece of cake…

Bob Holt

2:15 – 3:00

Integration Testing

Sometimes unit testing just isn't enough,
particularly in the browser environment. We'll start test-driving
using browser automation with Selenium, and learn how to write
tests that navigate through the connected pieces of our app.

Mike Pennisi

3:00 – 3:30

Break

3:30 – 4:15

Optimizing the Application

Even if our application completely works,
we're not done yet. We need to optimize our application for the
production environment and transfer over the Internet. We'll
cover some simple things we can do to improve performance and the
deployment process.

Ben Alman

4:15 – 5:00

What Next?

We've got a fast, stable application that we
can be proud of. But what now? Now that we have something we're
happy with, how does that inform our next application? And the
next one after that? What can we re-use and what do we have to
consider fresh each time?

Bob Holt

• LOCATION •

Roost will be in the same venue as the jQuery Conference, which is the
Town and Country Resort & Convention Center
in San Diego. Aside from the easy logistics of attending both events, the warm
weather, comfortable lodging and plethora of amenities should make for a
wonderful trip to San Diego.