SaaS Enterprise Integration

This post is a quick notes on the various options to integrate a SaaS offering with an enterprise:

1. Get the webservices of the client and have a custom implementation (running a service on a event and/or cron task) of calling these services.

2. Make use of a Message Queue like ActiveMQ or RabbitMQ.

Apache ActiveMQ is based on JMS specifications where as RabbitMQ is based on AMQP specifications. A similar tool from Apache is the Qpid messaging system.

AMQP is an application-level standard for Message Oriented Middleware (MOM). JMS is a standard API for Java for communicating with MOM. One of the main difference is that in AMQP a producer sends to an exchange without knowing the actual message distribution strategy while in JMS the producer targets either a queue or a topic (thus being aware of the type of message routing in place).

3. Make use of Integration Frameworks like Apache Camel or Spring Integration Framework

4. Use an Enterprise Resource Bus (ESB) like Apache ServiceMix, TIBCO ESB, Oracle Service Bus

Each of the points increases the complexity by one step, starting from a simple one to Message Queue to Integration Framework and finally an ESB, the most advanced integration an enterprise can have.

As the complexity increases, so does the implementation effort and timeline. Keep it simple by using Message Queues as using for a decently scalable Integration.

OAuth 2.0 for Native Mobile Apps and Browser Apps

There’s great deal of confusion when it comes to implementing API authorization using OAuth 2.0 The reasons are varied partly from the different options the specification itself provides and partly due to confusion of implementing it on a Mobile App. This being the case with myself, I thought of writing here on how to approach to make a selection based on your requirements.

A basic point to understand is OAuth 2.0 doesn’t specify Authentication. It is actually an Authorization framework. For keeping this blog to the point, I will not delve into detailing the OAuth specs. For details, there are excellent blog posts from Johann Reinke and Aaron Parecki to understand OAuth 2.

From here I assume you already have an understanding of the different Authorization Grant Types available. With that we have the below authorization mechanism options for Native Mobile Apps and Browser Apps:

  1. Native Mobile App
    1. Self Hosted Authorization: Use OAuth2 Password Grant
    2. External (Facebook/Google+/Twitter) Authorization: Use OAuth2 Implicit Grant
    3. Combination of Self and External Authorization: Use of Implicit for the External OAuth servers and Password Grand for Self. The backend should be able to identify the user. Best mechanism is to hold a userid for the system and add the Social Network (External) userid to it. This give additional flexibility of adding/removing different Social Network (External) Authorization Grants
  2. Browser Apps (Both Desktop and Mobile)
    1. Use Implicit for External.
    2. For Internal depends if you are implementing the Implicit Grant on the server. If not you can use Password Grant

Learn Arabic to understand Quran

There are innumerable courses for Arabic available online. Picking the right one is a daunting task. The first criteria to decide is based on what you are trying learn. Is it for learning alphabets, learning to understand modern Arabic or learning classical Arabic to understand the Quran.

To understand the Holy Quran, you will be able to find many courses including few good ones on YouTube. There are courses available from Understand the Quran Academy which emphasizes on building vocabulary with the words prioritized based on its count of occurrence in the Quran. This makes it quite easy if you want to relate the words of the Quran immediately and at its best to get the complete meaning of a verse or atleast a thematic understanding of the verse.

The traditional way of teaching classical Arabic is to start from the Nouns and Verbs, i.e., to teach the Grammar of the language. This is how you will also find the Table of Contents of many of the books on the subject. Taking this approach there are many courses available online. The course from Bayyinah named ‘Arabic with Husna‘ stands out for the below reasons:

1. Learning from Video vs Audio vs Book: A picture is worth a thousand words. Needless to say nothing beats the medium of Video or better a Live Class room setup.

2. Practicing from Material with the Teacher vs Self Work: A preliminary go through of the teacher on the course material helps more than starting up on your own where there’s high chance of getting lost or not able to relate the material with the ongoing topic. You remember, this is how we used to learn in the school.

3. Revising the concepts: This is one major action to be done, especially when it comes to learning a language or its grammar. This is different from practicing where you are implementing the concepts learned.

The bonus in addition to the above points so nicely done on Bayyinah course is the fun way of teaching of Ustadh Nouman Ali Khan to his daughter Husna. The sessions themselves are very well laid out and are very short averaging at 15mins of duration.

This is so far the best one I have found. The point to note is not on which one to pickup, but its more on actually picking up some thing to start!

Salaam World!

Salaam World!

Salam in Arabic means Peace. The word is so central to Islam and Muslims, that all these terms share the same root letters: S-L-M

Islam came as the last established law from Allah with a guarantee to protect His last scripture from any distortion. In the Holy Quran, Allah states: “O mankind! We created you from a single (pair) of a male and a female, and made you into nations and tribes, that ye may know each other (not that ye may despise each other). Verily the most honoured of you in the sight of Allah is (he who is) the most righteous of you. And Allah has full Knowledge and is well-acquainted (with all things).” (Surah 49, Verse 13).

So, lets know each other and make the world a place of Peace. Wish the much required ‘Salaam’ to the World!

free my mind