Flashcards (mobile)
A simple iPhone flashcard site. The flashcards are meant to help with learning words on a mobile phone rather than the traditional physical cards; I wanted to take the cards with me at all times so my phone was a natural choice. All along this project has really been an experiment of trying some different technologies and ideas to implement the flashcard functionality to aide with learning words for the GRE exam.
In the current incarnation I wanted to improve the flashcards web app usability by making it available while offline and take advantage of the swipe gesture to improve moving between cards. As well as taking advantage of features that are usually found in an iPhone application rather than a web site, I decided to changed the looks and feel so it would feel more like a native iPhone application, but without having to build a device dependent application in Objective C. Most the modern smart phone browsers are supporting HTML5 features, which includes local storage/database and cache manifest. With these features it is possible to create offline capable web apps that can support multiple devices and platforms without the need to develop individual apps for each platform (e.g. iPhone, Android etc). A lot of the device specific features such as detecting the touch interfaces and accessing to geo-locations are available through javascript.
Another technology I wanted to get to grips with better during this web app was the javascript language as I had recently been reading the Douglas Crockford's "Javascript The Good Parts" and JQuery in Action. The iPhone look and feel was implemented using the jQTouch javascript plugin library to JQuery
The server side part of this application is implemented in Ruby on Rails; this was chosen out of the pure interest of trying the Rails framework and learning Ruby. In the last release of Flashcards I simplified the server side code by moving a lot of the functionality to the client (browser). This made the application more responsive to use without the need for a round trip to the server each time a new word was requested. Now all the server side provides is a single html page as the UI and a set of JSON APIs for the flashcards card.
To make this feel even more like a native application on the iPhone navigate to gre.plasticcube.com in the iPhone Safari browser and 'Add Bookmark to Homepage'. This will open the web application without the address bar being present and it will truly look like a native application.