Like the Light Bulb, Electricity and the wheel, the greatest innovations and inventions are simple, crystal clear, non-hyped and come into existence through constant perseverance and acceptance. Take for instance 'The Greatest Invention in Computer Science'. You're probably knitting your brows right now; but think about it. Routines or functions as we lovingly call them were in fact what changed computer science for ever and can be easily referred to as the best invention in the field of software development.
Functions or Routines like all genuinely great inventions were simple, easy to understand, easy to use and most importantly, generated very little business hype; unlike a particular recent technology which has more 'experts' dying to sell the technology than customers willing to give a rat's ass.

If you didn't realize from the tinge of humor in the first couple of paragraphs and the picture above, I am in fact talking about the famous Cloud Computing. This post, even though long winded and full of digressions, is my good deed for the day. The way I see it dear reader, is that I wasted a couple of days learning 'Cloud Computing' so that you don't have to.
When I say 'I wasted a couple of days learning 'Cloud Computing' so that you don't have to' ; I don't mean that in a marketing way where companies say - 'we work hard so that you don't have to'. I mean this in a hardcore technologist way where we programmers say, 'I worked at this, it sucks, don't waste time on it right now'.
We're going to have enough emotions, opinions and digressions in this post; so let's not start with digressions. Let's get to the point. Let's talk about why you shouldn't be wasting a lot of time on 'Cloud Computing' right now. The reasons of-course are numerous; but let's start with a few and once you get the idea you can find your own reasons.
Cloud computing - What The... is it?
Now, I could start you off with videos like this one; or this one which would have been a perfect start; but then that wouldn't be opinionated enough and it wouldn't carry the point that I want to carry across very articulately.
So before we talk about 'Cloud Computing'; let's talk a little bit about how you as developer or modern day internet savvy computer user, learn about new things. The process is fairly simple:
- You Google.
- You Get A Wikipedia link back.
- You Click the link and read.
Nicholas Carr, describes this three step process very elaborately just in case you're interested. This three step process tells you all you need to know to understand the fundamentals of something new you and then you charge your client big consulting bucks for passing on that information to them.
If you would have followed the three step process a couple of weeks ago and tried to use it to learn about 'Cloud Computing' this is what you would have found out:
Cloud Computing is a paradigm in which information is permanently stored in servers on the Internet and cached temporarily on clients that include desktops, entertainment centers, table computers, notebooks, and wall computers, handhelds, sensors, monitors. |
Recently however, the Wikipedia article on Cloud Computing was changed to add more marketing fluff-words:
Cloud computing is Internet ("cloud") based development and use of computer technology ("computing"). It is a style of computing in which typically real-time scalable resources are provided “as a service” over the Internet to users who need not have knowledge of, expertise in, or control over the technology infrastructure ("in the cloud") that supports them. The concept incorporates software as a service (SAAS), Web 2.0 and other recent, well-known technology trends, in which the common theme is reliance on the Internet for satisfying the computing needs of the users. An often-quoted example is Google Apps, which provides common business applications online that are accessed from a web browser, while the software and data are stored on Google servers. The cloud is a metaphor for the Internet, based on how it is depicted in computer network diagrams, and is an abstraction for the complex infrastructure it conceals. |
If you don't know what to make of these definitions or for that matter what was 'new' about 'Cloud Computing'; you are not alone; Michael Loop, helps you with Dumbing Down The Cloud and explains not just the definition, but the rather humorous probable history of 'Cloud Computing', so that mere mortals like us can understand it. He uses his rather articulate style to make his point:
Information stored on servers? Temporary caching? Holy f@#k. You mean like those email servers and clients I’ve been running for 15 YEARS? The innovation in cloud computing happened years ago. It happened when some bright engineer was trying, for the 185th time, to draw the Internet on a slide, and thought, It’s this big, huge, amorphous thing that lacks definition. It’s a... cloud. That’s when the magic happened. That’s when the name mattered. When it was first used to eloquently and visually describe an idea that lacked mental definition. Everything that has been happening since then is marketing and wishful thinking. It’s those marketing nerds getting paid too much money to rename ideas we’ve already had. Innovation doesn’t come when we give our ideas new names; it comes when the fundamental idea quietly evolves. Innovation often happens silently - not by what you say, but what you do. |
Turns out, Michael, like most technical 'Mavens' worth their salt, can differentiate between what matters and what is crap being thrown at the other mere mortals in the world of software development. This of course, brings us to yet another question. Why is 'Cloud Computing' crap that is being thrown at the mere mortals of the software development world and why you shouldn't be wasting any of your valuable time on it. Honestly, there are countless reasons. This post is just about a few of them.
Reason 1: Listen To The Software Mavens Not The Experts. The Mavens think Clouds Are Gibberish Stupidity At It's Height.
Every once in three years or so the software development world is notoriously famous for declaring a great innovation that will 'change the world'. Apart from the greatest invention in computer science we haven't invented as much as our friends in software marketing think we have invented. Every once in two years, the software-marketing-guys will wear their marketing hats and try to convince us that the 'change is here' and if we don't adapt we are doomed. Turns out, we have a bunch of people who are really smart at differentiating this crap from genuine innovation.
They are called Mavens. If you aren't smart enough to make your own decisions and separate out the crap from genuine innovation, the least you can do is, put 'Transactive Memory' to use, listen to these Mavens and what they have to say.
GNU Founder Richard Stallman describes how Cloud Computing is worse than stupidity:
It's stupidity. It's worse than stupidity: it's a marketing hype campaign. Somebody is saying this is inevitable – and whenever you hear somebody saying that, it's very likely to be a set of businesses campaigning to make it true. |
Oracle CEO, Larry Ellison, is not just anti-cloud, his opinions are similar to Richard's opinion of Cloud Computing being stupidity of the highest order. He attacks and nails down cloud computing rather passionately:
The interesting thing about cloud computing, it is either going to be or already is the most the important computing architecture in the world because we have redefined cloud computing to include everything that we currently do. So it has already 'achieved' dominance in the industry. I can't think of anything that isn't cloud computing; with all these announcements. I have to say that the only way that I can understand the computer industry; the computer industry in the only industry that's more fashion driven than women's fashion. Cloud computing; I remember I was reading W and I read that Orange is the New Pink and Cloud is the New SAAS or cloud is the new virtualization. It is the most Nonsensical... I mean I read these articles I have no idea what people are trying to... and maybe I am an idiot... I have no idea what anyone is talking about. I mean it's really complete Gibberish; Cloud computing is... Google Mail is cloud computing... ok... then Mark Benioff says SAAS is Cloud Computing; I mean... what is it? Is it, 'oh I am going to access data on a server on the internet'... that's cloud computing? Then there is a definition; what is cloud computing? It's using a computer that's 'out there'. That's one of the definitions... using a computer that's 'out there'. These People who are writing this crap are 'out there'. They are insane. |
The answer in Larry's own word; is much more of both, hilarious and honest than most people can make it sound. If there is only one video on 'Cloud Computing' cons that you are going to see, I encourage you to see Larry's Answer. Then there are others, who are equally paranoid about 'Cloud Computing'. Frank Gillett, explains his concerns when talking about cloud computing rather articulately and describing all the confusion around it.
As a thumb rule, when evaluating technology of this sort; don't look for marketing videos or PowerPoint slides created by so-called-expert wanting to make a quick buck out of 'Cloud Computing'. Look for a few respectable Mavens out there and see what their thoughts on 'Cloud Computing' are.
Do that and you will figure out why you should not be wasting any time on it; the only ones who have anything good to say about 'Cloud Computing' are guys who have a very strong marketing agendas associated with it or have already become profoundly good at it and want to sell their services; which is fine; but everyone else just seems to be lacking passion and adoption.
That's not how products and technologies tip.
Reason 2: There are two kind of Developers And You Are The Second Kind.
After spending years in software development if there is one conclusion that I've come to about software developers, it is that, besides programmers who cannot program, there are two other kinds of programmers.
- Type-1 programmers - Those who genuinely innovate stuff. These are the people who write file systems, programming languages, operating systems, build Skype, Google Maps and do insane things with technology, that most of us cannot even think about.
- Type-2 programmers - Those who monkey around with intellisense and write CRUD applications; yes you exercise a whole lot of innovation and yes, I know you can do some serious damage with J-Query based Ajax calls, but if you fall in this range all you do is learn programming languages, APIs and then innovate within the constraints of those languages and the APIs.
To be honest, I consider myself to be one who falls in the type-2 group and there is nothing wrong with being a type-2 developer. After all, limitations and restrictions are good, at-least for some of us and especially those of us who are type-2 programmers.
When you are working as a type-2 programmer there is a specific level of abstraction on which you work.
By working on this level of abstraction and with that expertise, you're not going to be able to create your new startup that allows users to setup and create your own virtual servers and host them on your cloud. All you can do with cloud computing are things that I describe when I talk about 'satisfying your cloud itch; if you must'.
Reason 3: You Think You'll Have Scalability Problems? -- Yeah.
You're going to have content running in Terra-bytes and you will need to scale your servers to meet millions of users that are going to magically show up on your website and start using it. Yeah. Actually I'm going to be the next Bill-G, lead Microsoft, take it to the next level and give you all the server power you are ever going to need. So much for wishful thinking. Get the freaking million users before you crap about 'Cloud Computing'. Seriously; grow up.
Reason 4: If You Want To Watch The Television Learn How To Use The Freaking Remote.
Just so that I don't end up sounding like a complete idiot, blabbering away on 'Cloud Computing' I spent a whole week end researching it. The research involved, not just looking at some of the videos I posted here and some I didn't; but it actually involved looking at how to write code with the 'Amazon Web Services'.
Besides bumping up my the value of my resume by a couple of thousand dollars a years; what that also did is enlightened me to the fact that 'Cloud Computing' is like a Television; or at-least it's supposed to be; when it matures.
If you want to watch the Television; you take a handy little thing, usually black in color with lots of buttons on it and you press the red button. Then you use another set of buttons to change channels and play around with the volume. It's called the remote.
Now; anyone who has watched a television knows one thing; he knows that in order to have a pleasurable viewing experience with your television, the facts I described in the sentence above are the only set of facts you need to know. Trying to read how your Television Tube works is a waste of your time unless you are in the business of building televisions.
You dear reader, are not in the business of 'Cloud Computing'. You are a programmer blissfully coding away with a high level language which spits out HTML to a browser sitting between you and your user. You're a type-2 programmer; remember?
So, buy the television and learn how to use the freaking remote. It doesn't take more than five minutes. There; that's the power button; that's what we use to change channel; here's how you bump up the volume; here is how you bump it down. See?
No it's that easy; seriously.
Reason 5: If They Get It Right, You Won't Even Know. Just like they it had been all along.
Ok so back to my research and my attempt at using the Amazon Web Services.
I kept aside eight hours to understand these services and do some serious development with them. You know what I found out?
Calling a web service written by Amazon is pretty much like calling a... web service.
Take the Simple Storage Service for instance. Instead of calling them 'folders'; I now call them 'buckets'. Of course I can make it complicated by creating a whole freaking hierarchy of buckets using a few funny tricks; not directly like I do for folders; but any one who knows what folders are should be able to get it; in minutes. Then you sign up; they give you a couple of them ugly looking keys, you right click your solution in visual studio and you add a web reference. Then you call web-methods and you stick in those keys as parameters to those function calls.
Any of that sounds familiar?
Ever called a web-service in .NET?
Yeah now, what would you say if I told you, it's completely different! You're storing your data in a 'cloud'; it's insane; it's going to change the world.
Your reaction? Most probably - 'Yeah. Whatever.'
Thought so.
The point is that besides the Amazon Web Service having it's mysterious down-time every now and then; they seems to have got a couple of things right. The cloud word in their whole site is completely redundant.
The world would have been exactly the same had you told me - 'Hey Pops, I'm going to give you a couple of them secret keys and a URL to a WSDL file. Can you call a web-service?' - you know what I would have told you - 'sure!' - and I wouldn't have even kept those eight hours aside to learn the magic of 'Cloud Computing'.
Then there are those hosting providers; letting your virtual machines on a cloud; which is like signing up for go-daddy with one extra step of selecting how much RAM and disk space you need and then having the flexibility of changing it later.
If it sounds any more complicated or takes more than a couple of hours of your time; it's not 'Cloud Computing', it's 'Cloud Computing' implemented like crap; which is what most companies out there are busy doing now-a-days.
The ones who have been doing it right, like Google have been doing it for years, without you even finding out or without needing validation of a stupid branding and labeling exercises where a 'cool name' is attached to what they are doing.
Reason 6: It's Going To Take Time Before It Changes 'Your' World; .
A lot of time. Seven years to be precise.
Reason 7: It Fails The 'Mom' Test (Term coined by Pops).
These words of wisdom came from a very old guy who taught me a lot about device drivers and embedded programming back in the days when I landed up doing projects which would do crazy things like write software that runs on a scanner with a touch screen and a couple of other devices.
We would write this code for hours, custom building the screens and the behavior. This particular individual would reject all our work with one fundamental question - 'if you asked your mom to use this, would she get it?'.
My mom for that matter, is much more comfortable around technologies; much more than a lot of other moms her age are; I mean you can literally explain dependency injection to her and she would 'get it'. The only catch of-course is you don't start by calling it dependency injection. She is seriously cool with understanding technology and getting to the soul of things.
Here's how Cloud Computing Fairs The famous 'Mom' Test which given my own background I've just provided you with should be considered rather optimistic; and because I seem to be the only one on the internet who has coined this term, we shall call this the Pops Mom test:
Let's dive back into the depths of time, around a couple of weeks ago when the local news channel did a feature on 'Cloud Computing' which my moms happened to watch. Mom is watching this program and turns out, she is having a hard time understanding the television program. Conversation (not sure if I am quoting it, but the soul of the conversation is pretty much intact): Mom: Hey, I've been watching the thing on 'Cloud Computing' and they were saying you will be able to upload all your data on the 'Cloud' in the internet. Me: Yes. Mom: But, didn't you do that six years ago when you had to go to travel a lot; remember when you uploaded your pictures to Yahoo Photos and sent us the link? Me: Yes, Mom, I do remember. Mom: So what is it that is changing? Me: Nothing Mom; absolutely nothing. Mom: Oh ok. [End of conversation on that topic. We move on to discussing Twitter and how amazing that is.] |
And why is Google running a whole collection of computers to store your email; suddenly so important to everyone after seven years of their continuing to use whatever it is that they were using? Michael Loop doesn't get it, Larry Ellison doesn't get it, Richard Stallman doesn't get it, I don't get it and neither does my mom.
Satisfying Your Cloud Itch; If You Must.
It's been a long post. Rather wordy; Honestly, each one of the reasons above deserved a post in itself; but for now, this should do.
Having said that, we are nowhere close to complete yet. You know, the 'moral-of-the-story'; that thing that you take back from every one of those posts that appear on this blog? That is still left to cover.
If there is one thing that you take back from this post; if there is one thing I can inject into your head; it is this: don't waste your time with countless 'Cloud Computing' PowerPoint Presentations which make you feel like you're a part of the great revolution.
Everything that had to be invented here is invented and you're just going to be the type-2 programmer who calls stupid API's and signs-up for servers on clouds when these technologies are complete and become fully baked. This is not going to change your life. So move on.
Seriously.
Having said that, I know you're not going to listen to me; which is why I am going to help you satisfy your insane itch to know and find out what 'Cloud Computing' is, first hand.
If you are getting this itch because everyone around you; friends, relatives, television programs and even your colleagues are taking clouds and you have made up your mind to waste time on this thing, the least you can do is don't waste time reading Marketing PowerPoint presentations and videos; Instead, may I mention, but 'not recommend', some hands-on methods of trying out 'Cloud Computing'.
Method 1: Get Billed By Cloud Hosting Startups.
Go to one of the hundreds of start-ups that are selling hosted servers in the cloud; sign up for an account and then use their admin console to increase or decrease the RAM of your virtual server on the fly.
Personally, assuming that you know how to use web applications, can understand English and know how to change values in drop-down boxes and list-boxes, I don't see the point of doing this other than getting billed by these startup companies who desperately need your dollars to build clouds; but then, whatever makes you happy.
Method 2: Get Billed By Amazon Web Services.
Go to Amazon Web Services buy a simple web-service like Simple Storage Service; refer the WSDL file in Visual Studio (or whatever environment it is that you use) and monkey around with intellisense calling it's web-methods to create poor-mans-version of folders called buckets and then uploading and download files.
Again, assuming that you know how to make web service calls already, I don't see the point of doing this and what you are actually going to 'learn' by doing this other than getting billed by Amazon; but then, whatever makes you happy.
Method 3: Act Stupid.
Attach A file on your Gmail Account and send it to yourself; now you have a file 'out there' on the 'mysterious cloud' that you were drooling over for so long.
Personally, this is the most cost effective way of learning 'Cloud Computing' and will teach you as much as you possibly need to know to take advantage of 'Cloud Computing' without getting billed.
This approach has another very clear advantage; it sets things in the right perspective for you and makes the distinction between individuals who genuinely need to build 'clouds', for example, the guys that work at places like Google or 37signals who really have a million users; and others who merely fall in this 'millions of users' and use the 'clouds' created by companies like Google and Amazon; using a pesky little browser to do so.
Just in case you didn't notice 'we' are type-2 programmers on the 'using' side with a browser open right in front of us.
Cloud computing may not be able to save you the whole lot of cost you expected after all, but in all the methods suggested this is definitely the most 'cost effective' way of learning 'Cloud Computing'. Having said that I do 'not' recommend using this method to learn 'Cloud Computing' because there are some serious hazards associated with it.
Passers-by peeking in your little cubical and seeing you sending random attachments to yourself might consider you insane; thereby resulting in a serious threat of their reporting this activity to your management, which in turn can result in you learning 'Cloud Computing' at the risk of losing your job. This method poses serious threats. So be warned.
Do 'not'; I repeat; do 'not' send attachments to yourself using your Gmail account in a desperate attempt to learn what 'Cloud Computing' is.
No seriously; after you have read this post, have seen Cloud Computing In Plane English, seen for yourself how much confusion is out there and have done one or more of the above steps; stop; don't waste any more time on cloud computing; at-least not right now, till it matures sufficiently and all the stupid hype around it dies down.
If you do spend time with it, chances are that you will probably end up wasting more time learning something that has no direct relevance in your life till you become an overnight success story and genuinely start needing it.
Don't waste your precious time on something that can picked up with two days of concentrated effort if it becomes relevant to you after seven years. Now, go back to some serious work; and figure out how to get a million users on your website. That's your biggest problem. 'Cloud Computing' with it's currently 'Highly overrated' marketing hype and a stupidly misguiding name, is obviously not.