Download Android App

Alternate Blog View: Timeslide Sidebar Magazine

Monday, October 31, 2011

SOA learnings from Amazon and Facebook

I came across this interesting and very frank article written by Steve Yegge. You can read is here.

Having worked at Amazon for close to 4 years, I could not but agree with Steve's take on Amazon, Platform, SOA and 'Eat Your Own Dog food' concept. Thinking and designing in terms of services comes naturally to SDEs at Amazon.

It is interesting to understand what platform means. Platform is a term for technology that enables the creation of products and processes that support present or future development.

If we talk about software platform, it is a software program that makes services available to other software programs through Application Programming Interfaces (APIs).  e.g. the Java platform is a generic platform that runs programs written in the Java language.

Two notable characteristics about software platforms that I want to quote from the book "Invisible Engines":

Software platforms are at the heart of “ecosystems” that consist of mutually dependent communities of businesses and consumers that have a symbiotic relationship with the platform. 

"Software platform businesses have at least two sides. Software platforms consist of services that are often made available to developers through APIs. They are also made available to computer users, but those computer users typically avail themselves of API-based services by buying applications that in turn use APIs. It is only a slight exaggeration to say that all software platform makers all the time invest in getting both developers and users to use their platforms."

Look at the platform offerings from Amazon via Amazon Web Services(AWS) and Facebook. They provides developers with:

• Software services available through APIs
• Software development kits that facilitate writing applications
• A “developer zone” that provides, for example, access to tools, sample code, and technical support
• Member forums for online discussions with other developers

The AWS offerings now allows creating and hosting enterprise applications completely on the cloud.

Thinking in terms of platform and API allows great deal of innovation. In recent times with the advent of free web services, numerous mashups were created, which in turn created value for end users. Availability of Android OS and the 'apps' it can run has created a win-win situation for developers, hardware manufacturers and end-users.

A good indicator for creating a platform is when a big pieces of inter-dependent business functionalities needs to be realized and the future requirements are unknown or vague at best.

While deciding about creating a platform, it is important to have a clear vision. Some basic questions that needs to be answered are:
  • What problem in the platform solving?
  • Is the platform reusable? Can many clients benefit from it?
  • Who will use it and how?
And then more specific questions like what APIs should be provided and many more. Infact, creating and externalizing a software platform is similar to writing a business plan and then launching a startup! It is learning all the way.

Often while interacting with other software engineers/architects, I find it very difficult to explain the need to go with SOA or think in terms of platform . Software engineers are inherently opposed to the idea. Mainly because they have not seen and experienced the architecture before or 'fear' the additional complexity that comes with it. The most common excuse for not using web services I hear is that SOAP is heavy weight, that web services add complexity and even phrases like "too many moving parts" and "we don't need SOA now"!

Indeed, these are valid statements but the benefits of SOA far exceed these short comings. Companies like Amazon has clearly demonstrated it. Not only does SOA solve business problems, it lowers costs and create values for end customers. With low margins in E-Retailing, Amazon had to adopt it.

The biggest hurdle software developers have to cross is the ability to 'think' in terms of platform and to realize it.

More interesting articles on SOA:
Software design at it's best
SOA @ Amazon

Tuesday, October 25, 2011

Social validation and E-Commerce

I was browsing through the Books section of an Indian E-Commerce website, looking for a best seller or a book from a known author. Needless to say, there were many options and I was confused. So rather than looking at the story line and finding about the author, I started looking at what others wrote about the book, how many ratings it had and the average book ratings. Sounds familiar?

"When we are uncertain about what to do we will look to other people to guide us. And we do this automatically and unconsciously." says Professor Robert Chialdini.

It is a very common psychological phenomemon and it is called 'Social Validation'. More precisely, the social validation stems from the Bystander effect or Genovese syndrome, a social psychological phenomenon that refers to cases where individuals do not offer any means of help in an emergency situation to the victim when other people are present.

Why do we ignore? Put simply, it’s a matter of trying to fit in with the crowd. If everybody else is just watching and not doing anything, therefore, I should act like them to fit in with the social norm.

Only 5 to 10 percent of the population engages in behavior contrary to the social norm. Because we want to fit into these groups and maintain our membership with them, we conform our actions to the norm.

The bystander effect is a great way to show the power of social validation. We tend to do what we think is best to fit in with the crowd, regardless of the situation.
Another common place reasoning that suppors Social Validation: If everyone else is doing it, let’s just go with it too…besides, how can so many other smart, capable people be wrong?

So how does this apply to E-Commerce and online shopping? Look at the images below:

Do these images look familiar? Visual cues, textual cues and even stasticial numbers are used by online retailers to help shoppers take decision. Often times the social validation principle and the theory of scarcity (the illusion of diamond scarcity) go hand in hand. I will leave the details of which to a future blog.

In sum, social validation is a powerful phenomenon. In E Commerce, the cues works, provided each feature is implemented the right way.

You may be interested in other E-Commerce article:
Personalization and E-Retailing

Friday, October 21, 2011

Ra.One, Shah Rukh Khan and Homeshop18

In yet another first of its kind marketing association, Ra.One the most awaited film of the year and Homeshop18, India’s largest virtual retail platform, came together for a unique partnership. Through this association Ra.One merchandise spearheaded by Shah Rukh Khan will get access to HomeShop18’s widest distribution network which will enable him to take the movie merchandise to the masses. As official shopping partner of Ra.One, HomeShop18 will sell the original movie merchandise through both its 24 hours home shopping channel and India’s fastest growing ecommerce portal,
Shah Rukh Khan takes movie marketing to an all new level in India, with a deep rooted movie merchandise strategy, enabling audiences from across the country to have a piece of the super hero. HomeShop18 offers unmatched value propositions on its products; free home delivery and cash on delivery, which makes it a smarter and convenient shopping platform.  

Bollywood’s biggest superhero, Shah Rukh Khan on the association with HomeShop18 said, “I would like everyone to watch the movie and bring home G.One. It gives me immense pleasure to collaborate with HomeShop18 as the association would help us reach out to the masses with our super-movie. Through this association, we are trying a new form of movie marketing in India, much like the practice in Hollywood. We want our audiences to not only get entertained by Ra.One but also get a chance to own a piece of the movie as they shop in the comfort of their homes”

Shah Rukh Khan further added “HomeShop18’s innovating retail setup is a significant boost to the movie industry and we look forward to partnering with them for our future projects”

Saturday, October 15, 2011

Software design at it's best!

Once upon a time, in one of the software projects, team A was collaborating with team B to develop a workflow system. The main workflow would invoke other smaller workflow - an orchestration system was the need of the day. A meeting was held and the agenda was to integrate the two workflows.

Day 1:
Team B: We have a web service and the only API 'pushMessage' should be called from your code.
Team A: Why remoting? We need a jar.
Team B: That is a very good question. The workflow is a system and not a library. We want to avoid code inter dependency. Code deployment and maintainability is easier. Service is reusable, and in this case, it encapsulates a complete workflow.
Team A: Generating web service client is pain ...(sorry but I don't remember the following words as I was rotfl; in my mind of course). We need a jar.
Team B: Generating web service client is trivial. It  takes about 15 mins. We can do it for you.
Team A: Ok, let us discuss this again tomorrow.

Day 2:
Team A: We have a great idea. Let us merge the code of these 2 separate projects. We will combine all the APIs and create 1 WSDL. It will run very fast.
Team B: (After recovering from the shock) These are 2 distinct functional components. The APIs have no relation to each other. There is a clear boundary between the 2 sub systems.
Team A: It is complex.
Team B: What is complex?
Team A: Making a service call from our code is complex.
Team B: Making a service call is complex? How?
Team A: Yes, we have to make this service call inside a transaction and it is complex.
Team B: What!! When did you decide to make a service call inside a database transaction?
Team A: Today. And we have a problem. It is complex.
Team B: What is complex?
Team A:  Making a service call from our code is complex.
Team B: Write 0 lines of code and you get code that has zero complexity .
Team A: Does writing 0 lines of code makes the code fast?
Team B: Yes, the code runs at infinite speed!
Team A: And can I apply encapsulation to the design?
Team B: All team members faint.

You make also like this humorous post on NoSQL vs RDBMS.

Saturday, October 8, 2011

He's asking if God exists

Atheist: You seem to believe that God exists. Then you should be able to show me God.

Theist: Sorry, I do not 'posses' God as if God were an object; so I can not 'show' God to you.

Atheist: Do you know what God is?

Theist: For me, this world is God in manifest form. When we see the world, we don't see God and when we don't see the world, we will see God. It is like water - when it is liquid, it is not ice and when it is ice, it is not liquid!

Atheist: But what exactly are you pursuing?

Theist: My belief, what sages have been saying for eons, is that the phenomenal world is not real; it is an illusion. One must not get entrapped by it; one must make the effort to get away from it's allure. So, I am not not 'pursuing' anything that I can show you. Rather, I am trying to get away from what is unreal in order to experience the real.

It is like seeing the reflection of the sun in water and believing it to be the sun. Only when you turn your eyes away from the water and towards the sky will you realize that the sun is up there. Or like believing that the image in the mirror is you and then turning away from the mirror to discover who you truly are.

 Atheist: But isn't that naive? What if you are chasing a mirage in your search for an imagined God?

Theist: A dear chases a mirage because it 'sees' water when it is thirsty. I am not 'seeing' anything in the distance. I am simply disillusioned by what I am experiencing with my body, mind and ego in the physical world. It is so evanescent and transitory, yet so engaging. My mission is to get away from it in the faith that it will lead me to something better, something real and absolutely true. It is when you are immersed in worldly ways, that you are chasing a mirage!

Atheist: I can't take your word for it. Give me some proof of God's existence.

Theist: When you ask for proof, you mean the 'triputi' of seer (you), the seen (God) and the process of seeing. But God does not fit into this kind of 'triputi'. The only way to get proof of God is by merging with God, by becoming God. It is like a salt doll wanting to experience the ocean. The moment it goes for a feel of the ocean, it is no more it's erstwhile limited existence. It becomes the ocean itself.

Atheist: Perhaps, but surely, there must be some other way of convincing me of God's existence.

Theist: I am afraid not. Faith is the only instrument that can give you a measure of God. Nothing else can work. Just like a micrometer and not a foot rule is the right instrument to measure the thickness of a sheet of paper.

Atheist: Okay. Suppose I grant all of what you are saying. But, just consider what happens in case you do not experience God. Would you not then repent for having missed out on what the world has to offer?

Theist: Absolutely not because this world does not charm me anymore. I have nothing to seek in the world of objects. So, there can be no question of 'missing out' on anything. I am distancing myself from it of my own accord.

Taken from "Speaking Tree" section of TOI.