The 'Internet of Things' (IoT) is a phrase generally considered to have been coined by Kevin Ashton in 1999. Ashton, who is now general manager of Belkin, came up with the phrase while working at Proctor & Gamble. In his words it combined "the new idea of RFID in P&G's supply chain" with the "then-red-hot topic of the Internet".
The term refers to linking the Internet to physical objects: Equipping objects, such as household appliances, with networking capabilities, allowing mutual interaction between them and greater monitoring and control over them by end users.
How Haiku is building a better BeOS
What's your idea worth? Building a social knowledge market with Barter
AmigaOS 4 developer interview: Why it endures and what the future holds
Syllable OS: Creating a better desktop operating system
Open Source Spotlight - OpenStack: Building a more open Cloud
"Ultimately, the Internet of Things is about making the simple things in life a little simpler," Adam Dunkels says. Dunkels is the creator of Contiki: an open source operating system designed to be used for the Internet of Things.
"For example, when waking up a on a summer day, wouldn’t it be nice to have an app that tells you what beach is sunniest?" Dunkels says. "The Internet of Things allows us to build such apps: apps that make the real world a little more like the Internet.
"The Internet of Things builds on a range of technologies: Low-power radios, routing protocols, sleek software. One key enabler has been the standardisation the Internet Protocol to cover new low-power wireless devices.
"This allows items, environments, places, and devices to be directly connected to the Internet and exchange information. Both obtaining information from the Internet, for example to better control heating and lighting, and pushing information to the Internet; for example providing information of where people are moving around in a city."
Dunkels believes that making the Internet of Things a reality on a large scale requires making it easier to build Internet-connected embedded systems, which is where Coniki comes in. "Contiki has worked in this direction, but it hasn’t come far enough," he says
The operating system has been built to let battery-operated, low-power systems connect to the Internet. The project began in 2003 as an experiment by Dunkels, "connecting various interesting things to the Internet". Contiki built on the uIP project, which Dunkels says was the world's smallest IP stack at the time.
"In 2002, uIP had been used to Internet-connect the world’s first Lego brick and was also widely used in embedded systems," he says.
"Contiki added an operating system layer on top of uIP, which made it possible to connect multiple applications to the Internet simultaneously."
When the project started, it made headlines by enabling a range of underpowered, dated devices connect to the Internet. The examples cited by Dunkels include the Apple II (released in 1977), the Commodore 64, and even Nintendo's handheld Gameboy console.
In 2008, networking vendor Cisco contributed code to add IPv6 support to the OS, making it the first IPv6 certified system for the Internet of Things. Other hardware vendors have also contributed to the system, helping make sure their devices can work with Contiki.
Despite its emphasis on being a super-lightweight embedded operating system, Dunkels is a "firm proponent" of not optimising code to the nth degree. "The fact that we do not need to optimise code these days makes us so much more productive than we used to be," he says.
"Sure, there is a bit of a lost art in that we don’t need to bleed every last bit out of every data structure and every last cycle out of every algorithm any more. But much of this art wasn’t that useful anyway.
"One of the biggest challenges in developing Contiki is finding the right balance between optimisation, simplicity, and resource-efficiency. It is all too easy to fall into the traps of premature optimisation and sub-optimisation."
Under the hood, however, Contiki still has some innovative features to help maintain its low overhead. For example, the system uses "protothreads"; a concept developed by Dunkels with the aid of Oliver Schmidt.