I've built my first Mac app: Ephemera, which offers two-way
Instapaper.com sync for your ebook reader.
Here's its story, my motivation, and what it does.
Ephemera is neither endorsed by nor affiliated with Instapaper.com or Marco Arment. I'm just a huge fan.
How it came to be
A few months ago, in Oct or Nov 2009, about an hour after getting my Kindle 2 1 I just knew that it would be the perfect device to read my news on.
I was happy with my Cybook gen3 so far, but once I got the Kindle, it became clear that it could've been quite a bit more. The whole K2 experience is superior in every imaginable way; the hardware feels more solid, the UI is much better laid out and consistent (a big plus), its font is lovely… I could go on and on. And for whatever reason, I've never developed the wish to read my news on the Cybook.
So chalk up another one for the Kindle for inspiring me.
Anyways, back then I usually caught up on my news using iPod touch/iPhone,
using the wonderful Instapaper app, which (unsurprisingly) is a frontend for the even awesomefuller Instapaper.com.
(If you haven't heard of Instapaper yet, go on, check it out real quick, I'll wait. -- Back? Cool.)
Well, how to get my Instapaper content onto my reader, then?
Application development on the Kindle was out of the question, and still is.
(Yes, I know about the upcoming SDK, but what I've read so far doesn't appeal to me in any way; bandwidth and hardware limitations and somesuch.) The next best thing would be a tool running on the Mac, then. Unfortunately, I knew squat about OSX development.
Hence, I've decided to keep it simple, and wrote a little Ruby script I would manually run whenever I wanted to sync the device. Worked well, aside from the manual part. It's just too much work! Still, it was nice to see my Instapaper news on my reader with its "super-easy on the eyes" e-ink screen. Quite early in the process I've added 2-way synchronization: when I would delete an article on the device, it was automatically archived at Instapaper.com during the next sync. Even nicer!
Still, too much manual work.
By end of 2009 I've decided I'd go into OSX programming for a change. I had a clearly defined need, there wasn't a tool for it, plus I'd never built an OSX app before -- that's enough motivation. So the first three weeks of the year I dove into MacRuby and Cocoa, just grazing Objective-C 2, all while building —drumroll!— Ephemera.
Oh yeah, my first-ever Mac app! :D And within the time limit, too -- my goal was three weeks from start to finish ("finish" being "have something you can show to other people without completely embarassing yourself"), and I've made it. (BTW, meeting tight goals is awesome, don't underestimate the effect.)
Enough of the inane banter, what is it?
Ephemera will comfortably synchronize your ebook reader with Instapaper.com via USB. It works with the Amazon Kindle, Sony readers and pretty much any device capable of reading HTML, Mobipocket or EPUB files, which should cover quite a bit of ground.
It will fetch your news as single articles or in Instapaper's premade bundles
(Mobipocket & EPUB). Personally, I prefer the former. I can read an article, delete it on my reader, and during the next sync it'll be archived on Instapaper.com.
Being the lazy guy, I've also implemented a feature I call "Plug, Sync & Go":
If you want it to, Ephemera will automatically start up, sync, and then unmount your reader when it detects the USB connection. My idea was that you'd configure the app once, and then just have it work -- by simply connecting your reader.
I've tried to make it as simple and comfortable as possible to get your news onto your reader. For example, the main window has only two buttons, one of them is for opening the preferences, and the important other one you don't even have to press most of the time. So I think I've succeeded.
It's not perfect yet, of course, as there's still a lot of work to do, and I do have a number of ideas I'd like to implement. But I mean, look: I've set up a support site and a Twitter account, so you know I mean business,
At the moment Ephemera runs on 10.5 and up 10.6 3, 64 bit Intel only. I don't think I'll add 10.4 support, but I'm working on the 32 bit version (MacRuby is giving me quite a bit of flak on that front).
UPDATE 2010-02-16: I've released v1.1 today, which runs on all Snow Leopard machines.
Ephemera was made possible by MacRuby. MacRuby sits on top of Objective-C, can be embedded & compiled, which means you can build self- contained applications.
I've started using MacRuby v0.5b2; last weekend v0.5final was released. They say it's not ready for production yet, but I laugh in the face of danger,
quite manly actually, because that's how I roll. ;) But yes, it's still a bit rough around the edges (for example, as mentioned before I couldn't get the compiled 32bit versions of the app to work, so I've filed a ticket and hope someone will look into it).
Also, due to the lack of void pointer support there were issues with accessing the OSX Keychain (i.e. it didn't work), so I had to work around that. I've managed to do that; on the upside I know now how to bundle Obj-C libraries in
.dylib files which you can then use from MacRuby. (A seperate article on this topic is coming up soon has been written, keep an eye on the MR section of my site if you're interested.)
That being said, if you're feeling a bit adventurous, take a look. It's quite a remarkable and exciting project. Writing OSX apps using Ruby is fun and enjoyable once you get the hang of it. Also, there are brave men working on getting MacRuby going on the iPhone.
UPDATE: Forgot two links to good non-web resources -- you might want to check out Peepcode's "Meet MacRuby" screencast as well as PragProg's "Programming Cocoa with Ruby" book. The latter is a RubyCocoa book, but the overall principles of app development apply to MacRuby as well.
That's all, folks
Anyways, that's the story. I know it's not an app for everyone, but it's been a while since I wrote something I myself would use on a daily basis, and that counts for something. I've showed it to a few people, and some of them actually replied and helped me testing (thanks Mike, Norm, Bernhard & Mat).
The overall feedback was very positive, which is encouraging, to say the least.
Yes, and I'm proud of myself. In the eternal words of Chuck Noland 4:
"Look what I have created… I have made fire!"
Ephemera for Mac.
Insert link here to glowing Kindle 2 review I've yet to write. ↩
The place to be for bracket fetishists! ↩
Snow Leopard only at the moment, as I've ran into some finer points of 10.5/10.6 compatibility settings in Xcode. Le sigh. ↩
From the movie "Castaway", which I've never watched. Nonetheless, iconic scene. ↩