Starting Line: Web Standards, Documentation and Techniques
Week One
Monday, August 24 Video
- Course overview
- Course policies
- Course projects
Wednesday, August 26 Video
- Asking questions publicly on Basecamp
- Walking through web-development environments
- Web standards: how we got to a real-time web
- Web-standards refresher
- Core techniques, practices, and expectations in this class
Non-blocking Realtime Foundations: Asynchronous JavaScript, Event
Week Two
Monday, August 31 Video
- Introduce Project One
- Why asynchronous JavaScript?
- Older methods: callbacks
- The
Event
interface in client-side JavaScript
Wednesday, September 2 Video
- The Promise API
- Asynchronous JavaScript in disguise
async
and await
- The
CustomEvent
interface in client-side JavaScript
Catch Up and Open Q & A
Week Three
Monday, September 7
- Labor Day (No Class)
Wednesday, September 9 Video
- Open Q & A
- Leftover material on async, client-side events
- Serving localhost over SSL (
https
)
- Previewing what’s to come: Node.js, ExpressJS, Socket.io
RTC Messaging Classics: WebSockets and Socket.io; EventEmitter
Week Four
Monday, September 14 Video
- File systems and Node.js
- Database vs. flat-file storage
- Watching for changes
- Diffing out changes: diff
- Events
Wednesday, September 16 Video
EventEmitter
- WebSockets vs. Socket.io
- Sending and receiving messages
- Sockets with multiple connected clients
Web Workers and Service Workers; The Web Notifications API
Week Five
Wednesday, September 23 Video
- Service Workers
- The service-worker lifecycle
- OS and browser settings for notification testing
- The Web Notifications API
- The Push API
Conferences; Remaining Notifications/Project One Topics
Week Six
Monday, September 28
- No class. Group conferences. See Basecamp for schedule.
Wednesday, September 30 Video
- Remaining Project One topics and techniques
- Merge strategies on GitHub repositories
- Serialization/API endpoint
- Code organization: routes,
lib/
- The
export
syntax
- Open Q&A
Media Capture and Streams API Fundamentals
Week Seven
Monday, October 5 Video
- Working in secure contexts (
https
), even in local development
- Starting lines: the HTML
<audio>
and <video>
elements
- The HTMLMediaElement JavaScript API
- The MediaDevices Web API
enumerateDevices()
and Device IDs
- The Media Capture and Streams specification
- Determining available devices
- Seeking permissions
- Requesting and returning a local media-stream playback
- Inspecting stream objects:
MediaStreamTrack
Wednesday, October 7 Video
- No live class (Stolley on the DL for a massive headache)
- Full Project Two description
Planning and Scoping the Second Project
Week Eight
Monday, October 12
- Fall Break (No Class)
Wednesday, October 14 Video
- Stolley sketches and scopes an example Project Two
- Project Two Q&A
- Remaining media capture and stream topics
- Exploring device capabilities and the
getSupportedConstraints()
method
- The MediaCapabilitiesInfo API
WebRTC Fundamentals: RTCPeerConnection; adapter.js
Week Nine
Wednesday, October 21 Video
- Resetting and refreshing
- Sketching out the WebRTC lifecycle
- Stolley sets up Express.JS with better foundations for rooms and signaling
- URL-based rooms
- Auto-generating rooms and handling dynamic socket.io namespaces on the server
adapter.js
(raw adapter-latest.js
file)
Stronger WebRTC Foundations with Perfect Negotiation
Week Ten
Monday, October 26 Video
- Brief demo: Team repo organization and practices
- Namespaced signaling with Socket.io; custom
signal
events
- Better streaming placeholders and code (
track
rather than stream
)
Wednesday, October 28 Video
- Perfect negotiation: polite and impolite clients
- The
RTCPeerConnection
interface
Data Channels
Week Eleven
Monday, November 2 Video
- Safari-oriented tweaks to perfect negotiation (which makes it somewhat less perfect)
- A note about Safari Technology Preview and what’s coming
- Using tracks rather than streams, even for self video
Wednesday, November 4 Video
- Working with data channels: A simple text chat example
STUN/TURN Servers; WebRTC-Supporting Interface Design
Week Twelve
Wednesday, November 11 Video
- ITMD 545: Project Four and grad-student readings
- Sketching out RTC-backed interfaces
- Before the call: The setup interface
- During the call: The active interface
- After the call: The later-tater interface
Conferences; Game-Play State, Moves over RTCDataChannel
Week Thirteen
Monday, November 16
- No class; group conferences with Stolley
Wednesday, November 18 Video
- Stolley builds out his Project Two
- Tracking game moves outside of WebRTC with the CustomEvent API
- Turn-taking and game-play state with RTCDataChannel and its events
Multiple Peer Connections
Week Fourteen
Wednesday, November 25
- Thanksgiving Break (No Class)
Monitoring Networks and RTC Stats; Work Week
Week Fifteen
Wednesday, December 2
- Open Q & A
- Stolley available for one-on-one help