Skip to content

Instantly share code, notes, and snippets.

@joelhooks
Created February 6, 2023 19:28
Show Gist options
  • Save joelhooks/0e8c387b86f20e108dbdda9a6acff5d5 to your computer and use it in GitHub Desktop.
Save joelhooks/0e8c387b86f20e108dbdda9a6acff5d5 to your computer and use it in GitHub Desktop.
Real-Time Web Learning Path on egghead.io

Real Time Web Learning Path

  1. A deep understanding of the protocols, operation, architecture and components that support the stack underneath large scale WebRTC.
  2. Skills in building and maintaining a Web Socket server and the client applications interacting with it.
  3. An awareness of the challenges presented in a real time web application built on Web Sockets and WebRTC with a knowledge of the industry standard approaches to solving these.

How will we help students achieve these goals?

Make the path clear

Working with professionals and industry experts, we have created a clear path of how to achieve these goals.

The knowledge and skills required to be competent can feel overwhelming. We help break it down and show a sensible route to mastery.

Provide content to help on the path

Once learners know what they need to know, how are we going to support them in gaining that knowledge?

  • Modular video courses: This is a key strength of the egghead team. Each video course will be able to stand on its own while contributing to the path as a whole. Professionals will be able to use this growing library to answer questions and solve critical problems in their development.
  • Problem/Solution sets: We'll set users up with problems, give them an opportunity to solve them in our inline editor and then present them with the solution.
  • Interviews with experts: We'll curate a library of interviews exploring the issues that emerge in real time web development and the solutions that have emerged.

Make progress explicit

We want to help answer the question, “what should I learn next?”. Using the learning path, we can suggest a sensible next step. This can allow those smaller snippets of learning time to have the most impact.


The Learning Pathway

Part 1: One-to-one

This part explores the two main technologies of real time communication, WebRTC and Web Sockets, separately and then together. The focus throughout is on two users creating and maintaining a one-to-one connection.

Main beats:

  • A local video chat application
  • A Web Socket server that allows for web presence to be shared
  • Joining these two separate elements together. The Web Socket server can serve as the signaling service for the WebRTC connection allowing for a remote video chat application

Part 2: Group with local application and shared state

This part scales up the one-to-one video application to allow group chatting. It also provides something for the group to do, probably on a shared canvas. The aim is to have a locally rendered application that shares and receives state from the peers connected to it.

Main beats:

  • Scaling up the video app
  • Sharing a canvas
  • Deciding on which method of communication is most suitable for each task

Part 3: Group with hosted application

This part looks at a hosted application that has large processing needs. It allows clients to connect and interact with this application, projecting their intent and the application making the decision on the final result. The application might need to call out to expensive APIs (saving money as only one query rather than one per user) or might have to carry out expensive calculations (saving time and energy using a larger single instance to do the work and share the results).

Main beats:

  • Accepting input from multiple sources and applying it to an application
  • Sharing the results to the clients
  • Exploring data integrity strategies (CRDT, last in, role based priorities)

On each step of the path, we’ll consider the issues that can challenge these applications in the wild. Using examples and interviews with experts, we’ll share industry standard approaches while considering their advantages and disadvantages. These would include:

  • How do we handle errors?
  • How do we test and debug at various stages of complexity?
  • What happens when one user has a particular slow connection?
  • How do we handle applications of these types as they scale?

Side Quests

While these three parts represent the main path, there will also be opportunities to explore related topics.

These are important topics but not core to every project.

Examples might include:

  • Authentication and identity
  • Audio and video codecs
  • UI Development

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment