Digital Businesses and APIs

I first heard the term API during 1996-97, when I was programming in VB (Win32 APIs). Hence this is not a new term for sure. But you can hear this term quite frequently these days. What is happening? What has changed? Let us take couple of traditional businesses and see how they have operated.

Before 1990 During 1990-2010 Now
A bank used to transact only between certain business hours till some time back. Internet Banking Came into Picture. One needed a Desktop to operate. Center and Web as Channels. Internet and Mobile Banking All one need is some form of mobile device to operate. Operations are 24/7 and the channels are multiple.
The business model for an University to run courses on-premise between certain business hours. Universities started providing online courses. Online, Offline Courses available. Courses are provided via Web , Mobile and Tablet channels Newer models like MooC coming into picture
A Book store selling books in their stores/chain of stores between certain business hours Internet Shopping via Browsers Store still exist. Most of the shopping happens via Tablets, Mobile and Web. Price Comparison Sites/Applications. Sell via Blogs and other websites (Widgets). Retargeting

What is the underlying trend? Internet Explosion and growth of Smart Phones/Devices has forced companies to rethink the way they have done business. The disruption has made companies to rethink their business models. Newer Digital Business Models are evolving which is enabling companies to reach to newer markets, global customers and gain competitive advantage. Few examples You can pay utility bills via the popular chat application you are using Internet companies are providing interest for your deposits. It’s a great thing for a consumer and definitely a great opportunity for companies. To address this increasing number of channels and look at newer business opportunities and models, companies needed a way to expose and consume data. APIs have become the common way to expose, consume and communicate to the various channels and fuel innovation.

An API — Application Programming Interface — at its most basic level, allows your product or service to talk to other products or services. Via What is an API?

To see an API in action, check this!/travel/listCategories_get_0Portal shows all the APIs that are available. Good one. This is one of my favorite example. Is this happening in just one industry? No, the changes are across the industries (Banking, Retail, Healthcare, Energy, Transportation, Automotive) to name a few. Check this link to see the fastest growing API Categories Different types of APIs

  1. Open APIs (Public, Web APIs – Open to All)
  2. Partner APIs  (Protected, Open to Select Few)
  3. Enterprise APIs (Private, Your traditional SOA Based mostly, Open to Employees only)

In a nutshell, APIs are a must-have in any technology strategy today. APIs power the Digital Business and acts as the Glue in SMAC stack. References: Happy Learning!!!


Technology Ecosystem for the Modern Day Business Application Developer

Technology is changing at a rapid pace. Everyday you see something new to be learnt, which did not exist few months back. If you are like me, who has come from an application development background, what does this change means to you?

For sure, this is not for gyan. Tried depicting this in a form, which i could use as a reference.  I purposefully, hace not included Desktop applications in this. If you are working in some of them, you may have include it for yourself. Obviously, this may change when we revisit this in couple of months.

Similarly, things like Programming Languages (Java, C#, Ruby), OOPS Concepts, TDD, SOLID Principles are foundations.

Technology Ecosystem

Is this Perfect? Not Necessarily. This is my version and you may have a different way of visualizing this. If you create one, please do share it with me 🙂

Did I cover all aspects? Not really. Take Analytics as an example. If you take Descriptive Analytics, you start looking at traditional Business Intelligence, Data Warehousing, Data Visualization etc. Each one is a separate block diagram on its own. Hence, i have stopped it at a very high level for this.

Can i be a master of all this? May not be possible. But if we have to call ourselves as techies, then we at least need to know what these are, where we can use them and may be pick and choose couple of items that could be of our interest and master it.

Happy Learning!!!

How long did it take to build ….?

I had a wonderful opportunity to listen to and Interact with Hubert Smits couple of weeks back. One of the questions he asked during the interaction is “how long do you think it took to build empire state building (the tallest one when it was built in 1930s)”? There were answers like 10 years, 7 years, 20 years etc.

Empire State
He replied saying 400 odd days with 3400 workers… Immediately the follow up question was to complete the architecture and design? He said “No…” to complete the entire building.

I couldnt believe it immediately. Went and searched in Google and found links confirming the same.

Some of the things which i could take as a lesson from this
1. It requires meticulous planning. I am not talking about creating a plan here… Continuous Planning.

2. The architect had previous experience in building something of this sort. But again, every project is unique in nature.. The risk management capabilities of this construction was beyond what we can imagine(identify, monitor, mitigate and track).

3. The architects produced the initial design in 2 weeks, based on their previous experience. But, they would have refined it continuously as they built every floor.

4. Though the architects had previous experience, they would have ended up in new challenges every time. The design and development would have gone through iterations to address these challenges and not based on a big design upfront.

What this confirms is that even an industry which is considered to be the oldest, builds things iteratively and not based on one single plan. Hmm… now we are almost near end of 2013 and we work in a modern industry. But these practices are still @ a level where people only talk about it in most of the places.

Now… i will come back to my favorite place. May be after 50 years, someone might be writing about Belandur flyover. How long do you think it has taken to complete the incomplete Belandur flyover?

Happy Learning!!!

Image courtesy of

vitasamb2001 /

ASP.NET Web API Vs WCF? What should i use for my project?

Microsoft defines ASP.NET Web APIs as

a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices.

ASP.NET Web API is an ideal platform for building Restful applications on the .NET Framework.

But wait… We do have WCF as part of .NET. So what is this Web API all about? When should I use this?

I was looking for some guidance to use during the solution process, but couldn’t find much help. After a bit of struggle, landed up in this web page which talks about features and when to use in detail.

From Microsoft Site

Enables building services that support multiple transport protocols (HTTP, TCP, UDP, and custom transports) and allows switching between them. HTTP only. First-class programming model for HTTP. More suitable for access from various browsers, mobile devices etc. enabling wide reach.
Enables building services that support multiple encodings (Text, MTOM, and Binary) of the same message type and allows switching between them. Enables building Web APIs that support wide variety of media types including XML, JSON etc.
Supports building services with WS-* standards like Reliable Messaging, Transactions, Message Security. Uses basic protocol and formats such as HTTP, WebSockets, SSL, JQuery, JSON, and XML. There is no support for higher level protocols such as Reliable Messaging or Transactions.
Supports Request-Reply, One Way, and Duplex message exchange patterns. HTTP is request/response but additional patterns can be supported through SignalR and WebSockets integration.
WCF SOAP services can be described in WSDL allowing automated tools to generate client proxies even for services with complex schemas. There is a variety of ways to describe a Web API ranging from auto-generated HTML help page describing snippets to structured metadata for OData integrated APIs.
Ships with the .NET framework. Ships with .NET framework but is open-source and is also available out-of-band as independent download.

In Summary

  • Use WCF to create reliable, secure web services that accessible over a variety of transports.  If you have an existing WCF service and you want to expose additional REST endpoints, use WCF and the WebHttpBinding.
  • Use ASP.NET Web API to create HTTP-based services that are accessible from a wide variety of clients. Use ASP.NET Web API if you are creating and designing new REST-style services.  Although WCF provides some support for writing REST-style services, the support for REST in ASP.NET Web API is more complete and all future REST feature improvements will be made in ASP.NET Web API.

Couple of Must Read blog entries on this topic

Happy Learning!!!

Choosing your PEARL in JOCEAN : My JSFOO Slides

I spoke at JSFoo today on “Choosing your PEARL in JOCEAN“.

Its definitely not about a new javascript library or framework “JOcean“. I was talking about how to choose a javascript library or framework based on your business requirement. I took the example of a Legal case management and walked through the requirements and zeroed down on a Library.

You can also see a client side architecture diagram explaining the different layers in the client side, framework for that and how they interact.

I guess the talk went well overall.

Choosing your PEARL in JOCEAN

Special thanks to my friends Sendhil and Sony Arouje for all their help in this presentation.

Happy Learning!!!

Architecture is always Context Driven

Quite often, you hear people saying that if i implement this newer technology, how do i support older browsers, operating systems etc…

An example could be: I want to implement some real time support in my web application. Solution i could think of is to use something like Socket.IO. The good part is it will bring in support which my users will love. Bad part is older browsers may not support this.

Obviously, there is no straightforward answer.

Architecture or Technology decisions are always derived from Business Strategies.

In this case, the questions Business should answer is
1. Who are my target audience?
2. What is the percentage of users use those existing browsers/operating Systems?
3. What is the budget/resources available to implement?
4. Will i be able to support these on a on going basis?
5. Will i be able to say my users that my product will support only these browsers?

The Solution to the above problem is to bring in Alternative technology implementations by detecting the browser capabilities for the older browsers. Obviously implementing an alternate solution brings in more lines of code, which means more maintenance headaches.

Its the Business’ responsibility to make a decision whether the money we get based on supporting older versions of browsers are important or Maintainability of the code. You cannot possibly have both with limited resources and budget.

Architecture is always based on the Context. Context can only come from Business.

Happy Learning!!!

Image courtesy of winnond /

Windows Server AppFabric : What does it really mean?

Complex business applications have quite a bit of back end business processes and activities that are hard to develop and manage. Business applications are typically developed using multi-tier architecture (Presentation, Business and Data).

Business logic traditionally is maintained in the Application Server in the form of application or Services. Apart from hosting the business logic, the application server provides services such as security, data services, transaction support, load balancing, message queue etc. Example could be Web logic Application Server, Web Sphere Application Server in the Java World.

In the Microsoft World, Services Infrastructure in Windows Server acts as the Application Server. By having .NET and IIS on top, it helps in running custom applications developed using WCF and WF, run distributed services, queue management, and perform other distributed tasks across multiple servers.

Though it’s been called as an Application server, so far, it has provided only very limited hosting services for WCF and WF applications inside IIS with limited tracking, monitoring, and management functionality.

To host a Workflow application, one must define their own host (either to run inside IIS or as a part of a custom Windows service).

Is there a better Solution for this?

Yes. Its in the form of Windows Server AppFabric. AppFabric extends Windows Server to provide enhanced hosting, management, and caching capabilities for web applications and middle-tier services. AppFabric will provide a way to create scalable and manageable server side applications.

Image Source :

Windows Server AppFabric has two major components

  1. AppFabric Caching Services: Caching Services which can speed up access to frequently accessed data.
  2. AppFabric Hosting Services: Services that helps to host and manage services created using Workflow foundation and Windows Communication foundation.

IMHO, Windows Server AppFabric is a great server side solution. Recently we happened to implement this for one of our clients and i was impressed with the features it provides.

Useful Pointers:
AppFabric Architecture Guide
Introducing Windows Server AppFabric

Happy Learning!!!