{'fraction_non_alphanumeric': 0.018837209302325582, 'fraction_numerical': 0.0, 'mean_word_length': 5.506807866868381, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Enabling the Next Frontier in Mobile Applications

Personal mobile devices such as cell phones and smartphones are ubiquitous. Today, these devices are commonly used to organize daily events, store large amounts of data and media, and interact with services on the Internet. Although some recent applications use short range wireless technologies such as Bluetooth and WiFi to communicate with neighbouring devices, most mobile applications communicate purely with servers on the Internet. I propose a new class of application where data will be created, stored, and consumed solely on mobile devices. These applications would be delay tolerant and utilize all forms of wireless connectivity, from short-range ad hoc networks to long-range cellular networks, to disseminate content without the use of intermediate application specific servers on the Internet. By utilizing all forms of connectivity, applications can exploit both the enormous untapped wireless capacity between devices and the reliability of long range wireless networks. Circumventing a centralized application server allows applications to exchange data without third party intervention, and encourages a broader range of applications that operate unfettered by local regulations. Moreover, exchanging data directly between devices bypasses is free and an anonymous activity; only devices in the immediate vicinity would know that a communication took place. I demonstrate two motivating mobile applications. The first, MyTube, is a totally decentralized mobile peerto-peer applications where media is exchanged between devices. In MyTube, users share their media wish lists with other devices, and through cooperation with others, MyTube acquires the data on behalf of the user. The second application that I envision is PocketBay, a distributed E-Bay style application. In PocketBay, users enter the items that they have for sale or browse items for sale from other mobile users. I believe that this form of application would improve commerce in many parts of the world where mobile devices are ubiquitous and Internet connectivity is not. The designers of delay tolerant applications such as these that operate on mobile devices are faced with a number of system and communication constraints. Mobile devices are highly resource constrained. They contain limited amounts of high-latency solid state storage, limited RAM, an under-powered CPU, and constrained wireless capabilities. They are further characterized by limited battery life, which requires applications to minimize unnecessary wireless communication and excessive periods of computation. The use of opportunistic communication further limits the amount of data that can be transferred between devices. Finally, mobile devices are subject to human mobility, and there is no guarantee that data exchanged between two devices will ever reach its destination(s). To enable this new class of delay tolerant applications, I propose the creation of a mobile application middleware that satisfies the following high-level goals. Support efficient communication over multiple network interfaces: Mobile devices are commonly equipped with multiple network interfaces, each with a different cost and benefit. An application middleware should be able to take full advantage of all methods of available connectivity. Provide and enforce a system of incentives: In a delay tolerant network, storing and forwarding data for other devices requires an investment of storage resources and energy, and it consumes the limited capacity of an opportunistic connection. The middleware must create and enforce a system of incentives that reward participating devices and penalize free riders. Provide secure and reliable communication: The middleware should provide secure and reliable communication, while subject to human mobility, resource constraints, and intermittent connectivity. Protect the interests of the user: The middleware should ensure that the needs of the user, such as the need to minimize energy consumption or monetary cost, are respected. For example, an application should have the ability to communicate over the cellular network; however, the middleware is responsible for ensuring that the user’s monthly data or Short Message Service (SMS) quota is not violated.