Tag evernote

An Inside Look at Type Ahead Search in Evernote

One of the first things I worked on when I joined Evernote was designing and implementing Type Ahead Search for the Evernote Mac Client. This is how it looks today:   Most of us, at some point, have faced the challenge of not knowing what exactly to search for when confronted with a search box and a blinking cursor. We introduced type ahead search to improve this experience for our

Continue reading…

Building Apache Thrift on Mac OS X

If you follow this blog, you’re already well aware that the Evernote API is built on the Apache Thrift framework. Our client SDKs give you everything you need to use the API, so most developers don’t actually have to understand much about Thrift. From time to time, though, somebody wants use our Thrift IDLs to compile their own client-side code. Most of our engineers use Macs, and we’ve found that building the Thrift

Continue reading…

Protecting your data: the broken drives edition

In our blog post “Evernote’s Three Laws of Data Protection”, Phil touches on some of the measures we take to protect your data and our goal of being a trusted place for it. There is much more we do, so I wanted to talk a bit about an important aspect: what happens when hard drives fail? You have probably read stories of people buying previously owned computers and finding they

Continue reading…

WhySQL?

When we describe our overall service architecture to smart people who have been involved in other big services, the two most common questions are: Why is your structured data stored in SQL databases instead of something like [big-data, web-scale, No-SQL platform X]? Why are you running your own hardware instead of hosting Evernote in [cloud service provider Y]? These are both valid and interesting questions. I’ll start with #1 and

Continue reading…

So API Together: Evernote and Thrift

When we started to plan the Evernote service in 2007, we knew that we would need to support both “thin” clients (like web browsers) and “thick” synchronizing clients on the day that we launched. This forced us us to think about remote protocols and client APIs before we built any web GUI, rather than waiting a few months to staple an API onto an existing web service. Our application forced

Continue reading…

A Digest of Evernote’s Architecture

Let’s get things started with a coarse-grained overview of the physical makeup of the Evernote service. I won’t go into a lot of detail on each component here; we’ll aim to talk about the interesting bits in separate posts later. Starting at the top-left corner of the diagram, all stats as of May 17th, 2011 … Networking: Virtually all traffic to and from Evernote comes to www.evernote.com via HTTPS port

Continue reading…