Tuesday, August 12, 2008

Who owns the Cloud???

Finally some good news... USTPO ( US Trademark and Patent Office) has withdrawn the notice of allowance initially issued to Dell for Cloud Computing trademark. This is one of the most absurd copyright effort I have heard after US-based Bikram Choudhary's move to get a copyright for his method of teaching yoga.

Off late many organizations are jumping into the cloud computing band-wagon; be it Sun, Microsoft, IBM (Blue Cloud) or the latest entrants Yahoo and AT&T. Last week, Intel, Yahoo, HP, and an international trio of research institutions announced a joint cloud-computing research initiative. The ambitious six-site project is aimed at developing an Internet-based computer infrastructure stable enough to host companies' most critical data-processing tasks. Many startups have jumped into the fray to cash-in on this latest buzz.

There are many offerings around the cloud infrastructure (ex. Amazon EC2& S3), hosted applications (ex. Salesforce) , application integration(ex. Boomi on Demand Platform) etc. There are also some open source offerings like Eucalyptus. Eucalyptus is an open-source software infrastructure for implementing cloud computing.

Nevertheless, there are still some doubts about how Cloud Computing is different from the Grid? or then is it just the good old wine in a new bottle. The doubts are not misplaced as many vendors are now rebranding their grid and virtualization offerings as Cloud offerings.

Clustering, Grid and Cloud Computing have some overlapping concepts but are yet different from each other.

Clustering is a fault-tolerant server technology, which is similar to redundant servers, except that each server takes part in the processing services requested.

Grid computing is another load-balanced parallel means of massive computation, similar to clusters, but implemented with loosely coupled systems that may join and leave the grid randomly.

Cloud computing is the most recent successor to grid computing, utility computing, virtualization and clustering. Cloud computing overlaps all these concepts, but has its own meaning: the ability to connect to infrastrcture, software and data on the web (the cloud) instead of on your hard drive or local network.

Grid computing typically involves a small number of users requesting big chunks of resources from a homogenous environment. Cloud computing involves large number of users with relatively low resource requirements from a heterogenous environment. Grid is about more with less where as Could is about more with more.

As this space keeps getting crowded, and with all the money being pumped in, it remains to be seen whether Cloud Computing survives the intial hype and proves to be a classic disruptive technology as perdicted by many industry analysts.

Thursday, June 05, 2008

My Tryst with Erlang

Of late I have been trying to learn some new dynamic/functional languages. With all the noise about RoR(Ruby on Rails) in the last few years and changes it has brought to the web application development, it was natural to try my hands at Ruby/Rails. Being a REST enthusiast and Rails 2.0 providing support for RESTful Services, I have looked at implementing some services using rails.

In recent times there have been many debates on scalability of Rails applications and concurrency support of Ruby in general being fairly weak, I looked at different directions for a better language to adopt. The ones that had caught my attention in the last few months have been Erlang and Scala. Being a Java developer for the last several years it would have been easy for me to go for Scala. Scala is an OO and functional hybrid that runs on the JVM and has access to java libraries. It is like having the best of both worlds!

But I admit to have been smitten by Erlang for its simplicity, and a language written keeping in mind the basic non-functional requirements of an enterprise system (ex. Reliability, Availability, Concurrency and Scalability). Scala does have some of the key features of Erlang implemented (ex. Actor Libraries for concurrency) albeit in different ways, it still is not in the same league. In the same breath I have to admit that Scala would definitely be a good replacement for Java. This article from Yariv Sadan, an Erlang developer with ErlyWeb, Twoorl etc to his credit, is a great read on the differences beween Erlang and Scala. Steve Vinoski, an Erlang convert has also put down some of his thinkings in his blog.

Coming to my experiences with Erlang, I have been playing with it for a few weeks trying to understand the basic concepts and have written a few sample programs. I am quite impressed by its simplicity when it comes to concurrency, error handling etc. Being in the EAI consultancy for quite sometime I have also looked at some of the Integration Frameworks like RabbitMQ written in Erlang.

Last week I was trying to install Erlang in my MacBook and it was really a tough job. There are no direct OSX distributions of Erlang available. I had to install it using MacPorts and it took me some time to understand the concepts and install Erlang, Yaws (Web Server written in Erlang) and ErlyWeb (Rails type Web Framework written in Erlang) . Intially I had issues (Compiler Issue: can not create executables) with the XCode version (I had XCode 2.5 which is supposed to be compatible with both Tiger and Leopard) and I upgraded it to 3.0. After having gone through developing the first web application, I upgraded my OS to OSX 10.5.3 (the new leopard version). I have not been able to start Erlang in my MacBook now; it gives me this silly “Bus Error”.

I have seen this issue in the MacPorts forum. I hope they fix the issue quickly for me to be able to venture into the beautiful world of Erlang again.

Monday, January 07, 2008

Control without Controlling!

An informative article by Steve Vinoski on Serendipitous Reuse, how REST and simillar architectural styles nurture it.

He concludes emphasizing that well-constrained architectural styles can be the right recipe for EA success (controll without controlling!)

It's highly ironic that many enterprise architects seek to impose centralized control over their distributed organizations. In many cases, such centralization is a sure recipe for failure. A proven framework based on a well-constrained architectural style like REST allows for decentralized development that, because of the architectural constraints, still yields consistency. The Web itself is proof that this form of "control without controlling"2 works. In the long run, this approach is far more likely to achieve what architects seek than trying to enforce collections of ad hoc governance rules.

Wednesday, January 02, 2008

Advice from Bruce..

Bruce Eckel has an excellent blog post based on his commencement address for Neumont University.

Some intresting points mentioned...

50-80% of programming projects fail. These numbers are so broad because people don't brag about their failures, so we have to guess. In any event, this makes the world sound pretty unreliable

5% of programmers are 20x more productive than the other 95%

You must learn continuously and teach yourself new technologies

Code is read much more than it is written. If people can't read your story, they can't improve it or fix it. Unreadable code has a real cost, and we call it 'technical debt'.

Code reviews are the most effective ways to find software defects, and yet we usually 'don't have time for them'.

Here are some more which many people have seriously believed(myths):
- Companies don't have to make a profit anymore. It's the new economy.
- Real estate always goes up, even if salaries don't.
- Or even: A university must be a traditional campus and not an office building.