# Omnia Share (2021)

> The 2021 Omnia Share subproject: after the ubiquitous computer prototype and the See You There detour, SPH coaches pushed for something concrete — so the team built a WebRTC-based tool to solve the first real problem they saw at SPH, connecting a PC to the presentation screen.

- Canonical URL: [https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2021-2022_omnia-share/story](https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2021-2022_omnia-share/story)
- Site index: [https://massimo.context-use.com/llms.txt](https://massimo.context-use.com/llms.txt)
- Last edited: 2026-07-24T15:38:47.251Z

After building a half-baked prototype of a [ubiquitous computer](https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2020-2021_ubiquitous-computer/story), and a small detour to build [See You There](https://massimo.context-use.com/p/about/projects/2020_see-you-there/story), our coaches at the Student Project House *[link to come]* recommended that we focus on something more concrete — something that would solve a real problem.

We took this advice a bit too literally, and built something that solved the very first problem we noticed most people had at SPH: connecting their PC to a screen for presentations!

### Still ubiquitous computing, but peer to peer

Omnia Share was still inspired by the concept of [ubiquitous computing](https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2020-2021_ubiquitous-computer/story) and the idea that any device around you should be seamlessly accessible to you. But instead of restricting ourselves to [dumb terminals relying on the cloud](https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2020-2021_ubiquitous-computer/story#the-network-computer), we decided to focus on more traditional devices, like PCs and monitors. And instead of relying on the cloud, we decided to simply let devices communicate peer to peer with one another. This is how we ran into [WebRTC](https://webrtc.org/).

![An early WebRTC test: two browser windows side by side — receiver.html and sender.html on localhost — showing a peer-to-peer video call between two of us on webcam.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/webrtc-video-call){size=large align=center}

WebRTC is a protocol that allows peer-to-peer communication between web browsers, with no need to relay the data through a server. This meant communication could be as fast as the speed of light allows. What was missing was, once again, [a seamless way of connecting the two devices to each other](https://massimo.context-use.com/p/about/projects/2020-2024_omnia/2020-2021_ubiquitous-computer/story#making-devices-seamlessly-interoperable).

### The problem at SPH

At the Student Project House *[link to come]*, every day people were presenting their projects on the big screen in the events area — and every day we noticed them wasting several minutes just trying to connect to the screen. We built Omnia Share to solve this problem.

![The Omnia Share receiver on the big screen in the SPH events area: the Omnia logo and a QR code to scan from the sender device in order to connect.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/receiver-screen){layout=half}
![Omnia Share connecting a laptop to the big screen at SPH: the laptop in the foreground runs the Omnia "Sender" page in the browser, screen-sharing peer to peer to the wall-sized display behind it.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/sender-laptop){layout=half}

### Any screen, one QR code

With Omnia Share, anyone could share their computer screen onto any other screen just by scanning a QR code.

Most TVs were already coming with a browser built in; for the other monitors that weren't, we built a little device using a Raspberry Pi Zero that would connect via HDMI and automatically open a browser with Omnia Share's QR code.

![The Omnia Share sender page (v1.4) running in a browser during a screen-sharing test.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/raspberry-pi-1){layout=third}
![The little Raspberry Pi Zero device connecting a plain monitor to Omnia Share over HDMI.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/raspberry-pi-2){layout=third}
![A monitor driven by the Raspberry Pi Zero device, mirroring a presentation shared from the laptop beside it.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/raspberry-pi-3){layout=third}

### Reinventing the Chromecast

We could have simply bought a [Chromecast](https://en.wikipedia.org/wiki/Chromecast), but we wouldn't have learned as much as we did by reinventing it ourselves. One thing I could have avoided, though, was trying to reimplement the WebRTC protocol from scratch instead of using one of the available libraries. One more lesson learned:

![A talking-head reflection on the lesson learned — that reimplementing WebRTC from scratch, instead of using an existing library, wasn't worth it.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/webrtc-lesson){size=medium align=center}

### Complete control

One cool thing about building your own things from scratch, instead of buying them off the shelf, is that you have complete control over what to build. Once we had WebRTC set up for screen sharing, we immediately started adding new features — like being able to control someone else's browser with your own keyboard and mouse. To others it would be a dangerous instance of remote code execution; for us, it was just fun.

![Remote control over Omnia Share: driving another browser — here browsing Wikipedia — with your own keyboard and mouse.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/remote-control-1){layout=half}
![More of the remote-control feature: taking over a remote browser as if it were your own.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/remote-control-2){layout=half}

### Live at SPH

Omnia Share was live at SPH for several months. Nobody cared — but luckily, we were used to it.

![A monitor and a laptop side by side, both running the Omnia Share sender page with a QR code and the WebRTC debug console open — screen-sharing between the two.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/screensharing-monitor-laptop){layout=third}
![Massimo and a teammate throwing shakas next to a screen showing the Omnia logo and an Omnia Share QR code at SPH.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/team-shaka){layout=third}
![The Omnia Share code — sender.js and receiver.js — open in VS Code above two laptops running the sender and receiver, WebRTC logs streaming in their consoles.](https://assets.massimo.context-use.com/a/about/projects/2020-2024_omnia/2021-2022_omnia-share/dev-setup){layout=third}
