This page is a list of techniques and sources for all the parts I pulled together to build the GeeQE iPhone application. The application is mainly a project that I am using to experiment with new features so documenting the parts will hopefully help others who want to do something similar. One of the first interesting notes is that I found myself using Stack Overflow itself a good bit to answer some of the challenging questions I had while doing the development. If you are more interested in the development just skip to down past the screen shots.
First I would like to give a big shout out to Stack Overflow for opening their data. You can download a full data dump each month and that is where I started on this project.
As a guide for some potential features for the application I used the mobile iphone optimized meta thread and the original iPhone application question.
Check out the main GeeQE project page for a list of features and some screen shots.
There are a number of parts that I used to put together the application. I’ve split them out here into server side, iPhone libraries and graphics resources.
Server side
- MySQL database with schema that closely matches the data dumps using a simple Ruby script to parse and load the XML. For more information see fast XML parsing with ruby. Check out the latest database schema I’m using as well as the script to load the dump XML.
- Dump data is augmented with data from user profile pages using Hpricot and Mechanize. The script that loads the extra information can be found here. Find out more about how I went about using Hpricot and Mechanize as well.
- Sphinx is used for post searches. I have detailed the PHP Sphinx integrations as well.
- An API was created on top of the database and search index that returns JSON
iPhone libraries and techniques
- JSON library
- Async request library ASIHTTPRequest
- Async image load on table cells similar to this example
- Use of interface builder for 98% of interface including table cells
Graphics resources
Potential future features
- Ability to watch posts, tags, searches and users
- Alerts via push messages on watches
- Saved searches
- Allow posts to be clipped for offline viewing
- Add explore area for tags
- Include more profile detail information
- Add navigation in posts and profile details to navigate between search results
- Integrate podcast
- Add voice command searching