Thursday, July 23, 2015

My List of Good Books

A prelude to my own personal list of good books I created for my reference.

Why did I go through the trouble? 
  1. Well, it was no trouble, it was such a fun project I really enjoyed :) 
  2. There are so many books in this world and we can read only a fraction of a fraction in our lifetime. I've wasted lot of time, money and effort on books that were not really worth i,t or to put in a better way that could have been spent on better books. This specially happens around the month of September :) Next time I go book shopping I'm going to have a book guide!
  3. I have the worst memory imaginable and when I want to remember a book name or a author I'm at a complete loss. Now I have a great reference.
  4. It has been a distant dream to have my own little personal library. It helps to have a good picture what are the must have books in it.
  5. A good book list of one's own is very personal. If I want one I have to create it on my own.
The list is broken down to 4 segments since it's too long. Some of the books included are my additions, but a lot I haven't read and added based on other people's recommendations. There might be few that I'd have to remove eventually.

Wednesday, July 22, 2015


Soo you’re an application developer, and you’re asked by your client to embed a nice little chat feature on his web site so that the customers can have a live chat with a sales representative.

No problem! You whip up the feature in no time.

Being the typical client, he is still not happy. Chatting is time consuming and error prone. Isn’t it better if the customers can just click on a “Call us” button and talk to a sales representative, and it’s much better if the call is video so that they can be given a live demonstration of the products. And again being the typical client he adds, “I don’t want to spend money doing that either”

Now you start scratching your head. How on earth am I going to do that??

Worry no more, WebRTC is there for your rescue.

You have a nice standardized JavaScript API that you can use for free to make a call or a video call directly from the browser, making your life and the lives of all application developers much easier. You don’t have to worry about encoding, media gateways, codecs, encryptions, protocols… How wonderful!

And it makes the lives of the users easier too. They don’t need to share their contact details or bother with additional applications, plugins, downloads or installs.

Another major benefit for the users is security. Do you know that if SLT wants they can listen to your late night “interesting” phone conversations? Not that they do it :) but they can, because voice just goes over the wire and tapping a phone is a piece of cake. With WebRTC that’s not a possibility since it enforces the usage of encryption for both the media and the signalling.

And the types of applications, products that can make use of it? Well… imagination is the limit.

Ok ok So what is WebRTC?

In 2011, Google released an open source project called WebRTC (Web Real-Time Communication) for browser-based real-time communication. It exposes a JavaScript API for application developers to use and a C++ API for the browsers. It enables peer-to-peer connections between the browsers and the voice and video streams do not suffer from network latency or any other quality degrades. Multipoint communications also supported but scalability to large number of nodes is questionable.

Mozilla and Opera joined the project soon.  Chrome, Firefox & Opera browsers have been WebRTC compatible for some time now. Yes, for WebRTC to work, there should be browser support. Microsoft’s Edge, which is supposed to replace Internet Explorer, is already supporting getUserMedia API of WebRTC.
The only one who is not joining the party is the usual party crasher Apple :) and Safari is the only main browser that is not WebRTC compatible.


W3C is standardizing WebRTC API. It has 3 major components.

  • getUserMedia : allow a web browser to access the camera and microphone and to capture media
  • RTCPeerConnection : sets up audio/video calls
  • RTCDataChannel : allow browsers to share data via peer-to-peer

How big is it going to be?

Predicting the future of technologies is no better than predicting the weather. But looking at the straightforward practical applications of WebRTC, commercial VoIP services running on browsers, multi-player gaming etc, we can easily see it’s going to be huge. It’s expected to have a market worth $4.7 billion by 2018 and 60% of Internet population is expected to use it by 2019.