≡ Menu

Ioflo: Enabling the Programmable World

Join us on our journey!


IoFlo is a magically powerful open interoperable software framework that enables non experts to intelligently automate their own programmable world. IoFlo has its roots in the research and development of autonomous underwater vehicles, autonomic ships, and automated buildings. These are cool applications that can be scarily complex. That complexity was the prime motivation for IoFlo and its ancestors, to make programming autonomous/autonomic systems easy even for people without PhDs.

IoFlo is actually in its fourth generation of refinement. The first generation was developed in the mid 1990’s and didn’t have a catchy name, but it was used to program the missions run by a fleet of autonomous underwater vehicles that performed at sea research missions for scientific and military applications. Indeed these vehicles were operating on average 100 days a year at sea with a variety of payloads and mission configurations. The second generation was applied to self-healing networks for shipboard automation. The third was applied to adaptive autonomous vehicle missions.

Just to be clear, an autonomous vehicle is not a remotely operated vehicle, there is no human driver. An autonomous vehicle runs a preprogrammed mission, with little or no human supervision. The command and control system is responsible for dealing with environmental hazards as it navigates and excecutes its mission plan. Oh, and its underwater so you can’t see it and its difficult to track, much less communicate with. So if there is a bug in the program, the vehicle might not come back. Consequently there is a high fear factor when it comes to programming missions, especially re-programming missions at sea.

An autonomic computing system is similar but differs primarily in that it applies to infrastructure. Like the autonomic systems in your body that without conscience thought, regulate breathing, digestion, immunity, and circulation, an autonomic computing system self-regulates or self-manages its own hardware and software. For example, a ship has many infrastructure systems such as, power, cooling, fuel, steering, or propulsion that require configuration and maintenance. An autonomic infrastructure system would be self configuring and self repairing with little or no human involvement.

The fundamental difference between autonomous/autonomoic systems and other automated systems is the relative lack of direct human supervision. Its one thing to program some software to perform a task at the push of a button where failure is handled by some human diagnosing, fixing and reiterating the automated task. Its another thing entirely to keep a system running continuously where failures are diagnosed and repaired by the program without human intervention. The key difference is that in a typical automation system, the automated part runs open-loop and a human closes the loop to keep it running. Whereas in an autonomous or autonomic system, the automated part runs closed-loop without a human in the loop to keep it running. An automated feedback loop can be simply described as the following four activites, sensing, reasoning, actuating, and responding, being repeated over and over. Moreover, each component in the system has a latency or response time between when it receives an actuation input and completes its reponse. Thus autonomous/autonomic systems are not merely closed loop, because to keep a system running, there are many loops to close and that is where the complexity comes in. One of the features of IoFlo is a conveniently configured framework for concurrent execution and coordination of multiple feedback loops.

The Programmable World

A recent article in Wired Magazine used the phrase “programmable world” to describe a coherent system of inter-networked automated “things” all working in coordinated fashion with the end result of transparent functionality for the end user. In other words a semi-autonomous * or *autonomic system. To quote from the article:

But here’s a better way to think about what we’re building: It’s the Programmable World. After all, what’s remarkable about this future isn’t the sensors, nor is it that all our sensors and objects and devices are linked together. It’s the fact that once we get enough of these objects onto our networks, they’re no longer one-off novelties or data sources but instead become a coherent system, a vast ensemble that can be choreographed, a body that can dance.

A coherent system of sub-systems all running with coordinated feedback loops that sense, reason, actuate and respond. So what are the key components? Quoting again:

For the Programmable World to reach its full potential, we need to pass through three stages.
The first is simply the act of getting more devices onto the network—more sensors, more processors in everyday objects, more wireless hookups to extract data from the processors that already exist.
The second is to make those devices rely on one another, coordinating their actions to carry out simple tasks without any human intervention.
The third and final stage, once connected things become ubiquitous, is to understand them as a system to be programmed, a bona fide platform that can run software in much the same manner that a computer or smartphone can. Once we get there, that system will transform the world of everyday objects into a design­able environment, a playground for coders and engineers. It will change the whole way we think about the division between the virtual and the physical. This might sound like a scary encroachment of technology, but the Programmable World could actually let us put more of our gadgets away, automating activities we normally do by hand and putting intelligence from the cloud into everything we touch.

THE THIRD AND FINAL STAGE is to build applications on top of these connected objects. This means not just tying together the behavior of two or more objects—like the sprinkler and the moisture sensor—but creating complex interrelationships that also tie in outside data sources and analytics.

We see IoFlo as a key enabler of the second and third stages, a programming framework that enables the automated reasoning to connect the sensing and actuation.

In future posts I will explain how IoFlo does this.