Programmer looking for a Programmer for a few jobs
Required Knowledge
Ability to create an iPhone GPS/Accelerometer data logger, and upload to web server.
Additional Info
iPhone application to log data from GPS and Accelerometer. Prioritized requirements below. My iPhone hasn't arrived yet, so I don't know all the ways it works/syncs/etc yet.
Please provide an individual price for each set of priorities (P1, P2, P3, etc), as this may be implemented in phases depending on price. Please also provide a URL to your resume/portfolio/etc.
Timeframe is somewhat flexible, but I'd like to have at least P1 in a few weeks.
You will be expected to deliver to me all code (including reasonable documentation for code and data file format, and basic compiling instructions), and sign a standard "Work For Hire" contract assigning all rights to my company.
Requirements:
- P1) Must be compatible with all versions of iPhone and iPod Touch.
- P1) There may be multiple iPhones running this application simultaneously whose data will be analyzed together, so a configurable device identifier should be included in all filenames and data points. the user should be able to configure this identifier (probably a text name like "iPhone 1", etc.) in a preferences area.
- P1) preferences like the ID should be remembered permanently, although should be able to be changed by the user.
- P1) There should be a simple interface to start/pause/stop the data logger, with a new file saved each time it is started. The data files must be easily findable or synced when connected to main computer. each file should have a unique name starting with the first data/time stamp, something like "YYYYMMDDHHMMSS_DEVICE-ID_data.log".
- P1) the screen should show the current status (running, paused, stopped), and the length of time it has been running.
- P1) Data file maintenance: Please let me know if the user can "mount" the iphone on their computer and manage the files themselves (preferably), or if we need to provide a mechanism for them to delete old files manually through the iphone.
- P1) there should be a button to lock the iphone to prevent accidentally stopping the data logging while running.
- P1) The iPhone also has an automatic lock after a few minutes, right? We should provide an optional preference to temporarily override that timer while this application is in the foreground with either a specific time, or "never lock". The application must continue to log data while the iphone is locked/sleeping, and in background while other apps are running if possible. If locked/sleeping from this application, the application should still be in the foreground when the iphone is unlocked/waked.
- P1) there should not be a limit on the file size or logging time as this may run for hours or more without stopping.
- P1) The data recorded should be a simple CSV with each data point containing the device identifier, an Excel AND MySQL friendly date/time stamp (down to smallest time unit possible: millisecond, etc), all current GPS data (position, speed, etc), and all current accelerometer data (I am not sure what data is available).
- P1) the application must record as many data points as possible. At minimum, 1 per second, but preferably more.
-------
- P2) Ability to configure the number of data points to be recorded per second (or unlimited) in the preferences area.
- P2) Ability to browse, select and upload individual saved data files to a web server. (mechanism TBD: CSV HTTP POST, SOAP, etc). All communications to the web server should be queued properly in the background and keep trying (even after restart) until the web server is reached in case the iphone is temporarily out of range.
- P2) Ability to configure the web server/port in the preferences area. Possibly including some sort of TBD login or authentication information.
-------
- P3) Ability to configure automatic uploading to web server when stop button is pressed via preferences. All communications to the web server should be queued properly in the background and keep trying (even after restart) until the web server is reached in case the iphone is temporarily out of range.
--------
- P4) In addition to storing data locally, create ability to send a live stream of data points to a web server. All communications to the web server should be queued properly in the background and keep trying (even after restart) until the web server is reached in case the iphone is temporarily out of range.
-----------
- P5) create web server code (preferably Ruby On Rails, but could be PHP) to handle receiving both uploaded files and streamed data (in whatever mechanism we decide: CSV, SOAP, etc) and store in MySQL database.