Like many companies, we have multiple offices. Our biggest two offices are located in The Netherlands; one in Amsterdam and one in The Hague. These offices are 65 kilometers apart. How do we keep in touch during the day and make our two offices not feel like two companies?

Meet The Window

Take some wood, some paint, two €350,- televisions, two €90,- webcams, two Raspberry Pi’s, a piece of open source surveillance software and voila! You have a digital “window” between two locations.

Some serious carpentry went into the frames of The Window

Every day at 8:00 both televisions turn on, feed power to the Raspberry Pi’s (which are duct taped to the back of the tv) and start broadcasting their own video feed. Both Pi’s then look for the feed of the other Pi and if nothing fails, you have a video connection which can run for hours with almost no lag.

Rock solid performance

One of the biggest challenges was to keep the connection stable during long periods of time. When you need a video connection for a few minutes you can just use Skype, Appear or another conferencing service, but getting the thing to run every office day, for 12 hours straight, without anyone having to reset/reboot/start/stop or do anything, turned out to take some trial and error.

No lag but also no sound

After trying out several video solutions (Skype, Appear, direct video throughput over VPN) it turned out that Motion was the best choice for delivering a long-term lag-free video stream. Motion is designed as surveillance software. It can record videofiles when something moves in front of the camera. But, as it turned out, it’s pretty good at delivering a constant video feed to another computer.

Although our webcams record video at 1920 x 1080 pixels, we set the resolution of the video stream to 640 x 360 pixels to ensure optimal performance of the feeds.

Our two offices. The Hague (L) and Amsterdam (R)

The downside of using Motion? No audio.
This was a big turnoff at first. However, the performance of the video, and the fact that it actually is pretty funny to wave at colleagues without hearing them, made us choose Motion over other solutions.
Also, you probably don’t want to hear the audio of another office blasting through the speakers in your own office anyway.

The hardware will fail

When working with experimental hardware/software combinations, there is one thing that you know for sure: the hardware will fail.
We started out with a Pi2 in The Hague and a Pi3 in Amsterdam. For whatever reason, the Pi2 did just fine, but the Pi3 stopped working at random moments. So the pragmatic solution was to replace the Pi3 with a Pi2 and have identical sets on both locations.

At several occasions one of the two Windows would start turn black. This could be caused by:

    Lunch in The Hague (L) and Amsterdam (R)

    Debugging remote locations

    Most bugs in the system weren’t programmatically but organizational, since most of the work went into the setup of the Windows and not into programming. Imagine trying to figure out why your The Hague office shows no image, only to find out that the internal clock of the TV in Amsterdam was reset for whatever reason and never booted at 8:00 anymore. Or that Motion was writing a log file which, after three weeks, used up all the space on the SD card and caused an error.

    It really works

    The Window has brought our Amsterdam and The Hague offices closer together. Colleagues wave at each other, show written notes and try silly charades-like-communication. It also works great for showing new clients what “the other office looks like”.

    Next up: audio.

    We bought two old school USB headsets and are currently trying to get a lag-free audio stream up and running so we can have this:

    Prison phones ❤

    For now, we have not been able to get the latency under a few seconds, so The Window is currently video-only, but as soon as we figure out what works best within our setup, we will add audio and have fully working prison visitation phones… 65 kilometers apart.