I’ve decided to re-open my blog. It will be a mix of politics, technology, and economics (and maybe some sports) given my interests.
Today’s post will be tech-centric, so those uninterested can navigate away now.
I want to talk a little bit about my vision for “devices” as we begin to move towards the next generation of computing. To me there are three major factors which define the “next generation” of consumer computing/tech:
- significantly faster, ubiquitous broadband (wireless)
- unlimited computational power and relatively cheap access to any software via cloud
- open specifications for devices which enable device categorization and communication between multiple manufacturers
You can probably tell from my use of bold and my blog title that I want to discuss the last of these three in this post.
What is an open specification? To begin, let me posit a scenario. Let’s say Apple comes out with a much anticipated tablet PC on Monday at their Worldwide Developer’s Conference. What would this tablet look like? Well, it would probably look like a big version of an iPhone to some extent — it would be mostly for web browsing and watching media, not for doing document editing which is clearly a pain with no keyboard (although certainly one could attach a wired or wireless keyboard).
But what if instead of just being a standalone device, Apple envisioned the tablet as a device capable of multiple functions. Let’s call each of these “classes”:
- display
- internet access/wireless router/network creator
- computation/CPU
… among other, more specific categories. Now imagine that you have 2 people with iPhones, which would be have all of the capabilities above, plus the ability to act as a “controller” because of its small size.
Now imagine you could play a game of air hockey, using the tablet as the screen (it would also handle the computation of the game and set up an ad-hoc wireless network over which the game would occur), and your iPhones as paddles/controllers. How cool would that be? How cool would it be if you could just as easily use a Google (Android-based) phone as one controller and an iPhone as the other?
The concept here is abstraction. If device makers start to create abstract “classes” which restrict a device’s sphere of activity, it enables much superior interplay between devices even among different manufacturers. For the above example to work, there simply needs to be a controller “class” that hands off control data to a “computation” class over a network created by a “network” class, with the ultimate output displayed by the “display” class. These can all be the same device, each different devices, or 3 classes in 1, 1 class in another, as in the air hockey example (tablet is computation, network, and display, iPhones are controllers). In other words, rather than deal with specific devices having different capabilities, we have an open specification that says “ok, if you’re going to claim to be a network class, here’s what you have to support and in this language that every other device understands.” And all of the sudden myriad devices can interoperate and open up new use possibilities that simply weren’t possible before.
This is not a new concept. Abstraction and object-oriented (hierarchical class structure) are ideas that have defined software development for decades. Nor are these ideas limited to software development. Your computer itself is built on similar principles — you have a motherboard which can be made by one company, a CPU which can made by another, a graphics card made by a third, a hard disk made by a fourth, and etc. None of this would work if these pieces of hardware were not written with defined roles and interoperability in mind. But for years since the advent of the personal computer, we have thought of these distinct types of device — a desktop, a laptop, a mobile phone, a music player [ipod], a personal organizer — rather than about the roles they actually fill. Nowadays it is common for the mobile phone to encompass multiple roles and even subsume portions of the laptop/desktop role, but we’re still hamstrung by lack of interoperability between them even though all of the technology exists to make amazing interoperability work seamlessly.
In other words, I advocate a different type of thinking. I would do away with the device-centric viewpoint which says “I want one device to do everything.” Or more accurately, I have no problem with devices that do everything as long as they also implement a restricted set of behaviors according to well-defined, open specifications that enable complex interactions with other devices. I embrace a different model where devices can do everything or do very specific things(!) and thus interact seamlessly. In a world where increasingly every piece of electronic equipment out there, including washers, dryers, energy meters, audio equipment, etc., is gaining computing power and versatility, we need abstraction and role restrictions to make the most of our device potentials.
Oh, and by the way – this already exists. See Bluetooth.