Cristian Borcea: Recently we received a new grant from the National Science Foundation to deal exactly with this problem – how to program mobile distributed applications over large mobile and wireless infrastructures. Our project is called Avatar, and its main goal is to provide cloud support for mobile distributed computing. So we pair every mobile device with an Avatar in the cloud. The Avatar is actually a softer entity, surrogate of the mobile device, which is able to execute the same applications like the mobile device; and therefore we are able to offload computation, communication, and storage from the mobiles to the cloud. In this way, the mobile distributed applications will provide faster response time. They will have bandwidth consumption. They will be more reliable. Availability will be improved because the Avatars will always be on in the cloud. Finally, we will save a lot of energy on the mobile devices because much of the computation and communication will take place in the cloud. So to give you an example of Avatar application, let’s consider an application to find a lost person in a big city in a crowded event. For example, let’s say I lose my child at the Macy’s Day Parade in Times Square in New York. Then people take a lot of photos there because that’s what we all do. We take selfies. We take photos. I want to analyze all the photos taken by people in Times Square during that time interval and see if any of them have taken a photo of my child. This involves doing image recognition of the photos that are on the mobile devices or potentially in the cloud on the Avatars of the people. But right now we have no such system to allow me to do this application. Although the photos are there, the infrastructure is there, there is no such system. With Avatar, we are able to issue a query for all the people who have been in Times Square during, let’s say, the last hour or so and have taken photos in Times Square. Then send a piece of code to execute on their mobile devices or Avatars to perform image recognition. I would send the face of my child together with a piece of this code, and image recognition would be performed on their photos. If my child’s face is detected in some of these photos, the mobile devices in the Avatars of these people will send back to the location in a time when these photos have been taken. Therefore, I am able to construct the trajectory of my child – or at least potential trajectories of where my child has been, and hopefully at the end I will successfully recover my child from Times Square.
To give you an example at another application, let’s look at healthcare again. Let’s assume we want to monitor the spreading of epidemic diseases. The CDC, for instance, can issue an application that monitors all the people in an area – monitors their vital signs, heart rate, temperature, and so on. Then we can figure out when an epidemic is developing, and hopefully we are able to stop the epidemic using this programming module. So our Avatar model has three main challenges. One of them, which you probably thought about already, is privacy. Once we upload our data in the application from the mobiles to the cloud, the question is – how much do you trust the cloud provider? We are working with my colleagues on this problem, and our solution involves having two clouds and spreading the data between the two clouds such that none of them is able to figure out what the data is. Then we execute the computation in parallel between the two clouds to get the results, and the results are not again visible to the clouds. They are visible only to the mobile users. In this way we can protect the user privacy in the cloud. The second main challenge is – how do we develop a scalable cloud infrastructure? The cloud has been designed for enterprise applications, but with mobile devices we need to support millions – and perhaps billions – of virtual machines in the cloud to support these mobile devices. Again, with my colleagues we are working on scalability issues in the cloud, like clustering virtual machines and providing locality for the data in the cloud. A third issue is programmability. How can we express our applications in a simple and easy way, such that the developer can quickly develop and test his applications? Here we are looking at creating three new obstructions. The obstructions are users, jobs of users, and communication channels.
So the third challenge is programmability. How do we program in a simple and effective way, these applications. To achieve this goal and to allow the programmers to quickly develop and deploy and test their applications, we provide three obstructions. One is users. The other one is groups, and finally communication channels. The use those will allow programmers to ignore whether the application runs on the mobile devices are on the Avatars. They would just focus on the users as programming entities. The groups are exactly what the applications run on top of. So our applications run on top of groups that are selected based on their properties – like location, time, and social connectivity. And finally, the communication channels will allow us to do group communication within these groups. So in conclusion, mobile devices and mobile computing have a great future in the next 10 to 15 years. Here at the New Jersey Institute of Technology, we are the center part of this feature. We work toward providing all of us a much more exciting future in terms of mobile devices, mobile computing, and the applications we can use.