Friday, January 23, 2015

#WebRTC # Latest Technology that accelerate the Real Time Communication over the Web

WebRTC accelerate the Real Time Communication over the Web



Google released WebRTC on May 2011  and its an open source project for browser-based real-time communication.

“Framework, protocol and API that provide real-time Communication like audio, voice, video and data sharing in web browsers and other web applications ”

What does WebRTC stand for?

WebRTC is a free, open source project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. WebRTC (Web Real-Time Communication) is an API definition drafted by the World Wide Web Consortium (W3C) that supports browser-to-browser applications for  Voice & Video Callings and P2P file sharing without the need of either internal or external plugins. The WebRTC components optimized to best serve this purpose  and followed by ongoing work to standardise the relevant protocols in the IETF and browser APIs in the W3C.
WebRTC Works as an API
WebRTC APIs are exposed to web developers in an abstract manner and adapting to HTML5 . WebRTC Working Group of the W3C for JavaScript APIs.WebRTC is an open framework for placing real-time communication components on web-pages and is controlled by the World Wide Web Consortium (W3C), who are also taking care of other web-standards similar as HTML, XML, CSS and others. WebRTC components include methods such as VoIP, Instant Messaging (or just “chat”), video conferencing or a combination of these.


How does WebRTC work?

The framework is based on HTML5 and JavaScript but does not utilise Unified Communication solutions like SIP or H.323. The signalling and transfer of data works over RTP and with an XMPP extension called “Jingle”. With the newly introduced JavaScript Session Establishment Protocol (JSEP) direct connections can be established without the need of a piece of hardware in the middle. Depending on the deployment of voice , video and / or other data can now be exchanged to allow WebRTC to happen in your browser.
The WebRTC enable rich, high quality, RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow all to communicate via a common set of protocols.The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others. This page is maintained by the Google Chrome team.

The WebRTC Working Group expects this specification to evolve    
 significantly based on:
  • Outcomes of ongoing exchanges in the companion RTCWEB group at IETF is the set of protocols that, define real-time communications in multiple web browsers
  • Exposing local capabilities and local streams that arise privacy issues.

Examples for WebRTC?

The possibilities are impossible to count. Especially in the age of BYOD everyone has their smartphone always ready and beyond that every notebook and desktop PC could participate in WebRTC. Here are some examples I could think of:
  • Customer service via video conference (the end of the service hotline?)
  • Working together on documents via web (web-collaboration beyond firewalls)
  • Smart-TVs allow you to do video conferences without infrastructure or service running in the back (if there’s a browser – there’s a way!)
  • WebRTC might change the face of Social Media platforms such as Facebook, LinkedIn and Twitter completely if implemented (why not quickly talk about it?)
  • Instead of displaying phone numbers to your common window-shopper, it uses an QR-code or a NFC, so users can reach directly to you with their smartphone or tablet (we got a camera, a mic, a speaker – so let’s use them!)
WebRTC Browser Supports

WebRTC is in the top 6% among one of the most popular tags on Stack Overflow and  Ranked 2,127th out of 40K tags . Although not as popular as technologies in the top 1,000, such as ember.js (264), twitter (247), and sublime text 2 (967)
The number of questions posted on Stack Overflow tagged with WebRTC is trending with very strong growth. Based on the data here, we can see quantified evidence that WebRTC is making an impact.


Peer-to-peer communications with WebRTC
The WebRTC APIs are designed to allow Javascript applications to create real-time connections with High Quality Audio, Video, and/or Data channels directly between users securely  via their browsers, or to servers supporting the WebRTC protocols.


WebRTC NATs
As the packet passes through the NAT/Firewall device, it automatically  changes the source IP and source port of the packet generate to a new source IP and source port which saves this binding between the “inside” and the “outside” source IP and source port.


Short Summary
WebRTC is an open-source project enabling plugin-free, Real Time Communications (RTC) in the Web browser. It includes the building blocks for high-quality communications such as audio,video streaming and network  components used in voice and video chat applications.
These Network web components, when implemented in a Web-browser, can be accessed through a JavaScript API, enabling developers to easily implement their own RTC web app.
WebRTC is made up of three APIs:
1. GetUserMedia (camera and microphone access)
2. PeerConnection (sending and receiving media)
3. Data Channels (sending non-media direct between browsers)

Features of WebRTC (Real-Time-Communication)
● Audio/Video Chat on the web.
● Accessed through Javascript API.
● Does not require plugins, downloads or installs.
● Works on Multiple platforms and multiple browsers.

WebRTC Working Features.   
  •    Media Streams – access to user's camera and mic
  •    PeerConnection – audio/video calls
  •    Data Channels – p2p application data transfer


Goal of WebRTC
WebRTC aims to give the development community access to high-quality, open and RTC technology. Before WebRTC, this type of Real time communication technology has only been available to large corporations who can afford the expensive licensing fees or through proprietary plugins such as an Adobe Flash. WebRTC will open the standard opportunity level for a new wave of communication via video streaming , voice, and data web applications.

Other WebRTC resources

The WebRTC Project: The WebRTC initiative is a project supported by Google, Mozilla Firefox and Opera. This Article Page is maintained by the Google Chrome team.
W3C: The WebRTC  Working Group is the official body involved in the development of WebRTC.
IETF: The Internet Engineering Task Force define as an open standards organization that is helping to develop and promote WebRTC.
HTML5 Rocks: A Google project that offers educational resources about HTML5 through tutorials, videos, and provides information on APIs that are not part of the W3C HTML5 specification.
BlogGeek.me: Blogger Tsahi Levent-Levi is an experienced telecommunications technologist who covers WebRTC.
WebRTC on Twitter: Analysis by Twitterverse is saying about WebRTC.

Thursday, January 15, 2015

Amazing Features of Node.js





Node.js is an Server side scripting, open source, cross-platform built on Google Chrome V8 JavaScript runtime environment for easily building fast server-side and   scalable networking applications.
Its multiple advantages over other server side languages, Node.js inbuilt with a dependable package management system called NPM and its registry npmjs.org which is easily built and publish software and libary as packages.




Node.js is functionally similar to the PHP + Apache or ASP + IIS stacks,and its applications works as an non-blocking I/O model,event-driven which are scripted in javascript and debugs within the Node.js runtime on Linux, Microsoft WIndows ,OS-X and Free BSD.
There are no classes in Node.js/JavaScript, because its objects inherit directly from other objects (prototypal inheritance). Node.js has natural with NoSQL databases like MongoDB, NoSQL databases are mostly use for cloud computing, agile projects and prototyping which are very secure and easily recoverable.


Syntax
The syntax of node.js is the set of rules that define a correctly structured JavaScript program. JavaScript is mainly used for client-side scripting within modern web browsers.
Context switch
Node.js switch between different environments and languages is attributed to the drop of efficiency when writing software code.
Node.js is contains less context switches.


Modules
Node.js comes with a superior and dependable package management system called NPM and its registry npmjs.org and administered via the package.json file and version locally, unless lib installed with the -g option. Both PHP and Node.js are functional languages with a relatively later addition of OOP to PHP.


Ecosystem
Node.js is growing faster than any other platform/language. This is mostly due to minimal modules and performing only a small set and sub-sets of tasks. Other factors might include such things as:
  • Existence of the specs, and abundance of JavaScript resources and gurus (such as Doug Crockford) amassed during the language’s many years of existence
  • Ease of NPM use, e.g., to publish an NPM module run $ npm publish
  • NPM is a default for Node.js and package manager for JavaScript.


Frameworks
Node.js works on collection of web frameworks few of them are Meteor,Express,Socket.io,Sails,Mean,Koa,Socketstream,Spine,Tower,Total.js, Flatiron, Express.io, Locomotive.Bone.io, Frisby,Stapes,Turtle.io, Sleek.js and some of most popular build systems for web are also available which made development with ease grunt, bower, yeoman and another futur player glup.js,


Real-time apps
Real-time apps building is just a breeze with Node.js stack of the Socket.io , Express.js frameworks. another full stack players are Derby projects, Meteor, which makes real-time apps building is taken one step further by combining front and back-end code bases with the persistence layer which reduces the complexity and speeds up the development dramatically. event driven programming in node js making web development to another level.


Database apps
Node.js is natural with NoSQL databases like MongoDB.
The databases’ performances are comparable to each other and  depending on the use cases as per MySql vs MongoDB performance benchmark(MySQL), Simple Test : MongoDB vs MySQL(MongoDB) and MongoDb vs MySql – However, MongoDB is superior and highly scalable for distributed databases and means.io has ready to use package of mango, express, angular, socket.io .NoSQL databases are secure and perfect for cloud computing, prototyping and agile projects.


Third-party services apps
Due to a  effect of non-blocking I/O, Node.js manage to handle multiple requests and make multiple requests as a client to a third-party services.
(e.g., Twitter, Amazon) with just one thread of execution.


Web servers
Node.js was created from the ground up for the network applications and there is a set of core modules to write web servers.
To start a Node.js server: $ node .
Note: In Node.js Multi-threading is absolutely possible with clusters and/or external modules.


Hosting
Node.js works nicely on PaaSs, with Heroku, Nodejitsu, Appfog, nodejitsu leading the list and also the cloud infrastructure company Joyent that developed powerful operation system SmartOS that allows for painless deployment ,performance bursts and DTrace debugging.


Performance Matrix
Node.js is extremely fast due to its non-blocking I/O mechanism and Google Chrome V8 engine technology.


Node.js is platform for building applications. not a web application framework. It's a It includes a set of tools useful in building web applications (such as modules for writing to the filesystem or making HTTP requests).


Some Important points and advantages of Node.js
Use of node.js
Node.js can be used for the following purposes
a)      Web applications ( especially real-time web apps )
b)      Network applications
c)       Distributed systems
d)      General purpose applications


The advantage of using node.js
a)    It provides an easy platform to build scalable networking programs
b)    Generally fast
c)    Great concurrency
d)    Asynchronous everything
e)    Almost never blocks


The Two types of API functions in Node.js
a)      Asynchronous, non-blocking functions
b)      Synchronous, blocking functions


Control flow function in Node.js
A generic piece of code which debugs/run in between several asynchronous functions calls is control flow function.


“Control Flow” controls the functions calls in Node.js
a)      Control the order of execution
b)      Collect data
c)      Limit concurrency
d)      Call the next step in program


Node.js is single threaded
For async processing, Node.js was created explicitly for more performance and scalability can be achieved by doing async processing on a single thread .


Async in Node.js
By following steps you can async Node.js
a)      First class functions
b)      Function composition
c)       Callback Counters
d)      Event loops


“Non-blocking” in node.js
In node.js “non-blocking” means that its IO is non-blocking.  Node uses “libuv” to handle its IO in a platform-agnostic way, it queues it within the event loop which call the JavaScript ‘callback’ on the main JavaScript thread.


Challenges with Node.js
Emphasizing on the technical point of view, it’s a bit of challenge in Node.js runs one process with only one thread to scale up on multi core server.


Wednesday, January 7, 2015

Is Quantum Computers - Key to Transform Future Technology.


Quantum Computers - Key to Transform Future Technology.






NASA and GOOGLE sign a joint ventures to bring a new era of Advanced Quantum Computing Science with Artificial Intelligence. Quantum computing  focused on developing computer technology based on the principles of quantum physics technique with uses of Artificial Intelligence which guide to solve and help to knowing the nature and behavior of matter on quantum and energy (atomic and subatomic).

Quantum computer`s encoded information in bits and qubits which allows the information to be processed in ways that have no equivalent in traditional basic computing, where as traditional basic computers encode informations into bits, in which bits must have a value of either 0 or 1, a qubit can represent a 0, and 1, or both values simultaneously.




n spring 2013, NASA engineers installed a D-Wave Two™ quantum computer.The Universities Space Research Association (USRA) has also entered into a joint Space Act Agreement with NASA and GOOGLE, Currently USRA is installing a D-Wave Two™ quantum computer in the NASA Advanced Supercomputing (NAS), The system D-Wave is about the size of a garden storage shed is housed inside a cryogenics system within a 10-square-meter shielded room and 512 superconducting flux qubits which is the most powerful conducting in the world and now engineers working on upgradation it to 2,048 qubits. The system D-Wave runs on a novel technique which referred as advance adiabatic quantum computing, which helps users to solve and guide about complex discrete combinatorial optimization problems using advance quantum physics technique. “Quantum computing, at this point in history could either turn out to be the biggest achievement since transistors were invented, or a massive failure”. The Experiment is at such an early stage now, it's still impossible to tell. For that reason, the main advantages and disadvantages depend on how it responds to real time environment and result shakes out.