It’s Saturday morning, and I’m remotely watching a policeman walk along Goldhawk Road taken by a man wearing a climbing helmet with an iPhone sellotaped to the front. More specifically, I’m at Innocent’s AGM, loitering around to make sure that the headcam we built stays working. And it seems to be so far.
This seems like a good opportunity to talk about what it is, and how it works. In true Really Interesting Group style, it’s one of those projects that isn’t rocket science, but combines a few thing that are “recently easy” (ubiquitous mobile data, easy to develop mobile software) to create something new, and dare I say it, interesting.
You’ve seen Russell’s industrial design, but let’s talk about the software. It’s pretty simple: a custom iPhone app that snaps a photos at an adjustable interval and upload it direct to Flickr. Then there’s a site that polls Flickr and Twitter and interweaves the updates into a stream.
Every time a photo gets taken, we resize it in memory, add the timestamp and location to the EXIF headers, write it to disk, and queue for upload.
Most of the Flickr upload code was ripped out of Noticings, where its proved to be fairly robust. Dealing with variable data reception is the hardest part. For a start, we’re resizing images down to 800×600 at 60% quality. This brings the file size down to about 80KB, rather than 800KB or so that the full size images would be.
The biggest problem I can see so far is that occasionally duplicate images get uploaded. This is because the 3G data connection can timeout out in the period between finishing sending the file to Flickr, and Flickr resizing the photos and returning a successful response. Next time, I’d use the asynchronous upload API, and poll for the state of the previous uploads before continuing.
But you don’t get much chance to battle test these things, and having duplicate uploads is safer than unproven asynchronous upload code.
The battery life was slightly less than we hoped – in a test, the 3GS did a full burn of the battery in 2 hours 50 minutes, whilst taking a photo every 3 minutes and uploading to Flickr, but without GPS. With an external battery pack and the screen brightness set to minimum, we got that to just over 6 hours including GPS, but it’s still going to need charging if the headcam is going to make it all the way home.
Luke has just upped the interval to 1 minute for the duration of the event, so lets hope that the data connection doesn’t lag behind.
We’d like to release the iPhone app for the headcam – it needs some polishing up, but hopefully you’ll see it in the App Store before too long. Climbing helmet and sellotape not included.
And you can follow all the updates during the day on the innocentagmcam.com.