A Call to Arms for IoT Analytics
Arm processors, with their low-power and fast processing, are a natural fit for IoT applications. What's not a natural fit is that the army of embedded developers familiar with the different Arm toolsets are not necessarily familiar with the analytics and ML libraries used by data engineers. At Nubix, we are attempting to bridge that gap with a tiny container-based platform for IoT applications.
One of the tenets of the Nubix platform is that you should be able to develop once and deploy anywhere. How do we do that? Borrowing ideas from cloud development methodologies we have implemented a tiny container platform that is 1/100 the size of common Linux containers, which enables it to scale down to the tiniest of Arm platforms. The container technology includes a hardware abstraction layer that automatically bridges differences like I2C bus numbers for devices.
A second concept that we've brought to IoT application development is the use of a high-level, open source language instead of C/C++ for application development. Besides eliminating the need to learn C/C++ toolkit for different chip vendors like NXP and Cypress, the use of a Python-like language greatly increases the number of developers that can build IoT applications. For example, cloud-based data engineers who are unfamiliar with ThreadOS or FreeRTOS can create embedded applications with advanced analytics and machine learning algorithms.
We're also bringing the concept of reusable services to embedded development. Unlike their cloud-based microservices counterparts that are not necessarily co-located with the data they are processing, Nubix's tiny services reside on the device that is generating the data. By being co-located with the data generating components, such as sensors, our tiny services can process data in real-time with no network latency, no message queuing latency, and no server overhead. Machine learning inferencing can be done on tiny Arm devices in real-time! That said, many IoT applications are cloud-tethered in some way and we've developed tiny services to accelerate development of multi-tier applications. For example we have tiny services for store and forward messaging, downsampling, coalescing updates, and more. Developers can easily integrate these tiny services thru a drag-and-drop interface using the tiny services as we've built them or drill-down to the source code and modify the features to suit their needs.
We think the benefits of a container-based platform extend beyond just developer productivity. Much like smartphones had a massive impact on computer-human interactions, we think containers for embedded devices will have a similar impact on operational processes for embedded devices. With a container-based approach, the container-runtime provides a stable base for devices for loading, unloading, and executing containerized applications. A container-based approach eliminates the monolithic approach of operating system and application logic being conjoined and inseparable. With containers you will be able to deploy updates much more easily and with much less risk. And, you will be able to add new features and functions with new containers, without disturbing pre-existing containers. Much like DevOps processes have made A/B testing of web applications easy, containers for embedded applications will enable a similar ability to iterate with rapid releases.
These are just a few of the elements of our solution that we are excited about and hope you are too! To learn more, please visit us at www.nubix.io or sign-up for a free developer account at app.nubix.io/register.