Future of Computing

[I wrote this almost 14 years ago (20 FEB 1996. Today is 27 SEP 2009). Some of it is embarrassingly naïve, but I was just a (25 year old) punk kid back then. I was quite the anti-Microsoft/Intel, Java-head back then. It’s funny that despite predicting their failure here, I’ve since worked at both companies (just recently past my 10-year anniversary here at Microsoft). Today, I really believe Ray Ozzie has the right pragmatic vision for cloud computing and Azure is a nice leap in the right direction.]

We are on the verge of a second revolution. The first revolution brought PCs to everyone’s desktop and the second will unify the world into a huge collaborative brain. This is not simply about the internet. This is about something that the Internet will become. Right now we get information from the net and communicate with each other in mostly limited ways. In the future all storage and computing power will come from the net. To quote Robert Cringely in Accidental Empires, “Getting computing power will be like turning on the tap and the PC of today will go the way of the well and the bucket"

The Network Computer

[In 1997 we called them “NCs”. In 2009 we call them “Netbooks”.]

In the near future you will be able to go to the store and buy a Network Computer (NC). You will bring this machine home, plug it in, turn it on, and voila. All of your personal preferences are already set. All of your software is already loaded. All of your files are accessible.

What is more, you never have to do maintenance upgrades to your software and even paid upgrades and new installations are only a click away. You will not buy software in stores. You will buy it over the net. Moving files from one machine to another will always be done over the net. Removable storage media will be obsolete. Purchasing software will be a subscription complete with free upgrades to fix bugs as well as to add features. These upgrades will be done automatically for you by the company selling the software. You will not worry about compatibility, memory requirements or storage requirements.

You will have unlimited access to computing resources: processing power and storage. When you save something at home it is accessible from work or from your portable NC wherever you go (wireless of course). You will be able to store virtually unlimited amounts of information without ever upgrading your hard drive. You will be able to run memory-intensive applications without ever running out of RAM. Your CPU intensive applications will run blindingly fast. You will simply buy these resources from a provider; paying for CPU time by the MHz/hr. and for RAM and disk storage by the gig. Your resources will be protected from crashes and corruption by redundancy; on-line backups and mirroring of your data will be made by your provider.

Distributed Computing

[What I really meant was “Grid Computing” or “Cloud Computing”. So silly that I talk only of applications and not backend services.]

The biggest change that this second revolution will bring is massively distributed computing power. Rather than your little NC doing all of the processing of instructions, it will break the process into thousands of threads and send each thread to a different machine over the net where they will be executed simultaneously and the result will be sent back to your machine. How would you like to harness the power of a million parallel CPUs? For the right price you will be able to. You can think of a personal NC as simply a window into the combined resources of the world. In fact, for certain processes it may be the simplest and most efficient approach to have the entire application run remotely with only the screen image sent back to your NC. As the bandwidth of the net and the collaborative speed of CPU providers go up, the bottleneck's break-even point will go down until finally even a simple spreadsheet will run quicker over the net than on a local PC. At that point, why get an insecure and inconvenient PC that costs a month's wage when you could get an NC for a week's wage?

Everyone will have their own unique worldwide personal ID [Passport, Live ID, OpenID, …] . This ID will be able to be used wherever you go to gain access to a machine. From this the machine will configure itself toyour tastes and give you access to all of the software and data that you own. Youwill not care if you are using your machine at home, your machine at the office,your portable, or your friend's machine. You sit down, punch in your ID and everythingis the way you like it; all of your data and the software to manipulate it are at your fingertips.

The Network Is the Computer

All communications devices of today will communicate over the net tomorrow: televisions, radios, telephones, pagers, you name it. Remember all of the talk about how TVs will have 500 channels [Wow, I forgot about that!] - try 500-million channels. Marc Andresen of Netscape Communications brought up the point of web pages becoming more like channels as the information on the web becomes more and more interactive. People will be able to access the web to get their own personal broadcast of information. Television shows will not play at a given time, but at any time you like. Radio is using RealAudio to achieve this now. As bandwidth increases Television will do this too. Pay-per-view movies will be more like renting from an on-line video store; you choose from an absolutely huge list of titles and view the movies, pause them, stop them and rewind as you wish [Um… iTunes] . There will be no charge for long-distance phone calls because they will be made over the net [Um… Skype] . Telephony software already makes this possible, but soon it will be completely normal for every household to communicate this way.

Do not think that people will be giving up their TVs and telephones in lieu of a Network Computer. People will have TVs still, but those TVs will be connected to the net rather than the local cable service. People will still have telephones but they will not be connected to a phone jack and the phone company will have converted its infrastructure to be part of the internet. Special purpose devices may actually outnumber NCs. Many devices and appliances that are not communications devices today will find a reason to become one. Your car might make its current position on the Earth (via GPS) available to its owners on the net so that you can find out from the home NC that your spouse is not stranded or that your car has not been stolen. Your refrigerator might keep an inventory of its contents available to you. That way when you're at the grocery store you can find from your PDA what things you need to get. Once everything and everyone can communicate with­ everyone and everything else easily, many things will become possible and will be desired.

Of the problems faced by advocates of network-centric computing, bandwidth is number one. Technology does not have to evolve much to meet the demand. The technology is already here. The problem is that people are not willing to spend more than the price of a modem for the hardware and no more than the price of a basic ISP for the connection.

Imagine how that will change as the value of a computer centers more around the speed of its connection and less around the speed and capacity of the machine itself. You will be able to buy an NC for a week's wage and with a good connection get it to do enormous things. The point is that you may actually pay a month's wage for your complete home computer. Three quarters of the price may very well be for the hardware and service to support a super-fast network connection. Much more is feasible when people consider three quarters of the value of their machine to be the connection speed instead of considering the Internet a toy worth only the price of a common modem. Consider also the willingness of people to pay the combined monthly fee for all of their current communications services (cable TV, telephone, etc.) for one all-encompassing connection to the net.

The Tower of Babble

[I didn’t imagine huge homogeneous data centers. I imagined a world of heterogeneous machines all collaborating to contribute resources.]

Binary compatibility is another very important necessity for all of this to work. Distributed computing will require tearing down the Tower of Babble. As it stands most software is written in a portable language that can be compiled to run on various processors provided that you can get a compiler for that processor. This is not really true portability. It means that when you buy software you still have to check that it is made for your machine. In a distributed environment it limits a process to being distributed among systems that speak the same language. What we really need is a way to write programs that run on any machine under any OS. Either we need to settle on one single microprocessor (fat chance) or we need to write programs in an intermediate language and then make interpreters that run on all processors and under all OSes. Sun Microsystems found an elegant solution with Java; a language that is compiled, but rather than compiling to machine code, it compiles to “byte code” meant to run on their “virtual machine.” As long as you have a JVM that runs on your machine you can run Java programs. This JVM can be built into the OS, it can be built into a web browser, and it can even be hardware accelerated with a Java chip. Sun has a hardware based JVM called Pico scheduled to come out in mid-1997 [This never took off of course] . This Pico chip, by the way, will be cheap enough to put into telephones, pagers, PDAs, everything.

Microsoft and Intel in the New World

[Somehow, even after predicting their downfall, I ended up working for both companies; having spent the past decade at Microsoft. I don’t regret this at all. Microsoft is the best place in the world to work! I do, however, regret not getting involved in Azure from the beginning. I’ve been expecting this sea-change for so many years…]

How will all of this come about? Who will bring it to us? The first computer revolution left Microsoft and Intel standing at the top. Who will be standing after the next revolution?

Once NCs are ubiquitous the processor industry will be much more competitive as processing power becomes simply a commodity. Intel may very well be a loser in this transition. It is generally true that the leader in one revolution cannot be the leader in the next because they have gained too much and have too much at stake - they become evolutionary and someone more agile and innovative steals the lead. Intel has little vision as a company and is, for the most part, ignoring the changes around them.

Microsoft saw and cashed in on the first personal computer revolution. They make software of all kinds, but their real niche is still operating systems. They made their billions developing the OS for the PC. As people move from the desktop-centric model to the ubiquitous NC, even the OS becomes a commodity. Microsoft has made some huge turn-around decisions lately to try to pry and buy their way into the Internet. These turnarounds do not add up to a revolution though. Their one great hope will be to provide the server-side solutions to fuel distributed computing, secure storage, communications and commerce. Already Windows NT is overtaking UNIX as the OS to run as an Internet server. With limited sales compared to being able to collect on each and every PC worldwide, a niche market is hardly all that Bill Gates hopes for.