Bluetooth Automatic Data Acquisition and Synchronization Software
In the summer of 2005, Michael Gruen, Erik Goulding, and myself worked on a research project with our computer science advisor, Mark Bailey. Over the course of a ten week project, each of us worked independently, as well as, collaboratively to develop software that allowed a user to synchronize a folder of files between two computers, using a bluetooth-equipped cell phone as the means.
We developed our software on Windows XP using Microsoft Visual Studio 2005 (in beta at the time). In addition, we used two Kensington bluetooth adapters and a Nokia 6230 cell phone.
My part of the research was to design and develop the user interface for the project. After having prototyped various different UIs, I settled for an unintrusive system tray icon and a control panel. In addition to designing the user experience, I also developed a framework to send and retrieve files over Bluetooth using OBEX. As Windows (unlike the Mac OS) doesn't have built in OBEX support, I spent several weeks reading the OBEX specifications to create the classes. Finally, I was also in charge of integrating the various components of our research together into a working prototype.
In December 2005, our abstract for our research was submitted to the Consortium for Computing Sciences in Colleges (Northeastern Region) for consideration. If accepted, we'll be presenting our work at their student poster session.
Abstract
Erik Goulding '06, Michael Gruen '06, and Aram Kudurshian '06
Professor Mark Bailey
Bluetooth-equipped cell phones are increasingly common, affording users with additional connectivity options. With the advent of cameras small enough for use in cell phones, manufacturers have been adding additional memory to store images; however, few people fully utilize this space. We have created a solution that harnesses that unused space to automatically - and wirelessly - synchronize data between two computers. Users, outfitted with a Bluetooth-enabled cell phone, carry the synchronized data with them so no matter which computer they use, they always have the current version of their documents.
Prior to using the synchronization software, the user installs a background application on both of her machines. When launched, the application monitors a designated Watch Folder and places an icon in the system tray that can be used for configuring and interacting with the software. As soon as a paired cell phone enters the proximity of one of the computers, the software prompts the user to begin a synchronization session. Once the user is ready to leave, the files are merged together to create a single synchronization data file which is then sent via Bluetooth to the cell phone. Upon arriving at the other computer, the process repeats itself: the computer pulls the synchronization data from the phone and updates the appropriate local files.
This workflow presents many challenges. What happens if the transfer session breaks? What about the user returning to the same computer twice before synchronizing with the other? How do we minimize the file update time and optimize user convenience while maintaining a small file size? Additionally, how do we minimize user interaction, while ensuring the user still has control over her files? Finally, can we prevent eavesdropping?
We built a prototype that addresses several of these concerns. We spent the majority of our time minimizing user interaction through a cogent user interface, as well as, minimizing synchronization time. The synchronization software, after the initial setup, runs transparently to the user unless authorization is needed. Additionally, the synchronization information sent to the phone can be wrapped into an image so that when it is viewed on a phone, the user can clearly confirm the successful transfer of synchronization data.
Our difference engine compares a new file and an old file and generates a patch file containing only the differences between the two files. That file is then uploaded to the phone for synchronization. Currently, our algorithm runs in Θ(n3) but we are looking to improve efficiency in future work. Moreover, upcoming research will investigate encryption and compression for added security and speed.