The trash bin was embedded with an LCD display on each side, and came integrated with Wi-Fi connectivity. The original idea was to have screens display constantly different information, ranging from weather forecasts to stock prices. Due to privacy concerns (“the bins record a MAC address for any nearby phones and other devices that have Wi-Fi turned on”), the smart trash bin project was eventually shelved.

The smart trash-bin fiasco, however, gave birth to Resin. It posed an opportunity for a team of PhDs—who later became Resin.io—to learn first-hand how hard it is to update and change software once embedded in a system. The embedded system—the smart trash bin—offers no apparent user interface and comes with only limited processing power.

Resin 01 Figure 1: PhD trying to fix smart trash bin software (Source: Resin.io)

Bring Web dev technology to Embedded

Writing IoT applications is no cake walk, as the team learned. “It’s not like writing applications for the Web,” said Marinos, Resin.io CEO.

IoT uses embedded devices armed with limited memory space, restricted processing power, which run on a specific microprocessor or microcontroller. IoT devices use diverse CPU architectures.

IoT application developers have to constantly worry about making specific IoT hardware work while keeping their applications up to date. If such an effort needs to be made for an individual IoT purpose, the process involves setting up an operating system, establishing a secure local network, configuring some means of recording and viewing logs, and providing some means of shipping new versions of code to devices in the field, amongst others.

Resin 02 Figure 2: Behind the Scenes (Source: Resin.io)

But Resin.io asked, “What if we bring the ‘look and feel’ of the Cloud to the embedded world?” The start-up has found the answer in taking the best practices from both worlds—Web and embedded, according to the CEO.

Resin.io has extended Linux Containers to new architectures—including i386, ARMv6 and ARMv7 architectures. Linux Containers is an OS-level virtualisation method for running multiple isolated Linux systems on a control host using a single Linux kernel.

Resin.io uses Git, a distributed revision control system. Git can push changes, run unit and integration tests. All the while, it maintains compatibility with Docker, an open-source project that automates the deployment of applications inside software containers.

“We are bringing the web development and deployment workflow to hardware,” explained Marinos. Using tools like Git and Docker, Resin.io promises developers the ability to seamlessly update all their embedded Linux devices. Meanwhile, Resin.io handles “cross-compilation, device monitoring, VPNs, and log collection,” so application developers can focus on their product and not the infrastructure.