JavaScript-into-Node Weekend

Presented by MakerSquare

A 2-day intensive, interactive workshop on advanced JS topics and applying them to using Node.js.

Take A Seat

Raise Your Hand

Additional Information

Day 1

The majority of JavaScript developers use the language "in practice" (that is, they learn on the job) but rarely go beyond a surface understanding. In this workshop, we're going to actually dive pretty deep into how some of the confusing parts of the language really work.

Especially when we talk about prototypes, we'll see some perhaps surprising conclusions that change the way we think about OO in JavaScript. The goal is that you'll know why JavaScript works the way it does, so that you can make informed decisions about how to use it.

Day 1 prepares you with solid confidence about the JS language, so that Day 2 can take you straight into Node.js without being completely lost.

JS Topics

  • scope
  • hoisting
  • closure
  • this
  • prototypes
  • async patterns:
    • callback hell
    • generators
    • promises

Day 2

With a much deeper understanding of JS from day 1, today we will dive completely into Node.js. We'll see right away how our knowledge from day 1 applies to:

  • The module pattern for organizing our node.js app code
  • npm module creation (package.json, etc)
  • Promise-based async flow-control for wrangling async tasks

Then we'll talk about how we move data (files, I/O) around in node, through streams. Finally, we'll look at how we handle various communication tasks in Node:

  • Responding to a browser or Ajax request
  • Setting up and handling web sockets (socket.io) communication
  • Handling signaling for peer-to-peer (WebRTC) connections

Class Details

This is an all-day workshop (runs 8am to 5pm) both days, and includes both lecture and lab exercises. There will be several breaks throughout the day, including a lunch break.

Pre-requisites

  • Basic programming fundamentals (variables, loops, functions, objects, callbacks, etc)
  • Intermediate JS syntax ability (types, references, functions as values)
  • Intermediate-to-advanced experience with developer tools in modern browsers
  • Basic familiarity with Node.js

Preparation

Have a laptop with a recent modern (preferably beta/nightly version) browser (Firefox, Chrome, etc) and a basic development environment (such as a text editor for making changes to HTML, CSS, and JavaScript files). Make sure you have a recent stable release of Node (& npm) installed, at least v0.10.23 or higher.

Instructor

Kyle Simpson is an Open Web Evangelist from Austin, TX. He's passionate about JavaScript, HTML5, real-time/peer-to-peer communications, and web performance. Otherwise, he's probably bored by it. Kyle is an author, workshop trainer, tech speaker, and avid OSS community member.