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.
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.
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.
8:00 – 9:00
9:00 – 9:45
An overview of architectural principles in building Graphical User Interface (GUI) applications in general, and single-page JavaScript applications in particular. We'll cover implementation details such as organizing our source files, handling third-party libraries, testing code, and automating our tasks.
Bob Holt
9:45 – 10:15
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
10:45 – 11:45
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
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
1:30 – 2:15
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
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
3:30 – 4:00
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
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
8:00 – 9:00
9:00 – 9:15
What the heck happened yesterday? We'll recap the high points and set up today's sessions.
Bob Holt
9:15 – 9:45
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
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
11:15 – 12:30
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
1:30 – 2:15
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
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
3:30 – 4:15
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
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
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.
Town and Country Resort & Convention Center
500 Hotel Circle North
San Diego, CA 92108
We've wrapped Roost San Diego, but you can catch us at the next Roost.