I’ve lived in Israel, Argentina, and Boston, and currently live in San Francisco.

I graduated from Boston University with a degree in political philosophy.

I love motorcycling, sailing, skiing, and traveling.

I like woodworking, DIY projects, and (of course) technology.

My wife and I have a travel blog about our year in Argentina and many other adventures.

more »


I recently joined the engineering team at Good Eggs, building an online market for fresh, local, sustainable food.

Before that, I was a lead engineer at DocuSign.

I have been programming and building websites since 1996. For the last few years I’ve specialized in Node.js and the Javascript ecosystem.

I am passionate about high-quality, maintainable, automatically-tested software using cutting-edge, (preferably open-source) technology.

See my LinkedIn profile.

more »

Blog — March 2014

The new DocuSign experience, all in Javascript

We recently launched The New DocuSign Experience, a reimagining of our primary web application used by 45 million users. The app is built in Node.js and uses the REST API as its data store. We’re proud to have built the entire app on an open-source stack, and plan to share a lot of our code in the coming months.

read »

Blog — Nov 2013

Building a Redis Sentinel Client for Node.js

We use Redis for sessions and for a short-lived data cache in our node.js application. Like any component in the system, there’s a potential risk of failure, and graceful failover to a “slave” instance is a way to mitigate the impact. We use Redis Sentinel to help manage this failover process, and we decided to create a middle tier, a Redis Sentinel client, to handle this failover automatically.

read »

Blog — June 2012

Understanding MapReduce in MongoDB, with Node.js and PHP

MongoDB’s query language is good at extracting whole documents or whole elements of a document, but on its own it can’t pull specific items from deeply embedded arrays, or calculate complex relationships. To do that, MongoDB uses an implementation of MapReduce.

read »