Microsoft Azure goes open source in IoT, as Eurotech partners with IBM (linked by Eric J. Bruno) - March 2016

This multi-partnership between IBM and Microsoft, and IBM and Eurotech, enables an open IoT development platform using Eclipse, the Azure Cloud, and MQTT messaging. The Azure Toolkit for Eclipse represents Microsoft's intent to empower any developer on any OS. According to Bob Emmerson of

The Azure Toolkit for Eclipse provides templates and functions that allow developers to create, develop, test and deploy Azure applications using the development environment. The spin is a “developer mission is to deliver experiences that empower any developer, building any application, on any OS.” In addition, Microsoft is taking its relationship with the Eclipse community to the next level by joining the Eclipse Foundation as a Solutions Member.

Eclipse-Kura, which is a Java/OSGi-based framework – with the initial contribution to the Kura project actually coming from Eurotech – is employed in Eurotech’s intelligent multi-service gateway, where Kura APIs enable access to the underlying embedded hardware and a lot more.

Eclipse-Kura is an application development environment that allows programmers to employ Linux and Java, open source technologies with which they are familiar. This means that extending access from Azure to and from this environment makes business sense, i.e. it should give MS a bigger slice of the IoT action. Extending access has been enabled by creating a plug-in, which is a relatively simple task.


MQTT Programming In Depth

Eric J. Bruno - March 2016

MQTT is an open message protocol for machine-to-machine (M2M) or Internet of Things (IoT) communications that enables the transfer of telemetry-style data (i.e. measurements collected in remote locations) in the form of messages from devices and sensors, along unreliable or constrained networks, to a server. Andy Stanford-Clark of IBM, and Arlen Nipper of Cirrus Link Solutions invented the protocol.

MQTT’s strengths are simplicity, a compact binary packet payload (compressed headers, much less verbose than HTTP), and it makes a good fit for simple push messaging scenarios such as temperature updates, stock price tickers, oil pressure feeds or mobile notifications. It also works well connecting constrained or smaller devices and sensors to the enterprise, such as connecting an Arduino device to a web service, for example.


IoT Development with a Raspberry Pi and Arduino

Eric J. Bruno - March 2016

Although originally created as an affordable learning computer for kids, it’s common to find people working with the Raspberry Pi as an IoT development and even a production device. The Raspbian Linux distribution available for it comes with multiple programming environments already setup, including Python, Java SE, and Scratch (for learning).

Kids, hobbyists, teachers, and others interested in making the most of cool and affordable technology have done some interesting things with the Pi. You can run Java on the Pi, and even use it to control an Arduino and other sensors via the serial (USB) port and the GPIO interface. Let's see what it takes to get up and running with your Raspberry Pi, install Java if it’s not already there, or upgrade it.


Defining the ISB

Eric J. Bruno - January 2016

All too often, IoT solutions contain a hodgepodge of components, devices and software at the remote end. This can include a gateway (or a smart phone or tablet in its place), Wifi connectivity (Mifi’s are sometimes used), and varying sensors and boards with a multitude of communication protocols. For instance, there may be Zigbee communication from electrical controllers to a specialized Zigbee gateway, then Ethernet connectivity to a second gateway that connects to the Internet, and possibly other smart devices on-site depending on the solution.

This might get the job done, but it’s not reasonably flexible or reusable. Instead, what’s needed is a standardized approach to device and sensor communication, where back-end server connectivity is seen as an extension of the remote solution. This is what we call the IoT Service Bus (ISB), and its enabled by IoT gateway software (and device libraries) that provide the following:

  • Secure, reliable, message-based communication between cloud/data center and the remote location (i.e. JMS, WebSockets, REST)
  • Device-specific protocol communications (MQTT, CoAP, Zigbee, RFID, and so on)
  • Multimedia support
  • An embedded database
  • Search capabilities
  • Logging facility
  • Edge analytics and machine learning
  • OSGi support


A Cloud-based Approach for the Internet of Things

Eric J. Bruno - March 2016

The Internet of Things (IoT) is part of a promising future where smart computing devices will communicate with one another, with people, and with the enterprise applications we use. But IoT value is in the data, reaching from the enterprise out to realize the tremendous potential at our fingertips. This data-centric view of IoT requires the integration of new data services, the injection of intelligence into our devices, and the interconnections with enterprise systems.

Soon, we’ll see growing numbers of devices and systems connected in ways we haven’t yet imagined, requiring us to handle a wider variety of data types with even greater volume and velocity. To use IoT to discover what’s truly important and relevant to your business and your users, you need to have the right IT capabilities. The technical requirements and data volumes introduced are best met by the cloud, which surpasses traditional data center implementations in multiple dimensions.

Devices and sensors are a means to acquire valuable data, and IoT applications often require a distributed set of services to act on that data. The timely, contextual data, along with the cloud, are so crucial to IoT, they essentially transform and extend enterprise architecture beyond what we know today. Although on-premise enterprise application infrastructure has much in common with IoT infrastructure requirements in terms of technology, it’s the cloud that solves many of the challenges head-on.


Complex Event Processing in Healthcare IoT Solutions

Eric J. Bruno - January 2016

The need for improved healthcare with reduced costs is driving innovation in mobile health. Healthcare providers and product vendors are working to deliver solutions for personalized medicine, improve disease management through advanced telemetry, and leverage population health data to better measure the effectiveness of care and treatment. Modern technology is poised to address the related challenges of remote patient care. These challenges include connectivity, security, privacy, advanced analytics, data visualization techniques, and the remote management of monitoring devices.

As more medical devices connect patients to healthcare providers over the Internet, they become an important and growing segment of the Internet of Things (IoT). The vision of IoT is to integrate diverse sets of data from devices and sensors and the rest of information technology (IT) to enable analytics that can anticipate events, issues, and other needs. As a result, software systems and healthcare providers together have a more complete view of their patients’ health regardless of location or time. In this case, the “things” are medical devices and the patients connected to them. 

Mobile health (mHealth) covers medical practice, solutions, and healthcare supported by mobile patient monitoring devices (i.e. fitness bracelets, watches, wireless medical devices, and so on). According to research from Berg Insights, there are five main segments of mHealth: professional healthcare solutions, inpatient monitoring, remote patient monitoring, assisted living and tracking, and personal wellness. Integrated mHealth IoT systems can be used to implement the following innovative solutions:


Introducing "Programming with Reason"

Eric J. Bruno - March 2016
Welcome to the premier of Programming With Reason, an online magazine for software developers. My goal with this magazine is to not target any specific language or platform, but to focus on topics that are relevant to both professional and hobby programmers globally. Most of the articles will include code samples in different languages where appropriate, and no emphasis will be made on a specific operating system unless required (for example, for mobile software).

There will be a general topic focus each month. For instance, the articles posted this month will focus mainly on Internet of Things programming and solution building. However, each month will have a set of recurring columns, each with a theme that focuses on a specific area of software development, such as:

  • The Grid: a reference to the 1982 movie Tron, this column focuses on the cloud
  • Core: a throwback to “core memory”, this column focuses on architectural patterns
  • Missing Printout: back in my college days, when the computer science department shared a single line printer, you would often find discarded source listings next to it. Sometimes these listings were real gems, sometimes not. This column is in honor of that, and will simply be a source listing that you may find interesting. No comments or documentation, of course :-)
  • a.out: a reference to the default filename of an executable after source code is compiled on Unix. This column will comprise random thoughts on software development.

My goal is to build a site that’s useful to programmers DDJ of all types (languages and platforms, professionals and hobbyists, and so on). If you have suggestions on content, contributions, or any questions or feedback, feel free to send a note to