Volume 12, Issue 38; 01 Nov 2009; last modified 08 Oct 2010

With a scanner and some Python, I'm an enthusiastic convert to Evernote.

I first tried Evernote more than a year ago. It seemed interesting, especially the ability to extract text from uploaded notes, even handwriting. It's not performing traditional OCR, but it does build a list of likely words in each note. That's enough to make search quite useful.

Here we see a match for “America” in my barely legible scrawl captured by JotNot:

Even though this all seems pretty cool, I never really used it very much. Part of the problem was that I didn't seem to be putting very much into it. If you've only got six notes, you don't need folders or tagging or clever search to find them.

A few weeks ago, Michael Mealling pointed out that one way to fix the data problem was to scan documents directly into Evernote. That turned out to be an excellent suggestion.

For example, I've had a manilla folder of articles torn from magazines in a drawer in my desk for ages. The threshold for getting torn out and shoved in that folder was pretty high because, let's be honest, if I put too many things in that folder, I'll neither remember what's there nor be able to find it if I do remember.

Twenty minutes with a scanner and suddenly I've got something that I can tag, categorize, and search painlessly. What's more it's something I have with me on my laptop or my phone or anywhere I can get to a web browser: it's not in a folder in a drawer thousands of miles away (as my desk is this week, for example).

Of course, then I had a much bigger problem. I am very, very reluctant to put my data in your application if I can't get it back again. Repeat after me: no roach motels. I wish Evernote every success in the world (I'm even doing my part, to the tune of $45/year, to keep them around), but it's not hard to imagine a future in which I've come to rely on them as a repository of important information only to discover some Thursday afternoon that they've gone away or lost all my data or otherwise left me high and dry.

To their credit and my relief, they have an API. It's not the sort of RESTful Web API I've come to expect from these sorts of services, but that's ok. It's published and documented and claims to support Java, Perl, PHP, Python and Ruby out of the box.

A few short hours of hacking and a few hundred lines of Python and I had a backup tool that gets back everything I put into Evernote and an XML representation of the search data. What more could I ask for?

(If you're interested in trying my backup script, you'll need to go through Evernote support to get your own API key and configure a few lines to indicate where you want the files stored, but after that it should work for you too. YMMV, of course.)

My script creates an XML representation (natch!) of the details returned by the Evernote APIs. Eventually, I'll probably decide to fix things so it doesn't create a single potentially enormous file, but it doesn't much matter to me at the moment because I turn around and drop this into the MarkLogic Server instance that I use for my local PIM data.

Now, instead of collecting only the very most interesting articles I see and losing them in a folder, I collect anything that interests me even slightly, confident in the knowledge that I'll always be able to find it, and everything else, with ease. Alongside those articles, you'll find scanned business cards, recipes, specifications, notes, photographs of whiteboards and napkins, receipts, and a host of other interesting words and ideas that I've captured as the universe pushed them past me.

Pretty sweet.


First, simply love the info and tone of the article. The "let's be honest" line just cracked me up.

Second, I am about one of the least hardcopy-humans I know. I lose everything. Even sizable checks made out to me. It is so bad that I've been using http://www.PayTrust.com for my bills for years. All important mail goes there. I can tell you how much my water bill was in June of 2007 if you wanted to know.

Finally, I'm anxious to use your script but I really want a 2-way script. It's fine if it just gives up on a conflict, but I'd like to be able to modify notes on my computer using whatever editor I choose (OK, Emacs) and then have them pop up in EverNote.

Is there any chance you've written two-way sync tool in the year or so since you published this? I don't really want XML files but I feel comfortable scripting that work on my own but don't want to dance with the EverNote API.


PS: Sorry about the name thing. I make a mention of my personal finance management and just don't want that to be too easily snagged by Google and used against me when I'm 80.

—Posted by <Name Withheld To Hide From Google> on 04 Oct 2010 @ 08:29 UTC #

No, sorry Name Withheld. The APIs support two-way syncing, I believe, but I'm content to use the existing clients or web to do updates. That said, if you're comfortable with a little scripting, I don't think it would be too hard to do what you want.

Regarding the name thing, well, you just barely squeaked under my spam threshold. If that comment was constructed to post a link to the bill paying site, congratulations, you got me :-)

—Posted by Norman Walsh on 04 Oct 2010 @ 08:53 UTC #

I am trying to setup your backup script on my Ubuntu machine but I can't find what python package provides thrift.protocol.TBinaryProtocol Any thoughts?

—Posted by Brock on 04 Feb 2012 @ 11:41 UTC #

I think those came with the Python Evernote API bindings.

—Posted by Norman Walsh on 09 Feb 2012 @ 12:16 UTC #