Week One

Starting Line: Web Standards, Documentation and Techniques

Agendas

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

Agendas

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

Agendas

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

Agendas

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”

Agendas

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

Agendas

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

Agendas

Monday, October 25

  1. No class.

Wednesday, October 27

  1. Handling binary data from form elements
  2. Blobs
Week Eleven

Multipeer Connections and Mesh-Network Topography

Agendas

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

Agendas

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

Agendas

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

Agendas

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

Agendas

Monday, November 29

  1. No class. Stolley available for help

Wednesday, December 1

  1. No class. Stolley available for help

Course Information

Instructor