Week One

Starting Line: Web Standards, Documentation and Techniques


Monday, August 23

  1. Course overview
  2. Course policies
  3. Course projects

Wednesday, August 25

  1. Asking questions publicly on Basecamp
  2. Walking through web-development environments
  3. Web standards: how we got to a real-time web
  4. Web-standards refresher
  5. Core techniques, practices, and expectations in this class
Week Two

Non-blocking Realtime Foundations: Asynchronous JavaScript, Event and EventEmitter


Monday, August 30

  1. Previewing WebRTC
  2. JavaScript syntax, styles, values, and gotchas
  3. Linting: ESLint CLI; Stolley’s .eslintrc configs

Wednesday, September 1

  1. Introduce Project One
  2. Why asynchronous JavaScript?
  3. Older async methods: callbacks
  4. The Promise API
  5. Newerfangled syntax: Arrow function expressions
  6. Asynchronous JavaScript in disguise async and await
  7. The Event and CustomEvent interfaces in client-side JavaScript
  8. EventEmitter
Week Three

WebRTC Foundations I: HTTPS, Media Permissions


Monday, September 6

  1. No class. Labor Day Holiday

Wednesday, September 8

  1. Serving HTTPS in development with ExpressJS
  2. Requesting access to user media
  3. Requesting and returning a local media-stream playback
  4. The HTML <audio> and <video> elements
  5. The HTMLMediaElement JavaScript API
Week Four

WebRTC Foundations II: Signaling, Connection, and Perfect Negotiation

Week Five

Conferences; Finishing Basic Peer-to-Peer Demo App

Week Six

Data Channels


Monday, September 27

  1. Reviewing the signaling and WebRTC code written so far
  2. Console experiments with data channels to WebRTC calls

Wednesday, September 29

  1. Adding data channels to WebRTC calls
  2. Symmetrically vs. asymmetrically added data channels
  3. Data-channel events
Week Seven

Web APIs; Broader Browser-Compatibility and “Perfekted Negotiation”


Monday, October 4

  1. Remote class. See Basecamp for details
  2. Expectations of you as a student in this class
  3. Finishing the chat feature and symmetrical data channel
  4. Web APIs: where to look, brief examples

Wednesday, October 6

  1. Remote class. See Basecamp for details
  2. Styling the chat log
  3. Revisiting perfect negotiation for imperfect browsers
  4. Safari-oriented tweaks to perfect negotiation (which makes it somewhat less perfect)
  5. Notes about Safari/Safari Technology Preview and what’s coming
Week Eight

Review and Q&A


Monday, October 11

  1. Fall Break (No Class)

Wednesday, October 13

  1. Review: the media-constraints object
  2. Handling multiple media tracks
  3. User-controlled enabling and disabling of media tracks
  4. Student questions
Week Nine

Git and GitHub in Team Settings; Emergency JavaScript Resuscitation

Week Ten

Binary Data

Week Eleven

Multipeer Connections and Mesh-Network Topography


Monday, November 1

  1. Sending and receiving binary data on data channels
  2. Abstracting away differences between Blobs and ArrayBuffers

Wednesday, November 3

  1. Making received files available
  2. The challenge and limits of multipeer connections
  3. Mesh-network topography
  4. Multipeer signaling channels and callbacks
Week Twelve

Multipeer Calls; Team Conferences


Monday, November 8

  1. Refactoring peer-to-peer code for multipeer
  2. Multipeer WebRTC callbacks with closures
  3. Testing multiple devices over the local network

Wednesday, November 10

  1. No class. Team conferences
Week Thirteen

Public STUN Servers; WebRTC-backed Interfaces


Monday, November 15

  1. ITMD 545: Project Four and grad-student readings
  2. Using public STUN servers
  3. GitHub Gist of third-party STUN servers

Wednesday, November 17

  1. Testing public STUN servers with deployed RTC app
  2. Constraining media
  3. WebRTC interfaces
  4. Before the call: The setup interface
  5. During the call: The active interface
  6. After the call: The later-tater interface
Week Fourteen

WebRTC in Production


Monday, November 22

  1. Remote class.
  2. Introduce Project Three
  3. WebRTC stats and monitoring
  4. Configuring a private STUN/TURN server; automating deploys with Git and pm2

Wednesday, November 24

  1. No class. Thanksgiving Break
Week Fifteen

Work Week


Monday, November 29

  1. No class. Stolley available for help

Wednesday, December 1

  1. No class. Stolley available for help

Course Information