7 de diciembre de 2015
While the Internet of Things is getting plenty of buzz right now, developing IoT applications is no easy undertaking; and the area where most developers hit roadblocks is with system integration, says Matt Osminer, director of Mobile and Web Software at Cardinal Peak.
"It is extremely difficult to align all of the various component teams on the same schedule and work in perfect unison," he says.
Developers have to work harder to self-test code in the absence of an actual integration target. And when integration does happen, teams across the project may have to rework their code to get things working, since everyone tends to interpret a specification a little differently.
The team at Cardinal Peak helps support and engineer digital products and platforms and are leaders in IoT technology. Matt recently checked in with us to offer more of his insight on the future of the IoT and mobile and web applications. Here's what he had to say:
What's your professional background?
Early in my career, I had the good fortune of working as a software engineer in the video space for a streaming video startup. Startups are a fantastic place to learn, and I had the opportunity to get my hands on a little bit of everything, including device drivers, streaming video protocols, video and audio processing, and Java server development.
When the dot com bubble burst, I did a brief stint of work for a cluster computing company working on genetic sequence matching algorithms for their cluster computing architecture.
I eventually landed a position at Time Warner Cable, where I continued to develop embedded software for set top boxes. Eventually, I got the opportunity to move into management, becoming an engineering director for TWC's digital navigation application. I quickly came to appreciate how difficult it is to deploy and support millions of networked devices!
I spent several years in management at TWC before moving to Cardinal Peak, where I lead the company's mobile and server teams. At Cardinal Peak, I've been managing cross-functional teams with firmware, server and mobile components largely aimed at video and Internet-of-Things (IoT) products.
What's exciting you these days in the world of mobile and web apps?
I'm particularly excited about recent advances in apps that use advanced sensor technology. Google has made some headlines over the last year or so on spatial mapping for building interiors.
There's also this company called Structure out of Boulder, Colorado that I visited recently. They demonstrated a sensor you connect to your iPad. With this sensor connected, their app can make high-resolution 3D scans and models of rooms, objects, or whatever you desire - all in near real-time. They see a lot of use in the medical field right now, but you can imagine numerous other applications.
What are some of the biggest trends or innovations you're following in IoT engineering?
In terms of trends, it's hands down services and frameworks striving to connect and run ecosystems of products. You've got the 800-pound gorillas such as Apple, Google, IBM, and Intel pushing their initiatives alongside smaller companies such as Ayla Networks, Xively, and Arrayent all working on their own solutions. All of these companies have their own spin and approach to IoT.
What's interesting is the split between commercial and residential applications. Residential IoT feels like it has short-term "wow" factor. You see this with all the hype around Nest. As a consumer, I'm initially excited to control my thermostat remotely, but at some point my interest wanes and it becomes just an occasionally-useful gimmick. In my opinion, the magic of IoT for residential solutions will be when devices start working together in complex, intelligent and predictive ways.
Apple and Google are in prime position to dominate the residential market. Both are building out their own platforms, APIs and frameworks, and also own the cell phone market to bring it all together. Made for Nest and HomeKit clearly strive to be the heart of your personal world vis-a-vis your cell phone. The magic question is will others adopt the platform and participate to make it real? So far, I'd call adoption lackluster at best. However, both platforms are still growing and people are considering what they might achieve by tapping into these frameworks.
In the commercial space, the value proposition is much higher and more tangible. The smaller players in the market are in good position to quickly onboard commercial devices and supply a plethora of data and services for the business sector. Being able to remotely manage and monitor products across your business, coupled with business analytics, provides meaningful real-world data to make informed business decisions. If, for example, you know the energy cost and failure rates on your air conditioner across your hotel chain, you can more intelligently manage these systems and better negotiate maintenance and parts agreements.
Hand-in-hand with the product trend, the tech continues to evolve as well. One of the interesting aspects technically is the number of choices available to a product developer for wireless communication. The big hitters are Wi-Fi, Zigbee, ZWave, and Bluetooth. Each has its advantages and disadvantages, but the common tradeoffs are data rate, cost and power.
I keep a pretty careful eye on Zigbee and ZWave, or what I call the "Z" technologies. As time progresses, Wi-Fi gets faster and is widely adopted in most homes now, while Bluetooth continues to build out protocol support to match "Z" technology (including mesh protocols) and carries a low power option with it. Prices also continue to drop for Wi-Fi and Bluetooth silicon, putting them within easy reach of more products.
Wi-Fi and Bluetooth are also built into almost every modern mobile device on the market. This ubiquity makes connecting to IoT devices with these technologies easy and cost-effective. Given the added cost of "Z" gateways necessary to bridge "Z" devices to the Internet or your mobile device, and cost and battery power leveling out on Bluetooth and Wi-Fi, I have trouble seeing a path ahead for "Z"-based technologies.
How is IoT app development different from creating more traditional apps for mobile and web?
First and foremost, IoT products are a systems integration problem. You have hardware engineers, firmware teams, server developers, mobile app developers, and web app developers working at different levels to make a product. This requires substantial system engineering, product and project management and top-notch QA process to successfully execute.
The other complicating factor is we're trying to bring a very technical construct to consumers who may not be tech-savvy. Explaining to someone how to sign onto a Wi-Fi network isn't as easy as you might think. Putting a simple and easy-to-use user experience on top of all the technical challenges is really the icing on the cake.
What are some of the unique considerations mobile and web app developers need to make when developing for IoT?
Developers need to constantly keep in mind that applying settings to a remote device isn't instantaneous. Nor is it always reliable, depending on your framework and the connection quality your IoT device has. This requires a lot of UI coverage for delays to help the user understand you're working on their request, along with more asynchronous event handling in support of that UI coverage.
What are some useful tools IoT app developers should be aware of?
Generally, the tools I see for IoT apps are specific to the platform you're targeting. I'd really have to advise that developers explore and understand their target platform and what it offers.
That said, I mentioned before that one of the big challenges for developers is integration and self-testing. We've done a couple of projects with Ayla Networks recently, and they have this concept of a virtual device and device template. The device template describes an IoT device in terms of properties you can manage on the device. In effect, the device template is a communication contract between the device, cloud and app.
Ayla provides tools that allow you to create a virtual device and map a device template to it. Then, using a web portal, you can see and manipulate the properties on the virtual device and verify that your app and/or firmware is sending and receiving the changes. This tool really helps developers self-test on both sides at the cloud layer and knocks a lot of risk out of system integration.
What should developers be doing to ensure the security of the IoT apps they build?
Start with a security plan. Before coding even starts, you need to think through your security surface, identify holes and make sure your initial design is solid. Even the best of plans are fallible, so also consider what happens when your security is breached. Remember, many IoT devices make physical changes to an environment, so potential for harm to property and people is a real possibility. Can a malicious hacker do serious damage? Should the firmware, app, or server enforce limits to try and protect themselves?
Fortunately, the Internet has already provided many standards and technologies that can be leveraged. TLS and certificates, hashing and encryption algorithms provide a ready-made tool kit you can start with. There are also many vendors out there that supply lightweight implementations designed for deeply embedded devices, and most silicon provides some level of hardware support to further lighten the load.
What are some of the most innovative IoT apps you've seen recently?
Probably one of the best ones I've seen lately is an app we're currently working on for an appliance. The app presents a consumer-facing view that provides the usual IoT "control my widget" interface that I feel is a gimmick at best.
The innovative part of the app is a dealer/installer side that provides a toolkit to aid dealers and installers in a number of tasks. This toolkit allows an installer to pull up a list of all units they have sold with error codes, understand the error codes and details about the unit in question, and get driving directions to the unit. The installer is therefore able to see units that need maintenance and ensure he has the correct parts to fix the issue when he arrives on site. This app is great for commercial and industrial applications where the dealer has hundreds of units to keep track of.
Behind the scenes, the server is collecting data on all the errors along with statistics on unit usage over its lifetime. The manufacturer is collecting this data so they can do analytics to assess if they have quality issues and generate marketing strategies.
What do you think is the future for IoT apps?
I have to go with ecosystems of devices working together as I noted before. However, let me one up that and suggest that this concept goes beyond your personally-owned devices. Instead, I suggest we participate in a world of devices you don't own that are available for your use. These devices could automatically respond to your preferences to ensure the most comfortable environment possible.
Learn more about where, how and why IT and digital transformational initiatives are emerging worldwide in Fluke Network's Digital and IT Transformation Research Summary.