Quick Links
Past Projects
May 2008 - August 2008
Profiling Smartphone Usage
To measure the number of hours of my life spent checking emails, chatting on BlackBerry Messenger, checking news, performing experimentation, etc., I developed a simple tool to record my BlackBerry usage.
On average I interaction with my device 109.06 times per day, totaling on average a staggering 5916.42 seconds of use.
My average usage duration is 54.64 seconds.
On average I use my device every 617.46 seconds.
The simple application can be downloaded over the air from here. It requires BlackBerry OS 4.2.1 or greater and writes to the device's file system.
More details can be found on the project's page.
Design Principles for Opportunistic Communication in Constrained Computing Environments
Constrained computing environments, such as smartphones and embedded wireless devices, are becoming increasingly prevalent. Driven by the need to minimize power usage, these devices are characterized by their low-power CPUs, limited memory, slow yet vast amounts of persistent storage, and one or more wireless network interfaces. As the dominant form of future computing, understanding and adapting to the trade offs that exist between computing and communication resources and energy consumption will become increasingly important.
In this paper we consider the effect of a constrained computing environment on opportunistic communication. Drawing from our experiences with two existing mobile systems, we detail the constraints that inhibit opportunistic communication. We also show how these constraints can be satisfied using a set of design principles for systems that depend on opportunistic communication.
This paper has been published at the MobiCom Workshop on Wireless Networks and Systems for Developing Regions (WiNS-DR) and is available here.
February - April 2008
A Survey of Platforms for Mobile Networks Research
The use of smart phones is growing at an unprecedented rate and are projected to soon pass laptops as consumers' mobile platform of choice. The proliferation of these devices has created new opportunities for mobile researchers; however, when faced with hundreds of devices across nearly a dozen development platforms, selecting the ideal platform is often met with unanswered questions.
In this paper I consider characteristics of mobile platforms commonly found in mobile network research. Based on these characteristics, I assess each of the top five smart phone platforms: Android (Linux), BlackBerry, iPhone (Mac OS X), Symbian, and Windows Mobile for their suitability as mobile research platforms. This analysis is current as of May 2008.
This paper has been accepted for publications in MCCR.
Exploiting the Short Message Service as a Control Channel in Challenged Network Environments
This work was an extension to my previous analysis of SMS. This work exploits the reliability and robustness of the BlackBerry for improved measurements.
More details on this work can be found here.
This paper has been published at the MobiCom Workshop on Challenged Networks (CHANTS 2008) and is available here.
BlackBerry Power Measurement
|
The choice of mobile device is often a religious argument; however, battery life is a key property differentiating mobile devices. I have written a simple application to measure and graph the battery consumption on a BlackBerry device. Source code for this project can be downloaded from here. This simple application can be downloaded over the air from here. It requires BlackBerry OS 4.2.1 or greater and writes battery logging data to the device's file system. |
![]() |
BlackBerry Location Recorder
Using a GPS is cool, but recording your own mobility pattern is cooler! This super simple application records a the BlackBerry's current GPS location to a text file on either the local or removable file system.
The source code for this simple application is available here. This application can be downloaded over the air from here.
BlackBerry Log Copier
The simplest, yet most useful application around. This little gem does mv file:///store/home/user/*.txt file:///SDCard/ . A handy tool for any researcher. It requires BlackBerry OS 4.2.1 and can be downloaded over the air from here.
September 2007 - January 2008
Experiments in Mobile Social Networking
In this paper we consider a mobile ad hoc network setting where users of Bluetooth enabled devices meet and communicate opportunistically as when people meet in a cafe, or researchers meet at a conference.
We focus on the problem of building an ad hoc social network from the opportunistic contacts based on users connections in human social networks and shared interests. Our approach distinguishes itself from other mobile social software by removing the need for a central server to conduct exchanges, by focusing on the transitive closure of relationships, and by leveraging existing online social networks to decide whether an exchange is desirable.
The ad hoc social network also provides an incentive for users to collaborate in opportunistic forwarding.
We present MobiClique, communication middleware based on social interaction.
We discuss three applications: mobile social networking, epidemic newsgroups and asynchronous messaging.
We implement MobiClique on smartphones and describe our experience with 28 users at a networking conference. Despite the usual experimental hazards, MobiClique was successful at building a local social network and delivering more than 300 user generated messages over 3 days through multi-hop epidemic communication.
The tech report for this work is available here. This paper has been submitted to CoNEXT 2008 on July 7, 2008.
May - August 2007
SMS Control Channel for Mobile Systems
The Short Message Service (SMS) is one of the most ubiquitous wireless technologies on Earth. Each year hundreds of billions of messages are sent, demand continues to grow, and competition between cellular providers is driving prices down. These trends create practical opportunities for the use of SMS in mobile systems. In this paper we present the design and implementation of an SMS-based data channel, or SMS-NIC, that is lightweight and runs on multiple mobile platforms. Through integration with an existing mobile platform, we show that the SMS-NIC has little operational overhead and provides efficient, reliable transport for large messages send over the cellular network, where message losses frequently occur.
More details on the SMS data channel can be found in this paper.
CS 648 - Database Systems Implementation
This course required the implementation is several complex features in the PostgreSQL database engine.
- Implementation of prefix key compression in B+ trees indexes.
- Implementation of symmetric hash join operator to replace Postgres's current hash join implementation.
- Extension of Postgres's query optimizer that allow it to consider not standard operator orderings.
January - April 2007
GPS Tracking
This project is a collection of PERL scripts that sample the current location, and upload the coordinates to a file or database on the Internet. The coordinates can then be viewed using the Google Maps API. This project was evaluated during a 2200 km trip around Ontario.
More pictures of this project in action
Performance Evaluation and Analysis of Delay Tolerant Networking
Wireless opportunistic connections are the primary mechanism for transferring data between disconnected nodes, such as vehicles, remote sensors, or village kiosks in a delay tolerant network (DTN). Opportunistic connections may last from seconds, as in the case of a rapid drive-by, to several minutes. During this short connection window, it is important to maximize data transfer between DTN nodes. We study the wireless transfer performance of the DTN reference implementation which is the most widely used DTN implementation today. Based on characteristics of devices used in DTN deployments, we identify some parameters affecting opportunistic data transfer. We test our hypothesis through a series of experiments and show that the principal performance bottleneck is the CPU. However, performance can be improved by further parallelizing DTN. We also found that the choice of DTN bundle size affects performance by a factor of up to 60.
This paper was co-authored with Hossein Falaki and has been accepted by the Mobisys 2007 MobiEval Workshop in Puerto Rico.
Log-Flood
The KioskNet project is heavily dependent on the stability of the Delay Tolerant Networking (DTN) bundle protocol reference implementation. In the event of a failure to DTN or higher layer applications, we require a means to collect debug logs. This set of scripts is designed to collect logs from each node in a KioskNet deployment, flood logs across the DTN, and store them on a central server. Acknowledgement messages are then flooded across the network to delete logs from each node.
More information on this small project can be found at here.
September - December 2006
Enhancing Mobile Content Delivery Using Multi-NIC Mobile Devices
Reliable, efficient and affordable content delivery is a fundamental component to any ubiquitous computing environment. In the absence of WiFi coverage mobile users have very few cost effective options; when they do have coverage, TCP throughput is limited by long round trip times. In this project I consider the problems associated with prefetching data to buffered access points to maximize throughput. I present an architecture that facilitates tracking mobile devices, forwarding their requests to a geographically local access point, and provide location based services.
This project was motivated by the simple scenario illustrated in the following figure. A wireless device enters wireless coverage at time 0 and leaves coverage at time t (seconds). Data transfer to the wireless device during t is constrained by both the wireless data rate, b, and the backhaul data rate, B (bits/second).
Typically wireless access points are served by a backhaul connection such as DSL (5 Mbps). Current 802.11g access points support up to 54 Mbps. In this case we have:
B << b
If wireless access point had the capacity to buffer requested data, the bottleneck imposed by the backhaul connection can be reduced or even eliminated. While within coverage a wireless device could retrieve data at the maximum possible data rate.
Following is the high level architecture of this system:
Most of my time was spend developing the Framework for Enhancing Mobile Services (femos) server and not on documentation. Never the less, here is the paper I wrote to satisfy academic course requirements.
May - August 2006
Research in Motion Limited
While employed at RIM I worked on several projects including:
- Infrastructure support for the BlackBerry Pearl
- Architectural performance research and development for the BlackBerry Internet Service (BIS) Core Engine. The details of this work have not been publicly announced and are patent pending.
E-mail over OCMP
This project was an implementation of an e-mail service built on top of the Opportunistic Connection Management Protocol (OCMP). I called this application omail for Opportunistic Mail. On the client side, the omail daemon is implemented as a milter (sendmail filter). On the proxy side, the omail daemon scans the local /var/mail directory. E-mails are compressed using gzip before entering the OCMP directory API.
More information on configuring and installing omail is located here
One Handed Input Method
I implemented a prototype for a one handed input method invented by Michael Goodgoll. The prototype was written in Java and supports input in English, Telugu, Hindi and Tamil. The design of the prototype has allowed Michael to implement "language modules" for 28 languages (as of Nov, 2007).
September - December 2005
CS 452 - Real-time Programming
Development of an embedded real-time operating system. The operating system is a micro kernel based on send-receive-reply. It is a clean little kernel that I am quite proud of, but I have not found a use for it. This project was done jointly with Ville Koskela.
CS 456 - Computer Networks
In this course I developed a network simulator to test the behaviour of different link, network and transport layer implementations. Development of the simulator was spread across three class assignments. By the third assignment, the transport layer, over half the class was building off my stable link and network layers, (which I think is cool).
January - September 2005
CS 454 - Distributed Systems
Development of a highly concurrent asynchronous middleware library. This library is highly redundant and stable under tremendous load. It is a beautiful piece of work, but again, I have found no use for it.
Blue Coat Systems, Inc
I spent last coop work terms at Blue Coat Systems. Most of my time at Blue Coat was spent developing software for the Spyware Interceptor network appliances.
Texas Hold'em
I developed a tool to "assist" me while playing Texas Hold'em online. Aside from some UI issues, it is a useful piece of work :-) Someday I might upgrade it to support multiple concurrent games.
Financial tools
I developed a series of tools to manage my financial portfolio and perform technical analysis. Most of this work has become standard within most online brokerages. It is periodically updated whenever a major discount broken changes its commission rates.
January 2003 - December 2004
Blue Coat Systems, Inc
My fifth coop term was spent at Blue Coat Systems. Most of my term was spent developing software for the Director management appliance.
VoiceGenie Technologies, Inc
I spent my third and forth coop terms at VoiceGenie Technologies in Toronto. They have since been acquired. At VoiceGenie I was responsible for load and performance testing of their telephony (both PSTN and VoIP) Media Platform. Although it was a testing position, most of my time was spent developing applications and scripts for automating as much work as possible. Before leaving VoiceGenie, I had developed almost all of their load test infrastructure.
January - December 2002
Human Resources Development Canada
My first two coop terms were spend at Human Resources Development Canada. About half of my time was spent extending the functionality of an open source AI chatter bot called AliceBot. To my knowledge this work went nowhere, but it was a lot of fun. :-) The rest of my time was spent as the resident PERL/CGI guru.






