We're hiring node.js engineers

We're doubling down on node.js at PayPal and all teams are now using it. If you're interested in working with node at scale reach out to me on LinkedIn and let's chat.

Using node.js at PayPal

Presenting at MLOC

How we adopted node.js at PayPal for our web application tier: video from MLOC 2014 and blog post. It was a great crowd with some awesome lunch conversations!

Release the kraken

Presenting at Node Summit

PayPal's adoption story of Node.js, how we created kraken.js, and how we used it to bring node to an enterprise sized company: video from Node Summit 2013 and blog post.

Bridging the gaps with dust.js

Dust.js presentation at LinkedIn

How we're using dust.js JavaScript templating at PayPal to accelerate development and bridge the gaps between our node.js, Java and C++ technology stacks: video from LinkedIn tech talk and blog post.

Dust.js in C++

It started as just a hack, but over the weekend I wrote a C++ library which uses V8 to render dust.js templates on the server. The hack has now turned into reality and we're using a variation of it at PayPal to transition our legacy pages from XSL to dust.

The repo and instructions are at jeffharrell/DustJsCpp.


int main(int argc, char **argv) {  
    if (argc < 2) {
        printf("Usage: %s template \n", argv[0]);
        return 1;
    // Build out a data model
    map<string, string> model;

    model["name"] = "Jeff Harrell";
    model["app"] = argv[0];

    // Render
    return DustJs::render(argv[1], model, onRender);

JavaScript buttons for PayPal

The HTML markup for PayPal's buttons has always bothered me. It's static, cannot be updated dynamically and leaves a lot to be desired when it comes to a clean integration. I unofficially took this on as a side project and created a JavaScript variant of the buttons, which gives you a rich featureset when it comes to integration, but in a simple API.

You can find the repo at paypal/javascriptbuttons along with a simple walkthrough.


<script async src="paypal-button.min.js?merchant=YOUR_MERCHANT_ID"  
    data-name="My product"