As I write this, Remembary 1.4 is waiting for App Store approval. Now that it has been submitted, I'm ready to talk more fully about some of the new features in this release.
The biggest new feature in Remembary 1.4 is its support for pictures and video. Picture support has been the number one request from users, and it's the one feature that has been most lacking in Remembary compared with many of the other diary apps in the store.
The thing is, I've been pretty unhappy with how most other iPad diaries handle pictures - and I wanted to do something different and hopefully better for Remembary.
Diaries are mostly text. Text doesn't take up a lot of space, and modern devices can process large amounts of it very quickly. Text is also pretty easy to store and manage in a database or even just in files. Media files, such as pictures and (even more so) videos, are the opposite: they're large, use up a lot of memory and CPU, and are often tricky to handle.
Also, almost every case I've seen of a diary app having trouble during an upgrade and corrupting people's diaries has been because of a problem in handling images or changing the way that they're stored - usually breaking down during some kind of processing-intensive data migration.
Remembary came from years of keeping my own handwritten diaries, and has always been primarily about text. I purposefully didn't add image support before now, because it seemed like it would be very difficult to do well, and a serious source of potential data corruption - something that simply cannot happen in a diary app (and I should know).
If you want to add a picture to almost any iOS app, you eventually end up using the Image Picker. On an iPhone or iPod Touch, it's not too bad - it fills the screen with little thumbnails of your device's photo library, and you can navigate around your photo albums to try to find the right picture. On the iPad, it's still an iPhone-sized popover, which seems kind of small and awkward on the big screen. It mostly works, though, and it's quite easy to plug into an app, and building your own replacement would take a lot of work.
However, it really doesn't fit what Remembary is all about. Remembary is supposed to do all of the sorting and filtering for you - if you're looking at Wednesday July 13 2011, you only get the Tweets, RSS items and Facebook statuses from Wednesday July 13 2011. I really hoped that the Image Picker would have some way of filtering by date - or, at least of showing the date that a particular picture was taken. It doesn't do any of that. As far as I can tell, all a programmer can do with an ImagePicker is make it show up and then go away again once a picture has been selected.
Starting in iOS 4.0, Apple opened up direct access to the device's photo library, using a framework called ALAssetLibrary. For something so powerful, it hasn't had a lot of fanfare - probably because it's tricky to figure out at first, and the ImagePicker is good enough for most situations. However, I tried a few things with it (with the help of some good books), and it has turned out to be exactly what Remembary needed.
ALAssetLibrary lets you loop through the device's entire library of pictures and videos and pick out certain values, such as the media types, the photo albums that they belong to, thumbnails, links to the full-sized media, and, most importantly for Remembary, the time that they were taken.
Once I figured this out, the next steps were obvious: every time the user loads a day's diary entry, a background operation kicks in that searches through the Asset Library for any pictures or videos from that day and adds any matches to a list. Once it's done (it only takes a second or so), a 'pictures' button shows up at the top of the entry, which the user can tap on to bring up a list of timestamped image and video thumbnails. Tapping on any of these thumbnails brings the picture or video up to full screen, where the user can zoom into and scroll around the picture, or play the video. You can also tap the arrows at the top to browse through all of the pictures and videos for the day, all in full screen and sorted by the time they were taken.
The image search is fast enough that I don't have to store or manage anything in the app itself. I can just ask iOS to do it for me. I like any technology that handles ugly details for me.
There are a few really great things about this approach:
When I first tested the Photo Library search on my iPad, I got an odd message box that said "Remembary wants to use your location information. Please confirm." It turns out that this is the warning message that iOS displays the first time that an app tries to access ALAssetLibrary.
"Hmph," I thought, "that's an annoyingly misleading message. I'm just getting the pictures - even if they were geotagged, it's not like I'm putting them on a map or anything… - hmmm wait a minute…"
Turns out that the location information in geotagged pictures is really easy to extract, and almost as easy to put into a scrollable, zoomable map.
So, if you have iPhone or a camera with a built-in GPS (or if you like to tag your pictures manually), you now can see everywhere you've been. This is obviously fantastic for tourists - but it's also great for remembering the little things in your life. Having a nice lunch? Take a quick snapshot with your iPhone while you're there - when you're writing up your diary in Remembary, you'll see a pin in the map over the restaurant, and you can tap on it to see what you were eating.
(Also, while I was at it, I figured out how to get location info out of Tweets, too - so those show up on the map as well).
In the weeks since I implemented this mapping feature, it has changed my life. A quick snapshot is all that's needed now to help remind me of something important in my life. My approach to travel has really changed too. Now I know that any pictures (or videos) I take will be part of a browsable media experience, mapped automatically, and tied into my personal diary.
I'm really looking forward to sharing this cool technology with the rest of the world - and hearing how other people use it.
In the end, this has brought everything back to the original idea of Remembary. For people like me who have trouble keeping a diary regularly, it's great to have lots of reminders and context for your day - now with automatic pictures and maps, it's even easier to remember what's happened.