Starting Line: Web Standards, Documentation and Techniques

Week One

Monday, August 24 Video

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

Wednesday, August 26 Video

  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

Non-blocking Realtime Foundations: Asynchronous JavaScript, Event

Week Two

Monday, August 31 Video

  1. Introduce Project One
  2. Why asynchronous JavaScript?
  3. Older methods: callbacks
  4. The Event interface in client-side JavaScript

Wednesday, September 2 Video

  1. The Promise API
  2. Asynchronous JavaScript in disguise async and await
  3. The CustomEvent interface in client-side JavaScript

Catch Up and Open Q & A

Week Three

Monday, September 7

  1. Labor Day (No Class)

Wednesday, September 9 Video

  1. Open Q & A
  2. Leftover material on async, client-side events
  3. Serving localhost over SSL (https)
  4. Previewing what’s to come: Node.js, ExpressJS, Socket.io

RTC Messaging Classics: WebSockets and Socket.io; EventEmitter

Week Four

Monday, September 14 Video

  1. File systems and Node.js
  2. Database vs. flat-file storage
  3. Watching for changes
  4. Diffing out changes: diff
  5. Events

Wednesday, September 16 Video

  1. EventEmitter
  2. WebSockets vs. Socket.io
  3. Sending and receiving messages
  4. Sockets with multiple connected clients

Web Workers and Service Workers; The Web Notifications API

Week Five

Monday, September 21 Video

  1. Workers overview
  2. Functions and classes available to workers
  3. Web Workers

Wednesday, September 23 Video

  1. Service Workers
  2. The service-worker lifecycle
  3. OS and browser settings for notification testing
  4. The Web Notifications API
  5. The Push API

Conferences; Remaining Notifications/Project One Topics

Week Six

Monday, September 28

  1. No class. Group conferences. See Basecamp for schedule.

Wednesday, September 30 Video

  1. Remaining Project One topics and techniques
  2. Merge strategies on GitHub repositories
  3. Serialization/API endpoint
  4. Code organization: routes, lib/
  5. The export syntax
  6. Open Q&A

Media Capture and Streams API Fundamentals

Week Seven

Monday, October 5 Video

  1. Working in secure contexts (https), even in local development
  2. Starting lines: the HTML <audio> and <video> elements
  3. The HTMLMediaElement JavaScript API
  4. The MediaDevices Web API
  5. enumerateDevices() and Device IDs
  6. The Media Capture and Streams specification
  7. Determining available devices
  8. Seeking permissions
  9. Requesting and returning a local media-stream playback
  10. Inspecting stream objects: MediaStreamTrack

Wednesday, October 7 Video

  1. No live class (Stolley on the DL for a massive headache)
  2. Full Project Two description

Planning and Scoping the Second Project

Week Eight

Monday, October 12

  1. Fall Break (No Class)

Wednesday, October 14 Video

  1. Stolley sketches and scopes an example Project Two
  2. Project Two Q&A
  3. Remaining media capture and stream topics
  4. Exploring device capabilities and the getSupportedConstraints() method
  5. The MediaCapabilitiesInfo API

WebRTC Fundamentals: RTCPeerConnection; adapter.js

Week Nine

Monday, October 19 Video

  1. A fuller look at WebRTC by critiquing Google Codelabs code
  2. The WebRTC 1.0: Real-time Communication Between Browsers specification
  3. Setting up a local WebRTC stream for diagnostic purposes

Wednesday, October 21 Video

  1. Resetting and refreshing
  2. Sketching out the WebRTC lifecycle
  3. Stolley sets up Express.JS with better foundations for rooms and signaling
  4. URL-based rooms
  5. Auto-generating rooms and handling dynamic socket.io namespaces on the server
  6. adapter.js (raw adapter-latest.js file)

Stronger WebRTC Foundations with Perfect Negotiation

Week Ten

Monday, October 26 Video

  1. Brief demo: Team repo organization and practices
  2. Namespaced signaling with Socket.io; custom signal events
  3. Better streaming placeholders and code (track rather than stream)

Wednesday, October 28 Video

  1. Perfect negotiation: polite and impolite clients
  2. The RTCPeerConnection interface

Data Channels

Week Eleven

Monday, November 2 Video

  1. Safari-oriented tweaks to perfect negotiation (which makes it somewhat less perfect)
  2. A note about Safari Technology Preview and what’s coming
  3. Using tracks rather than streams, even for self video

Wednesday, November 4 Video

  1. Working with data channels: A simple text chat example

STUN/TURN Servers; WebRTC-Supporting Interface Design

Week Twelve

Monday, November 9 Video

  1. Code cleanup and QA; compare against RTC Specification Example
  2. Using third-party STUN servers
  3. GitHub Gist of third-party STUN servers
  4. Working with home routers and firewalls

Wednesday, November 11 Video

  1. ITMD 545: Project Four and grad-student readings
  2. Sketching out RTC-backed interfaces
  3. Before the call: The setup interface
  4. During the call: The active interface
  5. After the call: The later-tater interface

Conferences; Game-Play State, Moves over RTCDataChannel

Week Thirteen

Monday, November 16

  1. No class; group conferences with Stolley

Wednesday, November 18 Video

  1. Stolley builds out his Project Two
  2. Tracking game moves outside of WebRTC with the CustomEvent API
  3. Turn-taking and game-play state with RTCDataChannel and its events

Multiple Peer Connections

Week Fourteen

Monday, November 23 Video

  1. Introduce Project Three
  2. Handling multiple peer connections

Wednesday, November 25

  1. Thanksgiving Break (No Class)

Monitoring Networks and RTC Stats; Work Week

Week Fifteen

Monday, November 30 Video

  1. Monitoring network load and conditions
  2. RTCPeerConnection.getStats()
  3. The RTCStatsReport Object
  4. Open Q & A

Wednesday, December 2

  1. Open Q & A
  2. Stolley available for one-on-one help