My Thoughts on the Future of Computing

We are in an interesting time of transition right at this moment. Computers surround us in nearly every part of our daily lives. It is quite literally impossible to live in a city without interacting with at least a single computer connected to the Internet. It's come so amazingly quickly that most people no longer recognize a computer when they see one. Going to an ATM, you're using a networked computer that communicates with your bank's computers. In one word, computers are now ubiquitous.

The major computers people currently use are standalone desktops, with mouses, keyboards, monitors, and usually a tower or case to support the actual computer. Some are going all-in-one, and others are designed to be portable (notebooks, laptops). These computers are designed for productivity or entertainment.

The mobile world, also, is thriving. Mobile phones, portable media players, and slate computers (tablets or pads) are often heralded as the future of computing. These are smaller, lighter, and usually follow a person around wherever they go.

The third major computer designed for consumers' time is the game console on a television.

Currently, there's a concept of a fourth type of computer entering the market, known as the slate or tablet PC. Essentially, a touch-screen based computer, light enough to carry (nearly) anywhere, and is always connected to the Internet.

Note: I'm not considering the other computers, such as servers, or single-use computers like ATMs, or computer-based ornaments that don't require a person's time (like the computer on a fridge or microwave etc). These I will probably talk about at a later date.

When the iPad first came out, there was a large flurry of people believing the imminent death of the laptop market. Tablet computers are here to stay! They will revolutionize the world! There will be absolutely no need for anyone to use a PC anymore!

Now, while I agree that believe that slate PC's will have their place in the future, I certainly don't think it's here to outright replace the PC. Instead, I think it's here to complement it. Along with their mobile phone and Internet-connected television (currently, the game console). The one thing in common these all have? Internet connection.

By the way, this is what the Internet really looks like when you glance through an ethernet cord.

Sure, sure, there's no doubt that the Internet has revolutionized computing, and I'm stepping on absolutely no new ground by discussing those concepts above. But just hear me out.

Currently, I have four computers, and I'm a poor university student. I have my desktop PC (Frankenstein, self-built), my laptop (MSi Wind), my phone (HTC Desire), and my music player (iPod Touch - albeit largely taken over by my phone). Currently, I'm running four completely separate operating systems (Windows 7, Windows XP, Android 2.2 - Froyo, and iOS), with very little interaction between them. Currently, I have my music on my PC, and can stream that to my phone using AudioGalaxy, provided that the computer is actually on, but can only stream music to my laptop if they're on the same network (and even then there's trouble). The idea: place everything on the cloud and every device can stream.

In theory, that can work. But the major problem, bandwith and storage costs will eventually get in the way.

cloud-computing
Here is a simplified, abstracted way of seeing cloud computing.

I think that, instead of going entirely Cloud Computing, we are going to transition into a hybrid between both Mesh and Cloud Computing.

mesh topology
Here is mesh computing, except imagine that they are modern computers, and replace some of those with a laptop, mobile device (phone), slate PC, your TV (game console), your microwave, fridge, toaster, and so on. The main advantage of this is that it's robust, efficient, and scalable. However, the main problem is that it's difficult and complicated to set up, especially when it's all wireless (which, as far as I can see trends go, it will be).

Note: Grid Computing works too.

Currently, programming is designed for a pre-determined amount of processors. Inside every computer, there is a CPU, or Central Processing Unit, which calculates the logic behind the computer. The movement in the last decade or so is to - instead of just making it faster - add in multiple cores. Two, three, four plus cores are in a single CPU. Code can be specified to run on multiple cores in parallel, making processing (generally) faster and more efficient. The problem with this is that most code is written with a lowest common denominator mindset, or only has the capacity to run on the amount of cores that the programmer specifies (most programs only utilize single-core, with some games using both the CPU and GPU simultaneously, but it's rare outside of research departments to go much beyond this).

Instead, the Operating System of the Future (now called OSoF) will be coded to run on n amount of cores. There will be an intelligent agent who will quickly be able to designate multi-processing (parallel processing) on the fly. It will be able to communicate with computers nearby (or rather, those with the lowest ping), and be able to borrow unused resources (such as a few cores here and there, some left-over RAM, or even some GPU cycles if we're talking graphical or physics-based calculations). Most of this will happen without either user even knowing it's happening. The concept of sharing will be encouraged, but not essential (similar to Seeding in the torrent world--you can choose to not seed, but you're not as good of a member as those who do).

Hopefully, there will be an open standard for sharing of resources between computers, and thus, the type of OS won't even matter (similar to how both TCP/IP and a browser is currently found in all modern operating systems). The only thing that will need to be done, therefore, is to shape the User Interface based on the hardware constraints (input/output types, location, user etc). Essentially, you'll have near limitless back-end hardware.

This is the path I believe Windows Azure is headed. And this is certainly in Ray Ozzie's goals in the near future.

I personally can't wait. I just feel sorry for the people that have to create the security for such a system. Would be enormously complex.
Posted