Communications! – it is the most fundamental concept that exists on the face of the planet. If you think about, man kind had evolved and progressed – only at the speed and accuracy of its communication means. From the early days of the cave man drawings, through print and telegraph up to our rapidly changing world of real time communications – communications were always the key factor. In our modern day and age, the need to communicate surpasses that of words and print – communications today is all about the ability to converge the mediums that are available to us, into a new form of communications paradigm. Some people call it convergence, some call it hyper connectivity – but at the end of the day, once dropping all the bells and whistles of modern technology – communications is all about one thing, and one thing only – allowing 2 people (or more) to communicate using words. Words, that ancient protocol of communications we learn at an early age. Regardless of what the advancement will be, we shall always strive to use these in a spoken manner – the conveys not only our intention, but also our feelings, our desires, our fear and out state of mind.

Telephony – The forgotten realm

Regarded by many as a dying medium, telephony shall always remain relevant. In a world of instant messaging, icons and text, the spoken word over the phone shall always carry a valid weight. I’ve been a member of the “Telephony World” since 2001 and most veterans regard me as: “The crazy kid with wacky ideas”, but I’ve seen how telephony changed in less than a decade. With technologies that emerged and died, companies that sprung up and evaporated and ideas that are still valid today, although never reached maturity or full potential. If you think about it, facebook, google, Microsoft are all racing towards a common goal: enabled real time, voice based communications on their platforms. Be it facebook messenger, Microsoft Skype/Lync or google hangouts – it’s all the same thing. Let’s get people talking again, let’s enable this ancient medium in a rapidly evolving world – and let’s make it better.

Telephony Development – A forgotten art

Face it, telephony application development is a forgotten art. Even worse than that, it is regarded these days as something simple, mundane and above all – negligible. What most people realize is that telephony development changed, dramatically. Where most platforms a decade ago were designed to handle a few hundred calls concurrently, today we are required to handle thousands and tens of thousands. “More calls? no problem, just put more servers!” – capacity is just one issue that changed, complexity, connectivity, interoperability and most importantly – 3rd party integrations had turned the traditional telephony world into a mixture of technologies – normally not associated with one another, that is become more and more complex with every day that passes.

While telephony developers were mostly taken with issues like: “when should a call go out?” or “how a call should be answered?” – today the questions are: “how does call A relate to B?” or “how can a call on server A relate to a call on server C, while keeping mind that call on server B is still part of this entire dialog?” – in other words, the skill set changed. If we were to look at the world of Asterisk application development, where in the past an AGI application with a MySQL database normally sufficed, today we are required to utilize Asynchronous mechanism to do new things – things that you normally expect from other platforms, but not from telephony applications.

It is all about architecture!

This book isn’t about writing code – it is about writing good code with solid architecture and most importantly, this book is about building systems that will surpass the test of time and will continue on working for years and years – from day one. Just like a building, a solid architecture for your telephony application, be it Asterisk, FreeSWITCH, Kamailio or others, will enable your application to work not only today – but even 5 years from today – without changing anything in your application.