The Internet of Things – an Introduction
'have no fear, little fish,' said the cat in the hat. 'these Things are good Things.' and he gave them a pat. 'they are tame. oh, so tame! they have come here to play. they will give you some fun on this wet, wet, wet day.'
Long, long ago, on a somewhat insignificant planet, orbiting a rather below average star, in a startlingly average corner of one of the billions of similar spiral galaxies, the rather unintelligent inhabitants managed to invent computers.
They went through the usual stages –
"I think there is a world market for maybe five computers."
"Computers in the future may weigh no more than one-and-a-half tonnes."
"There is no reason anyone in the right state of mind will want a computer in their home."
"640k is enough for anyone, and by the way, what's a network?"
“A computer once beat me at chess, but it was no match for me at kick boxing.”
And so on.
Then they invented the Internet.
This allowed their computers, and so their computer’s users, to communicate, and look at naked pictures of one another, without leaving their houses.
“This is great!“ they shouted. Mostly.
Because they weren’t leaving their homes, they became lazy. And that led to a lazy programmer setting up a camera attached to a computer – so he could look at the coffee pot in the kitchen without getting off his fat arse.
Although this was just a web cam, attached to a computer (actually an Acorn Archimedes)– indeed it was probably the first webcam on Earth – this was the beginning of the Internet of Things.
Being able to look at a coffee pot in Cambridge from anywhere in the world was the first step people took in attaching devices (albeit, in this case, a device attached to a computer) directly to the Internet.
Internet of Devices sounds so dull, doesn’t it? Internet of Things, though. Got a bit of a ring to it!
But this first Thing was, after all, just a camera. Browsers couldn’t send any information to it – couldn’t pan the camera, or turn off the coffee. It really just provided one piece of information – how much coffee is in the pot?
Time, as it is wont to do, marched forward. Devices became cheaper, and more powerful. Wireless networking became the norm, and shrank in both cost and size, until we took for granted hand-held devices that were connected to the Internet. This was driven largely by mobile phone development, and, as components became less expensive, it became possible to add connectivity to almost any electronic device.
Refrigerators for example. “LG’s new premium French Door Refrigerator includes a touchscreen LCD panel and a smartphone app so users can check-in and check-out food to manage storage and expiry dates. Furthermore, once you’ve checked in all the food you have purchased, the refrigerator will then suggest recipes utilising the contents.
Even cows http://www.bbc.com/news/uk-scotland-scotland-business-26705812 are Things on the internet.
In fact, people have started connecting so many things to the Internet that a new addressing method was required (IPv6) that has the capacity to individually address 340,282,366,920,938,463,463,374,607,431,768,211,456 devices –which should just about be enough, one imagines.
While the first devices simply provided data on the Internet for human consumption (web cameras, weather sensors, that sort of thing) people soon started programming these devices to talk directly to one another without human intervention.
So your alarm clock might start up the coffee maker just before it wakes you; the car tells the garage door you just started the engine, so it should open – and close again when you’ve driven off. But that’s just local – your GPS could guide you to the car park that still has spaces – warn you to change lanes when the one you are in is blocked ahead.
And it becomes less personal as it becomes more personal. Your Thing might be in your phone, collecting data such as temperature, humidity, air pressure. Imagine the improvements in weather forecasting with millions of data points instead of thousands – crowd sourced data with a crowd of Things.
Imagination is a wonderful thing –and the Internet of Things is really limited only by people’s imagination. However, implementation and practicalities tend to slow progress somewhat. For example, although Google now have cars that drive themselves (and are, of course, internet connected) legislation won’t see them on our roads any day soon.
But, one day…
A thing attached to the Internet of Things needs to be programmed. And it needs to be programmed well.
We still find it extraordinarily difficult to write a simple app that works on multiple devices; Android uses Java, IOS uses Objective C or Swift and Windows phone … well, nobody’s writing anything for windows Phone, so it is moot, really.
Now we will need to learn to program a variety of different devices – and have them talk to one another.
Look at the devices you can already buy, for just a few dollars, that become Things:
Netduino – programmable in .NET micro framework using C#
Raspberry Pi – programmable using Python. C, C++, Java, Scratch, and Ruby
Edison – and other Arduino-compatible boards programmable using C++
And of course there are more devices arriving every day.
The low cost and flexibility of these devices means that we can take a device and turn it into a different Thing. Whether it’s controlling your Xmas tree lights over the Internet, or getting your home to call you if the dog is barking, the low cost means that these devices can be programmed with a single functionality, rather than being a generic computing device.
And then that functionality can be built into a truly small device – SIM sized – and attached to real-world objects.
Sure, us developers may use the same device for streaming video to the TV, downloading torrents, monitoring our home’s security and closing the curtains at night – but more and more devices will end up bung built as retail packages with a single use, because Joe Public can’t program his Set Top Box and just doesn’t want to play around configuring devices.
And these devices can be made small and cheap enough that they can be simply added to the infrastructure by putting them in, or sticking them on, real world objects.
So we need standards. And we need security.
We need to be able to take two different manufacturer’s devices and have them not only talk to one another, but to actually understand each other, and act on the information received.
And we need to prevent our devices being taken over maliciously to send spam and take part in bot-nets.
That’s where we developers come in. Whether it is by helping drive standardisation, developing cross-platform schemas or just building the software to drive these devices.
These devices exist now – but they are going to increase in number while they decrease in size. Developers need to help drive this revolution. We need to develop the software for Things themselves – and also develop the software products that will use the information provided by the things.
Imagine:
Cars that talk to one another adjusting their speeds appropriately to help traffic flow smoothly.
Baby monitors that monitor the baby’s temperature and respiration non-invasively.
A doorbell that warn you when the mother-in-law is visiting – when she puts your address into the GPS!
Socks that can tell you where their mate is.
Wearable tech that record everything you do – and lets you search people’s names using face recognition, tells you when you last saw them, what their wife’s name is.
It will happen.
Software developer par excellence,sometime artist, teacher, musician, husband, father and half-life 2 player (in no particular order either of preference or ability)
Started programming aged about 16 on a Commodore Pet.
Self-taught 6500 assembler - wrote Missile Command on the Pet (impressive, if I say so myself, on a text-only screen!)
Progressed to BBC Micro - wrote a number of prize-winning programs - including the best graphics application in one line of basic (it drew 6 multicoloured spheres viewed in perspective)
Trained with the MET Police as a COBOL programmer
Wrote platform game PooperPig which was top of the Ceefax Charts for a while in the UK
Did a number of software dev roles in COBOL
Progressed to Atari ST - learned 68000 assembler & write masked sprite engine.
Worked at Atari ST User magazine as Technical Editor - and was editor of Atari ST World for a while.
Moved on to IBM Mid range for work - working as team leader then project manager
Emigrated to Aus.
Learned RPG programming on the job (by having frequent coffee breaks with the wife!!)
Moved around a few RPG sites
Wrote for PC User magazine - was Shareware Magazine editor for a while.
Organised the first large-scale usage of the Internet in Australia through PC User magazine.
Moved from RPG to Delphi 1
Developed large applications in Delphi before moving on to VB .Net and C#
Became I.T. Manager - realised how boring paper pushing can be
And now I pretty much do .Net development in the daytime, while redeveloping PooperPig for the mobile market at night.