How to Bring Web Development Best Practices to IoT Development

Internet-connected devices are everywhere, and many are poorly executed. We’re changing that by bringing web development best practices to IoT development.

Written by
Jeff McGehee
November 13, 2017
Filed under:

From smartphones to smart cars, it’s safe to say that IoT products and ecosystems have achieved mainstream consumer adoption. The masses have shown that they’re hungry — and willing to pay — for all kinds of Internet-connected devices. So why is the market flooded with so many poorly executed products? (Case in point.)

iot development
‍"Your problem is so terrible, I worry that, if I help you, I risk drawing the attention of whatever god of technology inflicted it on you."

It’s a layered problem, but here’s the crux of it: Hardware engineers are expensive, and they’re not experts at building web software. Web engineers are expensive, and they’re not experts at building hardware. And embedded software technologies lag behind web-based software technologies.

Happily, the IoT development landscape is improving, but the current ecosystem is still rampant with fragile and difficult-to-use devices — many of which come with security flaws and disparate communication protocols that prevent seamless integrations.

A better way

Rather than squeezing embedded C into the web world, we’re bringing web tools and technology to the hardware world through Elixir and Nerves — which makes it possible to iterate quickly and apply software innovations (like machine learning and the blockchain) to IoT hardware.

Why Elixir? It’s a language designed for building distributed, fault-tolerant applications. Elixir is executed within the Erlang runtime system, which was created for low-level hardware applications. What’s more: there’s now an ecosystem of Elixir tools that supports the web’s best practices. The Nerves project leverages the ideologies of web development and combines them with the strengths of embedded Elixir, which makes the Elixir/ Nerves stack ideal for rapid, robust development of IoT devices. As such, it’s the only IoT firmware stack used at Very.

What this means for your hardware

Nerves is a young project, so the list of possible embedded targets is small (but growing). If you’re interested in working with us to develop the firmware for your IoT device, point your hardware engineers toward these platforms. If you’re not able to build hardware that’s supported by Nerves, we’re happy to help with the mobile or web server components of your IoT project.

A final note: embedded C isn’t all bad — but we believe it should be clearly separated from the web and heavy business logic portions of your firmware. If your device has needs that can only be met by embedded C, your hardware engineers can add and program a separate chip to run these operations and have it communicate with the Nerves application via a serial bus. That way, your hardware team can focus on their strengths, and we can focus on ours. 

agile IoT elixir nerves