Disclaimer: This might be obvious if you know anything about me but just to point out, my opinions expressed here do not reflect those of my employer and certainly do not represent any form of inside knowledge about future products or strategy or whatever else anyone might or mightn’t decide to read into this. blah. blah. Please don’t get me in trouble. Thanks & God bless. Great. Now that that’s out of the way….
A few posts ago, I got into a wild rant about the fact that apps essentially treat my devices as a giant, distributed game of whack-a-mole when sending me notifications – basically just pick a device at random, send the notification there and if they picked the wrong one… well, you’re shit out of luck.
What I realized in writing that post, was that there is a fundamental disconnect between me (the user) and the people who design the experiences I use. Simply put, to me, I am one; to them, I am many. I’ll explain what I mean by this. But first, a story.
So, yesterday, I had a Microsoft Teams (sorta like slack… but better) meeting with someone and we wanted to do a video call. I’d spent all day at the Microsoft annual Hackathon so I was running late to this meeting. Anywho, I get to the office and call into the meeting only to remember that my desktop PC doesn’t have a speaker/mic. Okay, no problem, I pull out my laptop but then darn, I don’t have Teams on my laptop. I want to use my phone which has Teams and a mic and a speaker but not a big screen. So now, what I really want is to join the call on Teams using the screen and webcam on my PC and the speaker and Mic on my phone. Can’t do that. Why? Because….
Anyways, as I was saying, me, one; them, many. What this means is that from my perspective, my experience of any single application is a unified thing. I only have one Teams account so as far as I’m concerned, Teams on my phone, Teams on my PC, Teams on my desktop… it’s all just Teams. I just want to get on my call, man. For the developer, however, they are building a Teams mobile experience, a separate Teams desktop experience, etc. etc. And while they will do a lot of work to try and connect these separate experiences, at the end of the day, they are designed to operate as separate applications and so per Conway’s law, the seams from stitching them together will always show.
So now, I bet you’re asking, “Dunni, wtf does this have to do with a world computer or clouds or edges?”. Well, reader, I’m glad you asked.
In the olden days (’70s/’80s pre-Dunni era) when people started to build computers, you had to do a lot of work to interpret the input or to structure the output and often the way one computer would store something would be different from the way another computer would store the same thing. This was the same with processing, different computers had many different and incompatible processor architectures which essentially meant that they spoke different languages.
This was particularly inconvenient for people who wanted to build apps like a spreadsheet app for example because all the work you did to get your app working initially depended on the specific input device and the specific output device and the specific storage device and the specific processing device that was used. This meant that the app you were building only worked with very specific hardware (mice and keyboard and screens and CPU and storage) because you wrote it specifically to work with those and nothing else.
This was the wild west until the Rosetta stone for personal computers became ubiquitous and we called it ‘Windows’ (well, DOS I guess, or… look it was a general-purpose OS. I’m not a historian okay?). Anyways, windows became a thing and suddenly, all these things that previously couldn’t work together did. All these custom input and output processes were magically turned into single API calls. It was like the computing equivalent of going from trade by barter to having currency.
It’s hard to overstate the degree to which modularization and standardization of interfaces accelerates the ability to create amazing things. A lot of people say that the most amazing things in the world are the most remembered, but I think the most amazing inventions are those which solve a problem so thoroughly that we forget the problem ever existed. Today, the average user doesn’t know or care what is going on behind the screen of their iPhone or beneath the keys of their laptop. These devices have components that have been so completely and seamlessly integrated that we all now thing of them as a single device. Not a touch screen + speaker + microphone + accelerometer + radios + memory + storage, etc., but just ‘my iPhone’.
The new point of friction, where all the integration is happening is between these devices. How does my phone talk to my laptop? Where do I store my files so I can access them on all my devices? how do I get my music to move seamlessly from my PC at work to my phone as I commute to my smart speaker as I walk into the house? How do I get Alexa to know the closest active screen to me and present information to me there when I ask for it?
Most of these flows are broken today, or, at best, are implemented by individual application developers to varying levels of success but they all suffer from the singular flaw of being disparate systems that are haphazardly stitched together to the best of developers’ ability.
An additional layer of complexity here is that the kinds of questions we are asking of these networks of devices are getting much more interesting. The reason for this is that we are fundamentally beginning to ask computers and computing systems questions about things that are, at least today, not deterministically knowable by computers. Whereas before, we had been asking questions of the computer about things that were wholly stored in the computer, today, the questions we want computers to answer are about the world around us which is, by definition, not stored inside a computer.
Here’s an example: today, abstractions allow us to ask our PCs “What is the position of the cursor on the screen?” which has then become the much more useful “What item was clicked on the screen” these were breakthroughs at the time because a developer who wanted to make , say, a spreadsheet application, no longer had to worry about writing the code to describe to the computer how to read the electrical signals coming from the mouse that indicated movement or how to use the visual coordinate system to compare the position of the cursor on the screen to the position of the button being clicked. This was one of thousands of abstractions that came from the invention of drivers, general purpose Operating Systems and APIs built on top of one another. The effect of this seemingly trivial thing was that our spreadsheet developer could now spend more time focused on high-level spreadsheet functionality and less time on repetitive tasks. The benefits of specialization.
By contrast, the new types of questions we are asking our networks of devices are things like “what is the GPS location of my phone?” which is quickly evolving into “Have I gotten home from work?” and “When last did I play Tennis?”. At a fundamental level, the nature of the question (being about the state of the real world outside the computer) is not something a computer can know with certainty and so whereas in the prior case, it would use its own knowledge of its internal state to tell the user some other fact that logically derives from that knowledge, now, it uses a set of heuristics to guess what the state of the world probably is (kind of like humans, but not as good). This is where intelligence, both at the cloud and on the edge come in.
So, now, jumping back into the world computer, let’s put these two ideas together. First, the shift of the point of integration from being intra device to being inter device is literally the story of the cloud. A single system that connects all the devices together and acts as their point of integration. A system that creates common interfaces to hide the diversity of devices of a certain type and the complexity of the devices a user engages with and acts, once again, as the Rosetta stone and allows all the things to work seamlessly together. This system is the intelligent cloud. Or at least, I believe it will be.
Second, the ability of these devices to collect information and use it to make better and better guesses about the state of the world. The ability to ask the system above simple questions based on those guesses without having to deal with the sordid details of how the guesses are made, what devices must work together to make the guess or how to evaluate the system’s confidence in its answer. This is what I believe is/will be the intelligent edge.
These two pieces, when brought together correctly, will represent the meta operating system for the world computer. In the same way that we previously interacted with the screen and keyboard and trackpad rather than the CPU, our end user interactions will be with the edge rather than the cloud and in the same way that everything on your PC has become plug and play, the world computer will be the same. You might add a new phone here or a smart speaker there and the system will figure out the implications of that addition, what new capabilities you now have available and what new constraints exist of your experience.
As the integrations and abstractions become real, application developers will begin to shift away from building a mobile app, a desktop app, a web app and a chat bot but will instead begin to build applications that target the user’s world computer and simply know the state of the user’s device capabilities and constraints. These applications will be able to leverage the guesses the system makes about the state of the world to surface the right aspect of the experience to the right user at the right time.
For example, rather than requiring me to install Spotify on my PC and phone and echo, etc., what if I was able to install it once on my world computer and as I moved from typing this post on my laptop to going to take a shower to catching a bus to work, my music could follow me seamlessly and with no effort from me, from my laptop to the speaker in my bathroom to my headphones as I walk out the door.
What if, as I was typing this post, I wanted to insert an image and when I clicked the camera picker, it not only showed me the webcam(s) on my PC but gave me the option to launch my smartphone camera which is right beside me, take the picture on my phone and automagically inserts it into the post?
What if I could ask Alexa to set a timer and the countdown began on my Apple watch? (p.s. I don’t have an Apple Watch but if somebody wants to bless a brother… you know where to find me 🙂 )
This is only the beginning of the promise of the world computer. Imagine, as an experience designer or as a developer, designing and building an application that ran in the world rather than on any single device. What kind of scenarios could you light up?
The future is one where, for developers and users alike, experiences flow as seamlessly between your network of devices as your cursor moves across your laptop screen today. Now, someone just has to go build it….