Reflecting back on the semester…
My semester with the TWC can really be broken up into three parts: getting up to speed, the Talk Tracker, and the Wine Agent.
The first part of the semester was really all about getting accustomed to the Tetherless World Constellation, the technology, and research in general. After getting past the sea of paperwork, I had to find my niche within the TWC. As we all know, the TWC covers such a wide range of areas, so I was of course overwhelmed with the amount of projects and new technology that was thrown at me. Eventually, an email looking for someone to develop the user interface for the Android Wine Agent caught my attention.
I began working with Evan, who kindly helped me start to make sense of it all. He pointed me in the right direction to some useful readings such as the Mobile Wine Agent journal paper, RDF Primer, OWL guide, Ontology Development 101, and he also told me about the Android Development Website to get acquainted with creating Android applications.
I spent the next few weeks setting up the Eclipse IDE, Android SDK, and the Android Development Toolkit (ADT) plugin for Eclipse and creating some sample projects to become accustomed to creating Android Applications. These sample projects introduced me to the the Eclipse IDE (which I had never worked with before) and Android development principles such as Activities and Intents, the Android Manifest, Views, Google Maps APIs, Android Virtual Devices, debugging, and countless other concepts.
After experimenting with sample projects, I finally began attempting to recreate the Mobile Wine Agent. I began by creating a tabbed structure similar to the iPhone/iPod touch version. The first tab I began to pursue was the Restaurant tab. The Restaurant feature of the Wine Agent entails a map with locations of restaurants with data available for those restaurants. I implemented a Map View and I learned how to create interactive map markers from geological coordinates. When a user clicks on one of these map markers, an HTTP query is made to get some data about the restaurant and it is shown in the dialog box. This was implemented as a temporary test until actual data could be made available.
It was at this point when Evan introduced me to the Google barcode library zXing (pronounced “Zebra Crossing”). The zXing library uses the Android’s camera to get barcode information. The idea was to use this to scan the barcodes of bottles of wine to either get or add information about wine. I was unable to compile the library and since it was not a priority, it’ll have to wait. This is a feature that could be easily added later on and I look forward to working with this library more in the future.
The next step was to start exploring Social integration. I first started with Facebook. Facebook actually has an Android Facebook SDK which after obtaining the correct API keys I was able to utilize to login and post and request data.
It was at this point in the semester that I was presented with what seemed like a simple side project. Evan and I began working on a new Android/iPhone application known as the Talk Tracker intended for the International Semantic Web Conference (ISWC). The application’s purpose was to use the available Semantic data to aid in creating a schedule of events and to provide information about papers and events at the ISWC. There were going to be three main components: a map of the building, a search for events (workshops, presentations, etc.), and a scheduling feature.
I first began to work on the map feature. Initially, the feature was supposed show you where you were in the building and verify your room location. We had a map of the building and the geological coordinates for the venue and the individual rooms (although the actual accuracy of the coordinates was not able to be tested beforehand). I was able to get the GPS coordinates from the phone which was a good start. I was initially hoping that I could overlay a picture of the venue onto the Map View, but unfortunately after many lost hours of trying, this was not possible. Evan was able to find some open source code to interact with an image similar to the interaction style of the Map View. Another unforeseen challenge was determining the bounds of the rooms. The room coordinates were given as four points and the bounding box could easily become a bounding hourglass without the proper checking.
The next step I began working on was searching searching for Events. SPARQL queries and asynchronous callbacks were used to retrieve the conference information. There were two ways to search: by keyword or by a date range. Searching by date range brought you to a tabbed view between Workshops and Conferences within that range. Selecting a Workshop would present more information about that Workshop. Selecting a conference would bring up a list of presentations. Selecting a presentation would display the title, list of authors, abstract, and the list of keywords for that presentation. Selecting the author would display more information about the author and selecting the keyword would do a search for other events that share that keyword.
Creating that interface was not easy. As seen in a past blog post, there was an issue with passing objects (which had to implement Serializable) between intents. Also, there were a few bugs in the SPARQL queries that were either causing fields to be missing or no results.
The scheduling feature was not even started due to a lack of time. Ideally, the scheduling feature would keep track of the events the user would like to attend.
Since we only had ~2-3 weeks to develop it, the project was unfinished. Although not complete, Talk Tracker was far from a failure and it has great potential to be adapted for future talks. If nothing else, I gained a lot of experience and learned some useful concepts that will be utilized for the Mobile Wine Agent. One of the planned features that was not implemented due to time constraints was a hybrid data service. The hybrid data service would act the same but would incorporate caching. A major issue at conferences is the lack of internet connectivity/bandwidth so trying to make queries to a database from a mobile device would be too slow to be useful. Having a cached version would allow users to still be able to use the application without internet connectivity.
Research really should continue on this project. Not only does this project make use of semantic technology, it’s also a practical tool (even if its just for internal use within the TWC). Professors, faculty, and students in the TWC go to conferences often to present research throughout the year and an application to aid in creating a schedule of events would be very valuable for getting the most out of these conferences.
So after the conference, I began to resume my work on social integration into the Wine Agent by investigating Twitter. I decided to use the java Twitter library Twitter4J because of its support for Android. Twitter4J also requires an oAuth library as well, so I decided to use the recommended SignPost-Oauth library. I am currently having some issues retrieving the access token but hopefully I can clear this issue up soon.
Recently, we’ve received some exciting news regarding the Mobile Wine Agent. There’s a possibility that it will be gaining some national recognition in a few months with some of the wine enthusiast magazines. Evan has assembled a team of students to make sure that the three versions (Android, iPad, and iPhone/iPod Touch) of the Mobile Wine Agent will be ready. Over this Winter break and into the beginning of next semester, we will all be working hard to meet the deadlines we’ve established to get the Mobile Wine Agent. Evan will be working on reasoning, Philip will be working on porting the iPhone/iPod Touch version to the iPad, Yu will be investigating GPS in the context of Semantic Web, and I will be working on creating the Android version of the application.
Overall, my first semester with the TWC Undergraduate lab has been excellent. Patrick and John have done an amazing job keeping the lab organized and informed. I’ve really learned a lot about Semantic technology over the past few months. My biggest criticism (besides not having enough pizza meetings) is the lack of common projects between the undergrads. I know Cameron and Philip worked on a few demos at the beginning of the semester, and now Phillip is part of the Wine Agent effort. By not working on common problems, we’re losing a great opportunity to collaborate, talk through ideas, share backgrounds, learn from each other, and brainstorm. Maybe next semester, there could be a collaborative semester long project that all the undergrads work on together, or hopefully more collaboration will just occur naturally when the Xbox arrives and the space becomes occupied with students.
I look forward to working on the Wine Agent for Android over the next few months. I will do my best to keep this blog regularly updated on the status of the project.
If you’re reading this, it must mean you either had a lot of time or you skipped to the end…