Abstraction - making life simpler

I was thinking the other day that the internet is so much simpler than it used to be. You call up an Interent Service Provider and within a few days you are watching Youtube until 4am, playing games against friends from accross town, or strangers from America. It's easy. The average smartphone can allow you to connect to the Internet, select an episode of your favourite TV Series and allow you to watch it within seconds of hitting "Go". Then I started to question my judgment.

Is it Really Simpler?

It only appears simpler, the complex nature of the internet is mostly hidden - Abstracted away from the user.

In the early days of the internet there were no ISPs. If you wanted to connect to a community bulletin board you had to get your computer modem to dial the phone number of the bulletin board you wanted to connect to. The host of the bulletin board would have to provide a number of lines into their host computer to support a very limited number of users. This area of the Internet was unlikely to be connected to other areas of the internet. Just a few computers talking to each other in a small group.

In walks Sir Tim Berners-Lee, with his ideas of a World Wide Web. A set of protocols and rules to set a standard that could open this network up. Things really started to change as the infrastrucure began to grow. Instead of dialling the host directly, the ISP (mostly the guys that provided your phone line in the past) provides you a point of entry and they will route your call. Keeping the telphone analogy going, we have swapped the direct dial phone number to an Internet Protocol (IP) address like 212.58.244.20. We don't even have to remember the number because of URLs. Type "bbc.co.uk" and your browser asks for the IP address from a directory (a DNS). Your request for a page then gets sent to the host, via the shortest number of phyiscal machines as possible.

So what used to be a complex set up between to PCs has now included thousands of individual machines whose purpose is to ensure that the route from your PC to anywhere else is known, and that there is a list of URLs are ready to translate into IP addresses. There are load balancers, multiple versions of some hosts, cached versions of data and even search engines are providing even more abstraction. You dont even need to know the URL.

You just type "cutest cat video", and the full force of the internet parts in front of you giving you what you want.

The same goes for programming code or ordering coffee.

Application Programming Interfaces (APIs) are provided when someone else has taken a complex task and made it easier, and simpler. Take the Android layout inflater, you just give it an XML instruction and it will perform the hard work of rendering objects from the Android API into the places you asked for them.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   View myFragmentView = inflater.inflate(R.layout.fragmentlayout, container, false);
   return myFragmentView;
}

A barrista knows that when you ask for a latte, that they should be making a hot drink using espresso coffee and steamed milk.

TL;DR

The world is not getting simpler, it's far more complex - but with every innovation someone abstracts the complexity and makes it easier for the next person.

People in the world today are truly:

Nanos Gigantum Humeris Insidentes (Standing on the shoulders of giants)

comments powered by Disqus