After building a half-baked prototype of a ubiquitous computer, and a small detour to build See You There, 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 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, 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.
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.
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.
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.
Reinventing the Chromecast
We could have simply bought a 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:
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.
Live at SPH
Omnia Share was live at SPH for several months. Nobody cared — but luckily, we were used to it.