11436 SSO

Designing Apps for the Internet of Things

Dec 20, 2013

In the past five years, we’ve seen a dramatic shift in how software is developed for consumers. With the mobile phone we can deliver sleek experiences to users in a matter of months or even days, depending on the idea and the execution. With more developers mastering mobile development on a daily basis, many are looking to the Internet of Things to create even deeper contextual experiences for their users. Everything, from the lightbulb to the automobile, is being connected to the Internet.

The first phase of app development is always design. Planning out how you’ll do things from the ground up is especially important in the Internet of Things. The more moving parts you add to your system, the more complex integration, user experience, and performance become. Mobile apps had users in a sandboxed context where they could tightly control the experience and the flow of the app. However, in the Internet of Things developers are having to interact with the physical world around them.

The quantified-self

The first type of apps are those that allow humans to view themselves empirically. The movement that sprouted around this is known as “quantified self.” Companies like Nike, Jawbone, and FitBit have developed specialized hardware for tracking workouts, weight, and daily activity. They then chart it out for their users to analyze and recognize patterns within their daily routine. They can optimize around that routine using data. Data and analysis like this could prove to be a critical integration for healthcare providers to get a better sense of an individual’s daily activity, and how it plays into one’s overall health.

The home

Home automation is also becoming a large field. Creating experiences that enable users to control their environment and even automate chores will be incredibly powerful. The focus will be to minimize the mundane in the environment that everyone is familiar with. The Philips Hue light bulbs illustrate what home automation can achieve. Being able to interact with every light in your house with just an API call is amazing. One can adjust color and brightness, creating mood lighting, or even use them as notifications of important events, like when dinner is ready.

The car

Being able to harness the context of an automobile’s location will allow developers to create experiences like assisting travelers new to an area to their hotel, or even a grocery store. Cars and other motor vehicles will be infused with an incredible amount of intelligence about the world around them. Navigation features on a car already exist, but wrapping data into IFTTT-style logic rules would be an easy and incredible way to extend the car.

These rules would encompass sensing something from the data and having IFTTT perform some action with another API or message service. OnStar's Nick Pudar talked about this in great detail at the I ♥ APIs conference this past November. The ability to alert the National Weather Service when it begins to rain would be an instant way to create a real-time weather service. OnStar has played a huge part in the connected car, and many of their hackathon projects show off the power of intelligent transportation.

Building it out

Once you’ve planned and designed your app, you’ll need to build it. Building for the Internet of Things means interacting with open tools and transferring previous app-building knowledge to a different computing paradigm. In some cases the platform is already compatible with tools you use. A great example of this is using PhoneGap with Google Glass, as described on a recent Apigee webcast. Many platforms are catching up by offering a layer where you can use scripting languages to interact with the system. Eventually you won’t have to live in a world of low-level compiled languages. You’ll be able to use languages and tools you already know and have used to build apps for other platforms.

When you do have to learn new tools to create pieces of your platform, they are typically open, well documented, and have a growing community, so it will be easy to pick up new toolsets. The Arduino IDE, the BeagleBone Black IDE, and the Raspberry Pi all work on Open Software that can be picked apart and viewed at any time. With an open set of tools, it becomes easier to alter, modify, or create other tools that will be able to help you build your Internet of Things app. This unprecedented level of control over tools being used will allow for the faster creation of apps—something that typical mobile development environments don’t have.

Getting apps and devices in users’ hands

The last piece of app development is always deployment. Deploying to the Internet of Things means creating a smooth and slim deployment process that allows users to seamlessly update their new devices. Getting an app into the hands of the masses has become tremendously easy. The various app stores have been a great place to get work into the market, enable a safe way to collect payment from others, and make it easy for users to find and purchase your app. This is still very much an option when building mobile app components for the Internet of Things, but it will also be important to get devices into the market to go along with the app.

Crowd funding platforms have created an easy way to check out ideas and get a set of investors willing to use your platform. While it doesn’t completely solve the distribution problem, it does help create a channel through which to commune with potential users. Many developers will look to their own solution for deployment of their software. This should be a consideration during the design process. Keeping the process smooth and frictionless will earn a consistent base of users who will love the product.

The Internet of Things will no doubt continue to be a huge opportunity for developers in 2014. Being ready to tackle the hard problems that come with embedded computing will be important. It will take a keen eye for design, building solid applications, and a smooth deployment experience.


cars image: Lindsay Shaver/Flickr


Scaling Microservices