Contact Me

For my projects’ technical support:
    
For jobs, getting in touch, anything else:
    
Leave voice mail on:
     (Pacific Time)
Business | LinkedIn

About Me

I am a software professional and researcher with current interest in web-based and cloud communication systems. In the past I have worked on a variety of Internet communication systems such as voice and video on web, SIP/VoIP with Flash Player, web-based video conferencing, cloud telephony, enterprise video communication and peer-to-peer internet telephony. I completed my PhD from Columbia University under the guidance of Prof. Henning Schulzrinne. You can explore my professional background and activities on this website.

Keywords

web, communication, collaboration, security, social, messaging, voice, video, cloud, implemented, published, presented, SIP, XMPP, H.323, VoIP, mobile, HTML5, WebRTC, WebSocket, Flash Player, RTMP, RTSP, E911, enterprise, server, endpoint, P2P, JavaScript, Python, PHP, C/C++, Java, ActionScript, Tcl, and more

Collection

read more>>

Projects

Strata, AMSconf, always-on, IPO phone, Engagement Dialer, LAN video phone, ALICE, MobileSpaces, Vclick, aRtisy, AVRplugin, SecureEdge, Personal Wall, LivingContent, HTML5 communicator, Enterprise WebRTC, Resource Server, 39 Peers, P2P-SIP, SIP-RTMP gateway, RTMP server, Flash-VideoIO, Face Talk, Random Face, iChatNow, Public Chat (auto), Video Office, Talk to Experts, VVoW project, SIP-JS, Flash network, Videocity, AIRphone, REST server, E911 call taker, PSAPd.py, LoST client, SIP on iOS/Android, RTMP-SIP translator, Voice quality, Video pipe, 6connex client, Flash video call, Web to phone, Flash SIP/DHT, SIP/XMPP communicator, Flash click-to-call, Flash Voice, Serverless mobile gaming, Attack detector UI, MobileNAT, SIP-H.323 gateway, SIP/RTSP unified messaging, Multimedia collaboration, SIP-VoiceXML interactive response server, SIP/RTP conference, Hello2web applet P2P-over-SIP, SIP-using-P2P, SIP scalability/robustness, CINEMA, Auto attendent, Addressbook, Device control, XCAP server, Email-by-phone, DNS NAPTR, SIP ActiveBadge, Events, TRIP in sipd, IM/Voice, SIP announce, SIP ALG, Email-to-phone, RTP QoS, SIP E911, Message board, Calendar events, Conference recording, File sharing, Auto-load conference, Voice playout, Email-by-phone, RTSP client, VoiceXML browser, MP3 in rtspd, MPEG in rtspd, SIP Teltone, H.320 on embedded systems, H.323-H.324 gateway, H.323 video phone

My Résumé

Last updated Aug 2020

Note: As you hover mouse over various links, this box is updated with the description of that topic, and other related topics and links are highlighted on this page. Clicking on a link will either open the linked external web page, or will make this box static for a few seconds, so that you can click on the links present in this box.

A recent blog post...[link]

My Open Source

I have worked on several open source software systems related to voice and video on the web, peer-to-peer internet telephony, and implementations of various communication protocols such as SIP, XMPP, RTMP. I also mentor students in doing software research projects related to Internet multimedia communication. Please visit my student project page for details on how to join or contribute.

My open source projects were earlier hosted on Google Code, but now are migrated to Github and transferred to the ownership of Intencity (consulting business) for longer term support and maintenance.

Visit my open source projects on github >>

Papers and technical reports




RFCs and Internet Drafts (expired)

Presentations and slides from my talks

These presentations are based on my research at Columbia University, during open source Flash and WebRTC related work, and at Avaya Labs.

learn more>>

My Technical Blog

My articles on various technologies such as WebRTC, peer-to-peer, IP telephony, software development, programming language, open source, and anything else I feel writing about in computer science. Some popular articles are linked below.

WebRTC vs. SIP/SDP, Translating H.264 between Flash Player and SIP/RTP, A proposal for reference implementation respoitory, What great programmers think?, Why does client-server video conference fail? SIP vs XMPP or SIP and XMPP, SIP-using-P2P vs P2P-over-SIP

Gurukul: My Project Guide

A content portal for my past and current student projects that I have mentored, as well as a social network forum to connect students, project mentors and professors. It also lists a bunch of project ideas for student projects in the field of multimedia communication, web applications and Internet. If you are a student and wish to host your project on this site, please send me a note.

Interview Questions

My collection of technical interview questions for job seekers to prepare for. These questions were collections from elsewhere on the web during 1999-2000 when I was looking for a job. I do not have answers to all these questions, but will appreciate if you send me any answers or corrections.

Quotes I Like

They said it: Love is about giving ... giving happiness and care ... giving love, there is no question of asking love in return. Love is not a business. Its not whether you win or lose, but how you play the game, that counts! Work like you don't need the money. Dance like no one is watching, and love like you have never been hurt. When we walk to the edge of all the light we have and take the step into the darkness of the unknown, we must believe that one of two things will happen. There will be something solid for us to stand on or we will be taught to fly.

I like reading story books, poems, watching movies, listening to music, sketching, painting, playing cricket, pool and wasting time on computer.

An aqueous cascade bathe my ankles. I watched the relentless rhythms, the rise and fall of the sea, whispering from its depth untold secrets of a bygone era. I think of the past. Content in its flow. Happy in its history, safe in the arms of loved ones... long gone. The pristine clarity clouded. Things change. Memories remain forever!

Blog: programming tricks

My collection of programming tricks in Python, ActionScript, C/C++ and Java. The articles are written in Q/A style, so you can also take a test of how much you know :)

Book: Implementing SIP Telephony

Kundan Singh, Implementing SIP telephony in Python, Online Book, © Kundan Singh, 2007-2008. [PDF][HTML]

This is an implementer̥s Guide to Scalable and Robust Internet Telephony with Session Initiation Protocol and related protocols in Client-Server and Peer-to-Peer modes in Python. This also serves as an implementation report of the 39 peers project.

Strata Top9

A web and mobile app for managing your top 9 contacts (2014-2015)

It is an experimental enterprise cloud app created at Avaya Labs to quickly connect with any of your top 9 contacts. It uses modern HTML5 technologies including WebSocket and WebRTC to enable real time and multimedia interaction where possible. It uses our cloud resource service hosted on Amazon cloud, and is created using write-once-run-anywhere based on Chrome Cordova Apps tools. Strata really is a front-end to launch other apps to reach out to users and supports the notion of separating the user contacts from reachability apps.

What? It is an experimental enterprise app for desktop and mobile to quickly connect with any of your top 9 contacts. It uses modern HTML5 technologies including WebSocket and WebRTC to enable real time and multimedia interaction where possible. It uses our cloud resource service on ezinteract.com. It also has advanced mode in which it can launch call via external resources such as on IP office, AMS (media server bridge), Scopia, AAC (conference), EDP (engagement development platform), AMM (messaging) and such.

Where? The client application is available for download for desktop and mobile (Android), as well as from a web page internally.

How? The client application is written using Chrome App -- which allows writing native application in HTML, CSS and JavaScript. The generated native application can run on desktop (as ChromeApps) or on mobile (Android and iOS, using Apache Cordova). The project uses call and message signaling of Vclick-on-cloud on our ezinteract.com resource server. Additionally, it allows authenticating using either ezinteract.com authentication token or ALICE credentials.

read more>>

Endpoint driven conference control

Multiparty conference bridge using WebRTC and AMS (2014-2015)

It uses resource server to create endpoint driven conference control and membership management in a centralized multi-party conference hosted at Avaya Media Server (AMS). It uses WebRTC for client-server media flows.

What? This is a very simple browser based audio and video conferencing application using WebRTC and AMS (Avaya Media Server). It uses the WebRTC APIs available in AMS 7.7 or later. It works on Google Chrome.

Where? The project is hosted internally, and not available outside. It generates a random 9-digit conference number, and joins that conference. Then the same URL with the conference number parameter can be opened in other browser instances, potentially on another user's desk, and it will join the same conference identified by that 9-digit number. Alternatively, you can pick your own easy-to-remember number to use as your conference bridge.

How? It uses resource server to manage the conference membership, and our internal AMS7 installation running on a CentOS 6.4 virtual machine as the backend media server. It use nginx to enable cross-origin access of AMS APIs from the client web page. Currently, all the application logic runs in the client browser, and it uses the resource server for shared data and notification. Each conference number is mapped to a different context ID in the AMS API. The first user to open the conference link is assigned as moderator (or controller) who receives all the events in that context. When the moderator leaves, another conference participant is randomly picked in five seconds to become the moderator to receive events. This is largely an insecure conference application, and anyone who knows your conference number can join your conference, and anyone with JavaScript knowledge can potentially misuse the media server.

read more>>

Always on video presence

For distributed teams to stay in touch during office hours (2014)

It shows video presence of all the visitors of the presence page. Several video presence modes such as periodic snapshot of webcam, uploaded picture, or live video are supported. It enables real-time interactive conversation via one-click on the video of a person. In addition to web app, there are mobile and installed apps. It uses WebRTC for peer-to-peer media flows.

What? This is a cloud hosted and browser-based always-on video presence system, that shows periodic snapshot of all the people on that page, and allows intiating conversation by simply clicking on another person's picture. It is intended for distributed teams, to stay in touch during office hours. There are several presence mode - you can use uploaded picture, one-time snapshot, periodic snapshot (default) or live video. Other people can notice any active call in the shared room, and may click on any active member to join that call. Existing call participants may click on an inactive member to invite her to the call. The calls are automatically answered, as if you start talking to the other person in a room, instead of waiting for the other person to first accept the call. This has a more natural experience for the virtual video presence.

Where? To use this system, first signup on our cloud portal, and mention in "Additional information" that you are interested in trying this application. Once approved, click on the link received in the approval email, to login. After that you will see the alwayson application in the portal, clicking on which will take you to the project web page. Testing can be done by opening in multiple tabs or browser. To try a private virtual room, supply "?room=yoakum123" or similar URL parameter value for your room identifier.

How? It uses shared resources under /apps/alwayson at the resource server on our cloud portal, to maintain the virtual room membership and active call information. It uses aRtisy widgets named video-presence and video-io to facilitate periodic snapshot and live video in a call. The code is available in forge - project restserver tag hosted-ezinteract subdirectory alwayson.

IP office phone

A chrome app using WebRTC, video and cloud hosted IP office server for desktop and mobile (2014)

Avaya IP office product provides audio/video communication for small and medium businesses. This is a mobile and desktop app to connect to the IP office server in the cloud. It uses WebRTC for client-server media flows.

What? A chrome app is a web application written in HTML, JavaScript and CSS, but that looks and behaves like a native application and allows you to write once and run on a variety of platforms such as Windows, Mac OS X, Chrome OS (Chromebook), Android and iOS. The IP office team is looking in to creating a WebRTC client for mobile devices. To evaluate how difficult (or easy) it is to create such an application, I created such a phone as a Chrome app. It connects to the IP office and WebRTC gateway of our ALICE portal. There is also a native mobile app for Android, that seems to work great on Nexus 7. It does not work on iOS due to missing WebRTC support.

How? This app has about 1700 lines of HTML/JS/CSS code and has no other dependency like jQuery or Bootstrap. It is also integrated with the Strata Top9 project.

Where? The chrome app is available for download on desktop and mobile internally.

read more>>

Engagement Dialer

Avaya Engagement Development Platform (EDP) allows creating programmable call control and services. The engagement dialer app is a mobile and desktop app to dialout a phone number, including extensions or DTMFs, using the EDP's WebRTC service. It uses WebRTC for client-server media flows.

read more>>

LAN video phone

This is an experimental mobile app to enable ad hoc user discovery and audio/video communication with others in the local area network. It uses LAN multicast for presence and discovery, and WebRTC for peer-to-peer audio video flows.

read more>>

ALICE - Avaya Labs Innovations Cloud Engagement

What? This is a cloud hosted web portal to show off our research prototypes to new and existing customers as well as internal users. It currently hosts few applications including Anchor, Cobrowse and ConnectedSpaces. The servers run on Amazon EC2 cloud - some are public facing and others are behind a virtual private cloud.

How? The project started out as a mirror of my other cloud portal website written in Python, but was later changed to an independent re-write of the portal service using LAMP (Linux, Apache, MySQL, PHP).

Where? You can signup at portal website. Once your signup is approved, which is automatic if you signup with an Avaya email address, you can view a list of applications approved for you, and try them out. Individual applications may have additional installation requirements such as installation of client certficate for security and identification. These requirements are mentioned on the portal page after you signup.

read more>>

Connected Spaces on Mobile

Tablet/mobile user interface for Connected Spaces (CS) (2013-2014)

What? The connected spaces project provides team spaces and enables sharing of documents and other editable contents on the web with other team members. I created its alternative client application in HTML5 targeted for mobile and tablet devices such as iPad and Nexus 7.

How? The user interface is written to adapt to various small screens, and orientation. It uses the same server API as the desktop version of connected spaces client, and can be run from internal or cloud hosted server. Although the user interface is targetted for tablet devices, you can also view it on your desktop for demonstration purposes.

Where? To use the system, please signup on ALICE portal, and then follow the instructions to access connected spaces, especially installation of client certificate. After that visit this page again, to open the mobile website.

read more>>

Vclick

Endpoint driven enterprise WebRTC (2013-2014)

What? This project facilitates very easy to use video call and conferences using WebRTC. It has a browser extension for Google Chrome, which tracks your presence and enables notifications of call signaling events. There is also an option to use it without a browser extension in which case you must be visiting the particular page to enable your presence and receive notification within that page. It uses the widgets from the aRtisy developer platform to implement video conferencing layout and exchange of signaling messages for WebRTC and text chat. It also modifies the POST corporate directory to put a click-to-call button next to the user handles. Right-click on the icon allows you to explore more options such as voice-only call, call with a subject or invite to an existing call.

Through the easy interaction cloud resources we provide opportunities for Avaya customers to personally experience innovation as it emerges. The project has a web portal to host multiple trial applications including Vclick along with administrative interface. The Vclick application hosted on this portal has been tested extensively and demonstrated in various events. We particularly use it on our chromebook during testing multiparty conferences.

How? The implementation of the initial prototype was done in Mar 2013, and futher enhancements where done by mid 2013. In particular, we added interoperability with web communication server to reach SIP and eventually telephony endpoints. Please see the interop demo video linked above. We also incorporated ideas about secure edge to control the media stream and session enabled by any WebRTC application include Vclick. This project uses the resource data service and the widgets from aRtisy developer SDK projects.

The Vclick and resource server projects are modified and adapted to work in the cloud environment. The cloud hosted platform on Amazon EC2 includes a resource server (web+websocket server), a database, and a media relay server (STUN/TURN). The resource server implements several access control and security measures, e.g., using Origin and Host header checks, disallow non-TLS transport, login token to authenticate and authorize only approved apps. The Vclick application hosted on this portal is quite robust, uses a media relay server in the cloud, and includes relevant failure detection and reconnection logic.

Where? Trials are available for both cloud and internal installation, for internal users. To get started, visit the portal website and signup using the Google Chrome browser. Once you receive the approval email, click the login link to access your applications. You should keep this login link private, and use it to login from other places.

read more>> and more

aRtisy

A platform to create communicating web applications (2012-2014)

What? This project aims at building a developer platform (and community) to easily and quickly create WebRTC-enabled cloud-based application. A web communication widget defines a single (and typically simple) application use case, e.g., phone call, video publisher, conference state, automatic call distribution, call queue, click-to-call, or text-chat. Each widget has extensive API to configure and customize it, and to interconnect it with other widgets. These widgets interact with each other in a real (and complex) application such as a multimedia conferencing or a live video event. The project contains a developer SDK and an IDE (development environment) to create communicating web applications by interconnecting the widgets.

How? The current implementation is purely web-based and lacks integration with telephony and VoIP systems. We plan to extend our inventory of widgets to include more telephony style use cases, and to allow interoperating with telephony systems where possible. For example, the existing phone widget has a target (remote name) property that define which target user is contacted when the phone's call method is invoked. If the target is a phone number instead of a name, we would want to contact that telephone number via a telephony gateway from the widget. Examples of telephony style use cases are voice mail, touch-tone input, call transfer and interactive voice dialogs.

Where? The implementation of the initial prototype was done from Nov 2012 to Jan 2013. The screenshot shows the interconnected widgets for a multiparty conference application. Go to the project website to learn more about this project, to try out the drag-drop app-builder and to see the demonstration of various sample applications. This project uses the resource data service project.

read more>>

Avaya Video Recorder Plugin

A browser plugin to allow recording audio and video from your browser (2013)

This project implements a browser plugin to record audio and video from a webcam to an MP4 file. Current implementation supports Google Chrome, Firefox and Internet Explorer on Windows. In particular, it has both the NPAPI and ActiveX versions of the plugin. Please see the instructions on the test page to install and test out this project on a Windows machine. Even if your run 64-bit version of the operating system, the plugin DLLs are 32-bit because most windows browser require 32-bit plugins.

It has very easy to use JavaScript API to facilitate interaction with the plugin. The state string attribute is one of "idle", "recording", "previewing" or "playing". The file string attribute is a data URL of the content of the last recorded MP4 file. The allowed boolean attribute indicates whether the plugin is allowed (default) on the embedding web page or prevented by the user (see below for more). The methods include preview, record, play and stop to control the recording and playing state in the plugin. The stop method is used to stop any of preview, record or play operation. These methods return a string, which is null or empty "" on success, or an error message on failure. Additionally, the getFile method can be used to get the data URL of the content of the last recorded MP4 file.

Once the plugin is installed, any web page may be able to initiate recording. To prevent malicious websites from silently recording from your camera or microphone, we have implemented a simple security mechanism as described here. The plugin checks for the embedding web page URL against a user specific pattern, and disables any operation if the user has disallowed it on the web page. The pattern is a regular expression in a file on user's disk. The plugin looks for a file named .avrallowed.txt in the user's home directory, e.g., for user singh173 on Windows 7, it is at C:/Users/singh173/.avrallowed.txt. If the file is not found or cannot be opened, the plugin approves all URLs. If the embedding web page's URL matches the regular expression contained in the file, the plugin enables itself, otherwise it disables all its methods or attribute access. An example file content is shown below:

(file:///(.*))|(https?://restserver.research.avayalabs.com/(.*)

Existing WebRTC implementation does not include MediaStreamRecorder hence this plugin provides an alternative. In future, recording should be done by WebRTC.

SecureEdge

Secure and WebRTC-enabled media relay for enterprises (2013)

WebRTC allows a web application running in the browser to establish a media path with another browser instance of another user. It follows peer-to-peer approach to create a direct path between the two communicating endpoints. Existing enterprise firewalls typically allow web traffic over HTTP, but block any unsolicited peer-to-peer traffic including that of the WebRTC media path. Thus, emerging WebRTC enabled applications will likely suffer from various kinds of problems, e.g., you cannot always talk to the other person or there is one way audio. Fortunately, WebRTC allows using an intermediate media relay which can facilitate to solve the firewall traversal problem.

This project aims to build a media relay server that sits on the enterprise boundary as shown in the figure and enables WebRTC traffic across the firewall. The project builds (or modifies existing) media relay to serve this purpose. Define mechanisms and APIs for the web application to detect whether such a relay exists in the enterprise network, and if available, to configure, authenticate and use the relay for enabling communication from the browser. The relay may optionally record all the conversation in the media path. The end user behind the firewall must authenticate with the relay. This may be done either in the web application or in the browser via an extension.

A subset of this project has been implemented in the form of a secure edge browser extension. The browser extension sits between any third-party web page that uses WebRTC APIs, and the browser, and it intercepts all the API calls and events related to WebRTC. Additionally, it modified these APIs, e.g., to change the SDP to remove video, or to drop unauthorized ICE candidates detected by the browser. We have demonstrated that such a browser extension can effectively achieve most of the goals of a WebRTC secure edge, in conjunction with a media relay server. For example, a restrictive company's IT could run its own media relay server, and drop all WebRTC traffic that does not use that particular media relay. Then the IT could authorize the use of the media relay to certian users or on certain websites only.

read more>>

Personal Wall

Context sensitive enterprise personal wall for social sharing (2012)

Imagine a wall similar to that in the popular social network websites but with two differences. First, the content you see on another person's wall depends on your professional relationship and past interactions outside the social network, and second, the wall is embeddable in other websites and changes appearance based on where or how you are viewing it. We are working on an initial prototype of such a social and enterprise application that includes the user interface for profile, wall post, file sharing calendar and address book. We are also exploring novel user interactions for social connections, e.g., drop your digital visiting card (.vcf file) on another person's wall to establish the social connection.

We have an initial prototype of the personal wall project (see the screenshot of a user's wall) but it is far from being complete. In particular, the access control, groups and context sensitive nature of the wall remain to be investigated. The goal of this project is to provide a platform which integrates with existing enterprise tools, e.g., outlook calendar, mails and context engine, and allows embedding the wall in various places such as on your social network profiles. Thus, you can share information beyond what the existing sites allow by embedding the wall in those sites.

The main idea is to encourage the separation of the application logic from the user data. Traditional social networks tend to own (and control) the social data even though the data belongs to the end user. We intend to separate them so that mash-ups can be easily and quickly created by directly accessing the resources representing end user's social connections and profile. Furthermore, such social data are exposed as web accessible resources to other applications, e.g., the living content project can use it to inject a person's profile and video presence on her POST directory listing. The project uses WebRTC for implementing video presence - Suppose Bob enables his video presence; when Alice visits his profile she can see the live video feed from Bob's webcam.

The implementation of an initial prototype was done in Sep-Oct 2012. This project uses the resource data service and the living-content projects.

read more>>

Living Content

Interact and share private data on public content (2012)

The project overlays the private social data on top of the public web sites, and allows interaction among the viewers of the same web page - we call it connected browsing. You can edit or annotate any web page, see other people's annotations in your group, see who else is viewing the page at any instant, be able to communicate with them, and see the past conversation history around the web page. The annotations can be in the form of text or freehand drawing laid out on top of the web page but stored in a private server within the organization - hence not visible to outside. Furthermore, the living content browser extension modifies the existing web pages such as POST corporate directory or linked-in to inject the communication widgets such as user's presence icon or the ability to click-to-call without access to those server pages. The project uses WebRTC for audio and video communication and multiparty conferencing.

Please visit the project web page that describes the motivation, use cases, architecture and installation of this project. The project contains a browser extension for Google Chrome, and it needs several HTML5 features such as WebSocket and WebRTC that are available in Google Chrome browser. First, install this browser if you do not already have it. Then right click and save this extension file on your Desktop. In Chrome, click on the customize settings icon, select Tools from the drop-down menu, and select Extensions to open the extensions page. Then drag your extension file from the Desktop to this page to install the extension. You will notice a little chat icon next your address bar. This icon allows you to launch the extension. Note that you cannot launch the extension unless you are visiting a valid web site with http or https URL in your address bar.

Once installed, configure the extension as follows. Right-click on the extension icon next to your address bar, and select Options from the drop-down menu. Change your Screen Name to your full name so that others can identify you. Change the Service Host point to restserver.research.avayalabs.com instead of the default localhost:8080. The default localhost:8080 service is used for testing and development.

This project uses the resource data service project.

read more>>

HTML5 Communicator

full feature communicator application completely in HTML5 without legacy SIP or XMPP (2012)

This is an attempt to implement a full featured communicator completely in HTML5 using WebSocket and WebRTC and without depending on the legacy SIP, XMPP or Flash Player. It has support for user signup, login, contact list, presence, custom status message, instance messaging, audio and video conferencing, multiparty chat (with text, audio and video), file sharing, conversation history, and emoticons. In an earlier version, we have also experimented with the integration of third-party applications such as board games and shared notepad. The project uses WebRTC for audio and video communication and multiparty conferencing.

This project uses the resource data service project.

read more>>

Enterprise WebRTC

How do we absorb WebRTC in enterprises? (2012-2013)

This research explores how WebRTC affects enterprises, what are the novel use cases that were previously not possible, and how does the enterprise deal with these use cases. A part of this research explores the possibility of using SIP in JavaScript instead of in the server. This is based on my earlier project and open source work. The idea is to break free from the "managed" services mode and move the application logic in the end point.

We analyze some of the disruptive enterprise applications enabled by the emerging WebRTC and HTML5 technologies. HTML5, of which WebRTC is a component, adds several new techniques to enable a variety of applications running in the client browser. For instance the WebSocket extension enables a bi-directional client-server connection much like the traditional TCP socket that the programmers are familiar with. WebRTC supports native real-time audio and video communication, device access and codecs with direct end-to-end media path between the browsers. A lot of heavy duty systems and applications logic that were traditionally accomplished by dedicated VoIP phones and servers will now be freely available to web developers.

First we show how the existing communication use cases such as VoIP call, conference, instant messaging and presence are implemented using HTML5. Then we apply it outside the commonly known realm of VoIP for enumerating more applications that are possible. The list of applications is definitely incomplete.

read more>>

Resource Server

Resource oriented data access using a synchronous channel (2012)

With the emergence of WebSocket and WebRTC technologies, there is a general tendency of people to create custom protocols on top-of websocket. This creates a fragmented world of various applications where every application is tied to its own web service logic, and limits innovation on the third-party web applications to a large extent. Imagine if an application developer has direct access to the relevant social data, instead of having to use the social network provider defined function/procedure oriented interfaces.

Traditionally, the web application model has the application logic running in the web server via some CGI, PHP or Java servlet. This means that the JavaScript client code just calls those functions and uses the result. With the emergence of RESTful APIs on the web, there is a shift from procedure oriented APIs to data oriented APIs. This project takes it to the next level, where it moves all the application logic to the JavaScript code running in the browser, while providing a consistent and simple data access protocol on top of WebSocket. The web (resource) server is very simple - and hence is more scalable and robust.

The thesis of this project is that we can implement many complex application logic especially related to communication and collaboration while keeping the server simple and using the resource oriented data access between client-server. The same web resource server can be used by anyone without restricting the application logic, while the JavaScript based application logic can be served from a third-party web site.

The goal of this project is to define a generic resource access protocol on top of WebSocket and demonstrate how it works with several existing use cases in communication and collaboration. In fact most of the projects described in this document are built using the resource service and the application-in-the-endpoint model. You can learn the data access and event API in this tutorial. The basic idea is a continuation of my earlier project in voice and video communications on web.

read more>>

39peers.net (Since Sep 2007)

This is my open source project that implements many communication protocols Python. The project implements several specifications and IETF RFCs such as SIP, RTP, SDP, XMPP, RTMP, NAT traversal, DHT, peers and servers. The project is developed for student developers and researchers to experiment with new ideas.

project page >>

P2P-SIP in Python

This is my open source project that implements peer-to-peer Internet telephony software using the Session Initiation Protocol (P2P-SIP) in the Python programming language. P2P systems inherently have high scalability, fault tolerance and robustness against catastrophic failures. Internet telephony can be an application of P2P architecture where participants locate and communicate with each other without relying on expensive and managed service provider infrastructure.

project page >>

SIP-RTMP gateway

The goal of this project is to allow Flash to SIP calls and vice versa. In particular it allows multimedia calls from Flash Player to SIP network and SIP network to Flash Player. The gateway implements translation of signaling as well as media between Flash Player's RTMP and standard SIP, SDP, RTP/RTCP. The client side API allows you or any third-party to build user interface of web based audio and video phone that uses SIP in the back end. The user applications can be built using ActionScript for web browser as well as standalone AIR.

project page >>

Lightweight RTMP server in Python

This is a python implementation of the Flash RTMP server with minimal support needed for real-time streaming and recording using AMF0. It also includes an RTMP client and a SIP-RTMP gateway.

project page >>

Flash-VideoIO (2010)

Flash-VideoIO is a reusable generic Flash application to record and play live audio and video content. It can be used for variety of use cases in audio and video communication, e.g., live camera view, recording of multimedia messages, playing video files from web server or via streaming, live video call and conferencing using client-server as well as peer-to-peer technology.

project page >>

iVideoChat and Face Talk

These are face-to-face two-party video chat applications on Facebook. They allow you to video chat with your online friends. They use Adobe Stratus for peer-to-peer media streams, and Facebook's text chat and live messaging for signaling. A friend of mine and I created these projects as demonstrations of Flash VideoIO on Facebook. More details are provided on the Flash-VideoIO project page.

project page >>

Random-Face

This is a chatroulette-type application built using the Flash VideoIO component on Adobe Stratus service and Python-based Google App Engine. This site is just a demonstration of how such services can be built using the generic Flash-VideoIO component. It uses the Channel API of the App Engine for asynchronous XMPP-style messaging and events. More details are provided on the Flash-VideoIO project page.

project page >>

iChatNow

A Facebook application that allows you to publish your audio and video stream for others to view and listen. This is a zero configuration service that uses Adobe Stratus for peer-to-peer media streams. View the source code of the single HTML/JavaScript? page for this project. Keywords: video streaming, facebook, adobe stratus.

project page >>

Public-Chat

This is a multi-party audio, video and text chat application built on top of Python-based Google App Engine and using Channel API for asynchronous instant messaging and presence. This site is a demonstration of how such services can be built using the generic Flash-VideoIO component. It allows public and hidden chat rooms, user listing, and persistent messages. You can publish your video stream or play the streams of others who are publishing, by a click on checkbox items. More details are provided on the Flash-VideoIO project page.

project page >>

Video Office

This is a web-based video office that allows others visit my office to talk to me. It uses Adobe Stratus for peer-to-peer media streams, Google App Engine for back-end service, its Channel API for asynchronous events, and its XMPP module for interacting with Google chat. When someone visits my video office, I get a Google chat notification, so that I can open my office for live video chat. The application allows you to create your own video office using your Google Mail account. More details are provided on the Flash-VideoIO project page.

project page >>

Talk to Experts

This is an extension of Video Office project, that allows you to also search for experts based on a topic, see their calendar, sign up to talk to them in their calendar, and video chat with them in real-time. It uses Adobe Stratus for peer-to-peer media streams, Google App Engine for back-end service, its Channel API for asynchronous events, and its XMPP module for interacting with Google chat. The can get notified on Google chat when a visitor wants to chat with him. The application allows you to sign up as an expert on some topic, and potentially monetize your time giving expert advice. More details are provided on the Flash-VideoIO project page.

project page >>

Voice and Video Communication on Web

This web-based multiparty video conferencing and presentation application allows you to do real-time video conferencing, text chat and slide share. It uses RESTful API to access the resource-oriented data model for communication using a generic backend MySQL/PHP server over websocket (actually Socket.io). More details are on the project page as well as open source. A running demonstration can be tried out at IIT web conference page.

SIP in JavaScript

A complete SIP/SDP stack in the browser

The main motivation of this project is to move the complexity of SIP and related protocols to the end-point and to promote end-to-end communication from the web browser instead of relying on server side SIP translation such as a SIP-RTMP gateway.

The project implements SIP and related standards in Javascript: RFC 3261, RFC 4566, RFC 3264. Any complex telephony or application specific standard that relies on "managed" services mode instead of services in the end-point is outside the scope of this project. If you need web phones with "managed" services in the back end, then there are other better alternatives in our opinion instead of SIP in Javascript in the browser.

read more>>

project page >>

Flash-accessible UDP and TCP network transports

Traditionally, web browsers have limited access to the networking stack on the host computer. This project aims at providing a simple JavaScript API to facilitate secure access to network transports such as UDP, TCP and peer-to-peer connectivity to the web applications from within a browser. The easy to use JavaScript API will allow web applications to build complex real-time communication, video streaming and conferencing applications without relying on any support from the servers.

project page >>

The Internet Videocity (Jul 2009-aug 2009)

This is my open source Flash and web-based video telephony and conference application. The video communication is abstracted out as a city. Once you signup, you own a home, where you can have several rooms. You can decorate your rooms with your favorite photos and videos, invite your friends and family to visit a room by handing out Internet visiting card or softcard (TM), or visit other people's rooms to video chat with them or to leave a video message if they are not in their home. You can keep a room open for public or make it private.

project page >>

AIRphone: desktop video phone

Intencity AIRphone is a free desktop video phone application built on Adobe Integrated Runtime (AIR) platform. It uses the Flash-VideoIO component to handle end-to-end media path, and RESTful web service of IIT web conference to handle the signaling. It presents a device user interface on desktop and allows two party video call.

project page >>

What is Restlite?

Restlite is a light-weight Python implementation of server tools for quick prototyping of your RESTful web service. Instead of building a complex framework, it aims at providing functions and classes that allows your to build your own application.

restlite = REST + Python + JSON + XML + SQLite + authentication

Web-based emergency call taker agent terminal (at Emergent Communications)

This is a Flash-based web application to receive and respond to emergency calls at a public safety answering point. The server used is PSAPd.

read more >>

demo video >>

Lightweight PSAP server in Python (at Emergent Communications)

This is an integrated PSAP call receiver server which allows one or more web based call taker terminals, uses RTMP to SIP gateway, and has built-in conferencing and recording feature.

read more >>

demo video >>

Location to Service Translation Client (at Emergent Communications)

This is a light weight Python implementation of LoST protocol. The software includes both client and server. The client is integrated in PSAPd. The server is used for testing and demos.

read more>>

SIP on iOS and Android (at Twilio)

Two separate projects demonstrating SIP-based voice phone on iOS and Android. Both versions were built using pjsip libraries. These projects served as an initial proof-of-concept on which Twilio mobile client was built further.

read more >>

Web to SIP/RTP gateway (at Twilio)

An implementation of SIP-RTMP gateway in Java using Flazr RTMP libraries and NIST SIP/SDP stack. This project served as an initial proof-of-concept on which Twilio web client was created to connection from Flash app to backend cloud service.

read more >>

Voice quality measurement (at Twilio)

The project involved creating tools and measuing voice quality and packet loss. The details are not public.

Video pipe for Twilio client

The project involved adding video to web client app and the gateway using H.264 in Flash Player. The details are not public.

Multimedia video call and messaging client for enterprises (at 6Connex)

This project involved several aspects of creating an enterprise platform for multimedia communication, collaboration and messaging. It is based on Flash Player web interface, and with Java backend. The details are not public.

Multimedia video call and conferencing (at Tokbox)

The Flash based web client contains many features including two-party video call, multi-party video conference and messaging. I also converted old Ajax based signaling to modern XMPP based using client side XMPP library. The details are not public.

Web to SIP gateway (at Tokbox)

Using components from Red5 (for RTMP) and NIST (for SIP/SDP) I created an initial proof-of-concept gateway to call from web-to-phone (and vice-versa). The details are not public.

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

MobileNAT (Jun 2002-Aug 2002)

As a Bell Labs intern, I did research, design and implementation of MobileNAT that provides IP mobility for devices in private address spaces. I wrote the client application that implements DHCP client and server, and the driver that traps and alters the IP packets on Windows XP. I also wrote the server application that runs on the Linux router, implements DHCP server and alters the NAT mapping. The project was one part of the bigger project on integration of 802.11 and 3G technologies.

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

TBD - send me an email to learn more

My research interest includes Internet telephony, web multimedia communication, peer-to-peer systems, and scalable and reliable Internet services.

Reliable, Scalable and Interoperable Internet Telephony

PhD thesis by Kundan Singh, June 2006,

Thesis Committee: Prof. Henning Schulzrinne (advisor), Prof. Gail Kaiser, Prof. Vishal Misra, Prof. Dan Rubenstein, Dr. Milind Buddhikot

Abstract: The public switched telephone network (PSTN) provides ubiquitous availability and very high scalability of more than a million busy hour call attempts per switch. If large carriers are to adopt Internet telephony, then Internet telephony servers should offer at least similar quantifiable guarantees for scalability and reliability using metrics such as call setup latency, server call handling capacity, busy hour call arrivals, mean-time between failures and mean-time to recover. This thesis presents a reliable, scalable and interoperable Internet telephony architecture for user registration, call routing, conferencing and unified messaging using commodity hardware. The results extend beyond Internet telephony to encompass multimedia communication in general.

The architecture presented in this thesis deals with two aspects: at least PSTN-grade reliability and scalability of the Internet telephony servers, and interoperable Internet telephony services such as conferencing and voice mail using existing protocols. We describe the architecture and implementation of our Session Initiation Protocol (SIP)-based enterprise Internet telephony architecture known as Columbia InterNet Extensible Multimedia Architecture (CINEMA). It consists of a SIP registration and proxy server, a multi-party conferencing server, a gateway for interworking SIP with ITU's H.323, an interactive voice response system and a multimedia mail server. CINEMA provides a distributed interoperable architecture for collaboration using synchronous communications like multimedia conferencing, instant messaging, shared web-browsing, and asynchronous communications like discussion forum, shared files, voice and video mails. It allows seamless integration with various communication means like telephone, IP phone, web and electronic mail.

We present two techniques for providing scalability and reliability in SIP: server redundancy and a novel peer-to-peer architecture. For the former, we use DNS-based load sharing among multiple distributed servers that use backend SQL databases to maintain user records. Our two-stage architecture scales linearly with the number of servers. For the latter, we propose a peer-to-peer Internet telephony architecture that supports basic user registration and call setup as well as advanced services such as offline message delivery, voice mail and multi-party conferencing using SIP. It interworks with server-based SIP infrastructures.

Short Biography

One Paragraph

Kundan Singh received his PhD from Columbia University with focus on Internet telephony and has worked at Motorola, Bell Labs, Adobe, Tokbox, 6Connex, Twilio, Emergent and Avaya on a variety of Internet communication systems using SIP, web and cloud platform. Dr. Singh is an active open source contributor with several projects in peer-to-peer Internet telephony, Flash based audio and video communication, and voice and video using web based real-time communications.



Two Paragraph

Kundan Singh is a VoIP researcher and software professional. He received his undergraduate degree in computer science from Birla Institute of Technology and Science, India, and his MS and Ph.D. degrees in computer science from Columbia University, New York. He has worked at Motorola, Lucent Bell Labs, Adobe Systems, Tokbox Inc., 6Connex Inc., Twilio Inc., Emergent Communications, and Avaya Labs.

His research interest includes Internet telephony, web multimedia communication, peer-to-peer systems, and scalable and reliable Internet services. He has published over twenty refereed papers in Internet telephony and web communications, holds three patents, and written many software applications such as SIP-H.323 signaling gateway, unified messaging system using SIP and RTSP, multi-platform SIP-based conferencing server, VoiceXML based IVR platform, P2P-SIP system, SIP stack and distributed hash table for Flash Player applications, web-based video conferencing system, scalable SIP-RTMP translation for web-to-phone calls and distributed conferencing, next generation E911 system using web technologies, pure HTML5 video communicator and instant messenger, and several WebRTC based proof-of-concept applications and systems.

Professional experience (approx 16 years)


Principal WebRTC Architect, Intermedia, Sunnyvale, CA, 2019-
Founding Engineer/Principal Architect, Koopid Inc, CA, 2016-2019
Senior Research Scientist, Avaya Labs, Santa Clara, CA, 2012-2016
Part time engineer and consultant at Twilio, Emergent and Bittorrent, Jan 2012-Feb 2012
Lead Software Engineer, 6Connex, Campbell, CA, Sep 2009-Sep 2010
Senior Software Engineer, TokBox, Inc., San Francisco, CA, Jan 2008-Jul 2009
Senior Computer Scientist, Adobe Systems, San Francisco, CA, Aug 2006-Sep 2007
Member of Technical Staff, Bell Labs/Lucent Technology, Holmdel, NJ, May 2006-Aug 2006
Research Assistant, Columbia University, Computer Science, New York, NY, Sep 1999-May 2006
Summer Intern, Bell Labs/Lucent Technology, Holmdel, NJ, Jun 2002-Aug 2002
Senior Software Engineer, Motorola India, Bangalore, India, Jun 1997-Jul 1999
Summer Intern, Bhabha Atomic Research Center, Mumbai (Bombay), India, Jun 1995-Jul 1995

Objective

Looking for a full time research scientist or technical leadership position in peer-to-peer systems, multimedia communications, IP telephony or video conferencing.

Intermedia (2019-): Principal WebRTC Architect

Keywords: Architecture, design. Technology leader. Software Development. Idea to production. Video communication. Conferencing. SFU, MCU. Multiparty. Simulcast. Client-server. High performance. Quality. WebRTC. SIP. Call quality and stats analysis. CDR. R&D. Virtual background. Numerous novel ideas and features.

Projects: Responsible for several novel projects in three main areas so far. Many of these are from scratch.

(1) Architecture, design and implementation of a modern video conferencing application. Transition from previous MCU-based system to new and scalable SFU-based for video paths. Focus on client side problems and solutions including robust video layout, simulcast substream selection, and WebRTC-based session negotiation and maintenance in a multi-party video meeting. More recently scaled the system to large meeting support.

(2) Single-handed design and implementation of an in-house quality monitoring and diagnostic tool. It helped diagnosing numerous customer complaints, by reducing the average investigation time from several hours or days to merely few minutes. The quality monitoring part of the project is similar in spirit to callstats.

(3) Novel labs initiative with proof-of-concept implementations of more than fifteen innovative features, and many other diagnostic tools to support real-time video conferencing. Labs included end-to-end encryption using WebRTC insertable streams, virtual background using tensorflow, face tracking, speech recognition for auto-transcript and hands free mode, multiple content sharing, overlaying video on screen for seamless presentation, customized video layouts for certain use cases, and more.

Koopid Inc (2016-2019): Founding Engineer/Principal Architect

Summary: Stealth mode startup. Later acquired by Dialpad. Business to consumer messaging using AI and chatbots. I designed, architected and implemented the cross platform mobile and web client, a workflow designer (PxDesigner) to create customized apps, and bootstrapped the agent desktop and server code. Technology includes chat, voice, video interaction, bots, widgets, cloud, mobile, Cordova, JavaScript, and cross platform software development.

Keywords: mobile app, web, messaging, Cordova, chatbot dialog designer, business specific style customizer, WebRTC, Android, iOS.

Projects: responsible for architecture, design and implementation in three main areas from ground up -

(1) Cross platform (web + mobile) client application for customer service catering a range of business use cases, including flexible and pluggable application logic architecture.

(2) Graphical drag-and-drop enabled application designer to customize styles as well as dialog workflows between customer and machine, before escalating to an agent. The workflow part is similar in spirit to wit.ai or dialogflow at that time, for creating interactive NLP/ML dialogs.

(3) Client-server networking, security, APIs, and real-time voice and video call using WebRTC.

Also helped with (4) bootstrapping generic as well as customizable agent-side application.

Avaya Labs (2012-2016)

Summary: I compared the various approaches to integrate the emerging web-based real-time communication (WebRTC) with legacy VoIP systems. I explored various enterprise use cases of the emerging HTML5 standards. I created ideas and prototypes to propose future directions. I have created more than 15 software projects from idea to design and implementation, and with papers and patents in some of them. Please click on the links from the projects box to learn more.

Keywords: enterprise communications, emerging technologies, open innovations, WebRTC, SIP, cloud, mobile.

Avaya: one of the largest enterprise communications vendor, and a leader in unified communications and contact center technologies. Avaya Labs emerged from the renowned Bell-Labs when Avaya spun out of Lucent.

Research Scientist - as part of the CTO organization, provides direction and insights into emerging technologies, and applies them to existing or new Avaya products or systems.

1) Primary author of more than 15 software projects ranging from proof-of-concept implementations to mature cloud hosted systems in areas such as web collaboration, video presence, mobile apps, cloud telephony, enterprise social network, network security, and web video conferencing.

2) Co-authored 9 systems papers in refereed conferences/journals in areas such as WebRTC, SIP, cloud-based systems, web collaboration and cross-platform mobile software development.

3) Generated 9 co-authored patent applications on ideas related to WebRTC, web collaboration, conference user interface, and enterprise cloud collaboration.

Emergent Communications Inc (Apr 2011-Feb 2012)

Emergent communications provides software pieces for the next generation emergency services by productizing the innovations from Columbia University where the core pieces such as SIP and location-to-service-translation (LoST) were invented. Some of these software pieces were written by me during my time at the university. I was responsible for the entire software engineering and development at Emergent. The job involves productizing the software using advanced cloud-based services and modern web based applications for the call taker terminals. The main challenge is in creating integrated software solution out of the multitude of technologies used and developed at the university.

Twilio Inc (Jan 2011-Feb 2012)

Twilio is a cloud telephony application provider that allows web developers to take the full advantage of the telephony API using simple, elegant and robust cloud service. As a part time consultant at Twilio, I am responsible for architecture, design and implementation of mobile client on Android and iPhone and implementation of gateway server for web client. I also did performance and voice quality measurement under server load, and built prototype of a video pipe from the browser client. I served as an in-house technology expert for Flash-based communication (RTMP) and SIP/RTP standards.

6Connex Inc (Sep 2009-Sep 2010)

It provides a virtual experience platform where organizations can host virtual events and participants attend sessions, interact in virtual rooms, and build their social network. I lead the architecture and implementation of audio and video communication, conferencing, messaging and social interaction among the participants for the platform.

Tokbox Inc (Jan 2008-Jul 2009)

It allows web-based video telephony for Internet users using easy to use Flash technology. As a senior software engineer, my role at Tokbox was to enhance the system by using standard protocols such as SIP and XMPP for signaling of video communication, to interact with telephone network to allow PC to Phone and Phone to PC communication, and to build scalable and reliable backend infrastructure for the Internet scale. I have also helped in building more robust front end using the new Adobe Flex technology.

Adobe Systems (Aug 2006-Sep 2007)

As a senior computer scientist at Adobe, I designed and implemented Flash-based Internet telephony and peer-to-peer systems. I implemented a SIP stack and a P2P library in ActionScript and built several prototype Flash-based applications such as integrated SIP and XMPP communicator, click-to-call Flash component, browser extensions for Firefox and IE for PC to phone calling, and a P2P-SIP user agent. My P2P implementation was based on Bamboo DHT and incorporated authenticated data storage, secure transport and reliability as discussed in my thesis.

Bell Labs (May 2006-Aug 2006)

As a member of technical staff, I did design of a scalable and robust server-less infrastructure for mobile carriers to support gaming and other services in a distributed peer-to-peer manner. I also did design and implementation of Java-based user interface of an attack detection software for mobile carriers.

Software at Columbia University

I worked on a number of pieces of software at Columbia Internet Real-Time Lab. Some of these software pieces were sold by a former startup company named SIPquest which was acquired by CounterPath. I am no longer associated with these software pieces, so please do not send me licensing questions. Feel free to browse through the documents and APIs of these software pieces. I am also looking for students interested in building open-source versions of these software at my projects site. Drop me a mail if you would like to work on this.

Quick Links: CINEMA, sip323: translator, sipum: voicemail, rtspd: media server, sipua: useragent, sipconf: conference, sipvxml: voicexml
API docs: libsipapi (SIP lib),libconf (mixer),sipconf (conference),sipum (voicemail),sipvxml (VoiceXML),libnat (NAT/firewall),sippeer (P2P-over-SIP)

CINEMA:Columbia InterNet Extensible Multimedia Architecture provides an IP telephony test-bed.
SIP library libsip++:LibSIP++ is a SIP library with C++ interface. It can be used either in a user agent or in different SIP based applications like gateways (sip323), unified messaging (sipum), servers for conference (sipconf), and so on.
SIP-H.323 signaling gateway sip323:SIP-H.323 signaling translator which uses our SIP library and OpenH323's H.323 library.The software uses very old version of H.323 library.News
SIP/RTSP Unified messaging sipum:RTSP based Voice mail server and software answering machine with SIP interface.
RTSP media server rtspd:RTSP media streaming server for recording or playback.
SIP test user agent sipua:A simple command line SIP user agent implemented using the SIP library.
SIP/RTP conference server sipconf:A SIP based Audio/Video Conference Mixer also called as conference bridge.
A SIP VoiceXML browser sipvxml:This is a prototype VoiceXML implementation with SIP interface to allow interactive voice response applications in IP telephony.
SIP proxy, redirect, registrar server sipd:This is our SIP server for call routing and registration. I worked on scalability and reliability of this server.

I have also worked on several other libraries in CINEMA such as conferencing (libconf), NAT/firewall traversal (libnat). The complete test-bed architecture is descibed in a technical report, found on my publications page. There are various other individual component publications, describing individual components in detail. Some of the slides for demonstration of these software can be found at my talks page. In the past I also built a Web based user agent hello2web as a prototype application. An old web page with documents can be found at helloweb.

Motorola India (Jun 1997-Jul 1999)

In a group of two engineers, we did design and implementation of a complete H.323 video conferencing client for Windows using external components for initial signaling and media codecs. I also helped in various other ongoing projects such as VoIP gateway, embedded systems for H.320 video conferencing, and mentored an intern for H.323-H.324 gateway. I also did internship from Jan 1997 to June 1997 for six months as part of my B.E. curriculum.

Education

PhD/Computer Science (Columbia University, New York, Jan'01-Jun'06)
Thesis title "Reliable, Scalable and Interoperable Internet Telephony"
Advisor: Prof. Henning Schulzrinne

MS/Computer Science (Columbia University, New York, Sep'99-Dec'00)
Emphasis in Internet telephony and multimedia communications. Classes of interest: computer networks (A+), internet systems programming (A), advanced internet services (A), web enhanced information management (A)
Cumulative GPA 4.066/4.0

BE (Hons)/Computer Science (BITS Pilani, India, Aug'93-Jun'97)
Cumulative GPA 10.0/10.0 (University Gold Medallist)

Columbia University (Sep 1999-May 2006)

My research focus was on scalable and robust Internet telephony and multimedia internetworking: IP telephony, SIP-PSTN interworking, SIP-H.323 signaling gateway, SIP-RTSP based unified messaging system, comprehensive multimedia collaboration, VoiceXML-based interactive voice response system, SIP/RTP based scalable and robust, conference, and SIP protocol stack. Focus of my thesis is on scalability and reliability of IP telephony systems in peer-to-peer as well as server-based architectures using existing standards. My software pieces were part of CINEMA (Columbia INternet Extensible Multimedia Architecture) test bed in Prof. Schulzrinne's lab. My software pieces were productized and sold by startup companies, SIPquest and FirstHandTech, spun out of Columbia University. During the initial years, I wrote an object-oriented SIP user agent library in C++, using our underlying SIP transaction and parsing library. I developed other components such as unified messaging, voice mail and answering machine server, multimedia conference server, interactive voice response server and SIP-H.323 signaling gateway. I wrote reusable object oriented modules for conference library and media-streaming library. Later, I built scalability and reliability mechanism for SIP servers that provide PSTN-grade availability (five nines) and scalability (ten million BHCA), albeit at much lower cost. I also developed techniques and built systems for robust and scalable peer-to-peer Internet telephony without incurring any server maintenance cost.

Teaching and Student Project Mentoring

Teaching Assistant: Advanced Internet Services (COMS E6181-1), Columbia University, Fall 2001, with 48 students enrolled in the class, and primary responsibility of evaluating assignments and programming projects, and interacting with the students regarding the course material. I received excellent TA award. I continued as the TA and coordinator of this course for the subsequent offering of this course over Columbia Video Network (a distance learning program) for Summer 2002, Fall 2002, Spring 2003 and Summer 2003, with main responsibility being designing and grading evaluation assignments, programming projects and final exams for the enrolled students.

Student project mentoring

Project Mentoring: In the more than five years as a PhD student in the Internet Real Time Lab., I supervised many student projects such as active badges, event notification and scheduling system, screen sharing, floor control, file sharing, interworking between instant messaging and voice calls, phone announcement service, application level gateway for NAT and firewall traversal, email by phone, audio quality measurement for conferencing, location service for 911 calls in SIP proxy server, and integrating MPEG support in our media server. I also launched a software research project web site for students at http://myprojectguide.kundansingh.com to help project students and build community. My past and current student project can be found on that site.

Awards and honors

Three US patents granted #7,453,852, #7,257,201, #7,266,091
Extraordinary Teaching Assistant Award, Fall 2001, Columbia University, New York, NY
Research assistant for M.S. and Ph.D., Columbia University, New York, NY
Grade of A or A+ in all subjects throughout my Bachelors, Masters and PhD study
University Gold Medalist, 1997, Birla Institute of Technology and Science, Pilani, India
Second rank among lakhs of students in board exam of both class 10 and 12, India
Scored 100% marks in math in class 12, and science in class 10 board exam, India

Other activities

Ph.D. student representative, 2001, Computer Science Department, Columbia University
Coordinator, Department of Hindi Press, APOGEE 1996, BITS, Pilani, India

Computer and technical skills

I have extensive programming experience in C, C++, Python, ActionScript (Flex), Java, Tcl and Perl. I have worked on both Unix and Windows platforms, as well as on real time OS. I am familiar with various tools such as MySQL, Apache, TomCat, gcc/make, VC++, CGI, servlet, Flex Builder, Eclipse, LAMP/WAMP, git, cvs and svn. I have worked with various hardware and software tools such as Cisco router 2600 series, Cisco IP phone, Nortel MCS 5100 system, Intel/Dialogic IP telephony, MySQL replication, Vovidḁs SIP and TRIP stacks, DNS SRV and NAPTR, DHCP server and client, FMS and Red5 media servers, SER/OpenSER servers, Google App Engine, Facebook application, RESTful architecture. I have working knowledge of software process including CMM quality levels and software design models. I have also worked briefly with Linux kernel module programming, Windows driver programming and MacOS audio module programming.


I have extensive experience with various Internet protocols such as Session Initiation Protocol (SIP), Real-time Transport Protocol (RTP), Real Time Streaming Protocol (RTSP), Session Description Protocol (SDP), Extensible Messaging and Presence Protocol (XMPP), Real-time messaging protocol (RTMP), VoiceXML, Simple Object Access Protocol (SOAP), ITU-T recommendations H.323, H.225.0, cryptography, security protocols, wireless/mobility protocols such as Mobile IP and some intra-domain mobility protocols for fast handoff, IP-PSTN interworking for telephony and related protocols. I have worked extensively on server scalability and reliability, and peer-to-peer systems and algorithms.

Software Development

Avaya: architecture, design and implementation of several WebRTC and web/mobile collaboration based projects. Many of these projects are cloud hosted on Amazon cloud. Some of these have associated publications and patents. Please see the projects box for details.

Twilio: architecture, design and implementation of mobile client and implementation of gateway for web client for cloud telephony. Also did voice quality and performance measurement on server load, and prototype of video pipe for web browser.

6Connex: Lead the architecture and development of socialnetworking and communication component for enterprise virtual events.

TokBox: I designed and implemented the flex based TokBox client for video conferencing. I also did several prototype implementations for PC to phone calling, shared media viewing, distributed server infrastructure for low latency and automatic fail over of video calls.

Adobe: I implemented a SIP stack and a P2P library in ActionScript and built several prototype Flash-based applications such as integrated SIP+XMPP communicator, click-to-call Flash component, browser extensions for Firefox and IE for PC to phone calling, and a P2P-SIP user agent. My P2P implementation is based on Bamboo DHT and incorporates authenticated data storage, secure transport and reliability.

Columbia: During the initial years, I wrote an object-oriented SIP user agent library in C++, using our underlying SIP transaction and parsing library. I developed other components such as unified messaging voice mail and answering machine server, multimedia conference server, interactive voice response server and SIP-H.323 signaling gateway. I wrote reusable object oriented modules for the conference library and media-streaming library. Later, I built scalability and reliability mechanism for SIP servers that provide PSTN-grade availability (five nines) and scalability (ten million BHCA), albeit at much lower cost. I also developed techniques and built systems for robust and scalable peer-to-peer Internet telephony without incurring any server maintenance cost.

Bell Labs: I worked on MobileNAT that provides IP mobility for devices in private address spaces. I wrote the client application that implements DHCP client and server, and the driver that traps and alters IP packets on Windows XP. I also wrote the server application that runs on the Linux router, implements DHCP server and alters the NAT mapping.

Motorola: In a team of two, I developed a complete H.323 video conferencing client for Windows using external components for Q.931 and media codecs. I also helped in various other ongoing projects such as H.323-H.324 gateway, H.320-based video conferencing and debugging tools for embedded systems.

Patents

United States Patent 9,374,342, System and method for testing network firewall using fine granularity measurements, Ormazabal; Gaston S. (New York, NY), Schulzrinne; Henning G. (Leonia, NJ), Yardeni; Eilon (Brooklyn, NY), Singh; Kundan (Sunnyvale, CA), Filed: Nov 2006, Awarded: Jun 2016.

United States Patent 9,294,458, Managing identity provider (IdP) identifiers for web real-time communications (WebRTC) interactive flows, and related methods, systems, and computer-readable media, Singh; Kundan (San Francisco, CA), Yoakum; John H. (Cary, NC), Filed: Oct 2013, Awarded: Mar 2016.

United States Patent 7,453,852, Method and system for mobility across heterogeneous address spaces, Buddhikot; Milind M. (Cliffwood, NJ), Hari; Adiseshu (Matawan, NJ), Miller; Scott C. (Freehold, NJ), Singh; Kundan Narendra (New York, NY), Lucent Technologies Inc. (Murray Hill, NJ) , Filed: July 14, 2003, Awarded: November 18, 2008. Also has international applications.

United States Patent 7,257,201, System and method for unified messaging in inter/intranet telephony, Singh; Kundan (New York, NY), Schulzrinne; Henning (New York, NY), The Trustees of Columbia University in the City Of New York (New York, NY), Filed: Aug 13, 2001, Awarded: Aug 14, 2007. Also has international applications.

United States Patent 7,266,091, System and method for conferencing in inter/intranet telephony, Singh; Kundan (New York, NY), Nair; Gautam (New York, NY), Schulzrinne; Henning (New York, NY), The Trustees of Columbia University in the City Of New York (New York, NY), Filed: Feb 28, 2002, Awarded: Sep 4, 2007. Also has international applications.