On Joining Walmart Labs

and becoming a node core contributor

I announced (officially) today that I'm leaving Urban Airship to join Walmart Labs as a node core contributor. I'm super excited for the opportunity to help our community grow and build a better Node for everyone. As part of that, I'd like to take a few minutes of your time (and several pixels of your monitor) to introduce myself, and briefly talk about what this position is, and what my plans for the future are.

Who am I?

I am a former Djangonaut originally from Lawrence, KS, currently residing in (occasionally) sunny Portland, OR. I've been a long-time fan of JavaScript and node, and in my role at Urban Airship helped grow a team of JS developers from just myself to 8 people; while documenting best practices & working to evangelize modular JS at the company. In my free time, I've worked extensively and exclusively on Node projects: I added physics to voxeljs, built a module system for GLSL called glslify, built one or two streaming parser libraries, wrote a hand-rolled inflate implementation for js-git, implemented the git packfile protocol once or twice, wrote linters, css selector compilers, dev tools, template languages, helped to organize a user group, and have gotten to work alongside really exciting, passionate, intelligent developers. I'm really into parsing / ASTs, control flow graph generation, static analysis, programming language design, the small module ethos, webgl, performance, game programming, drawing comics, etc. While I don't have a Computer Science degree, I have been programming as long as I can remember.

The idea of building video games got me into programming in high school, but what kept me excited about programming was the idea that by looking at an existing problem from a novel perspective you could come up with unexpected, delightful solutions. I keenly remember reading about binary spatial partitioning in "Masters of Doom" as a teenager, and how transformative that knowledge was for me — an application of a familiar data structure (binary trees) to an unfamiliar place (three dimensional scenes); evoking the delightful frission of drawing outside the lines.

The node community embodies this to me: it actively encourages this sort of anarchic, iconoclastic experimentation. I want node to continue to excel at welcoming all perspectives, to continue to encourage experimentation and rapid iteration, and I want it to be the most approachable framework for doing so — through documentation, tutorials, transparency, and community support. Whether you're a fan of promises or callbacks, Grunt or Gulp, Browserify or Require.JS, Express or Hapi, one thing is true of all node devs: your passion and drive to create is infectious, and words can't express how happy I am to get to be a part of that.

What is this position?

I'll be working on behalf of Walmart Labs (creators of the hit framework, hapi, and many other great packages) and you, the community, on node and the projects surrounding it. I will not automatically get commit access to these repositories — like any other community member, I will have to continually submit work of consistent quality and put in the time to earn the commit bit. The existing core team will have final say on whether or not I get the commit bit — which is as it should be!

That said, here are my goals going forward from this point. The standard disclaimer applies here: plans are not set in stone, the map is not the terrain, etc; but I want to give you all an idea of my thought process going forward:

My goals as a node contributor in the near term:

  1. Familiarize myself with the various codebases (libuv, npm, node, v8, http-parser).
  2. Overcommunicate. Try to publish a .plan-ish post at least once a week detailing what I'm working on.
  3. Earn that commit bit.
  4. Become an expert at debugging node: go spelunking through core dump post-mortems, become a dtrace wizard; and in the process of doing so, synthesize this information into documentation for the rest of the community.

My goals for node in particular:

  1. Have the best resources for helping developers get started, and make them discoverable.
  2. Help grow the userspace ecosystem of packages.
  3. Improve the operations story for deploying Node in production.
  4. Engage with the JavaScript community as a whole, and embrace the coming changes in ES6 in a deliberate, responsible fashion.

My first day will be June 2nd. I'm excited to get started, and you'll be hearing a lot more from me — watch this space and follow me on twitter! Thanks to Walmart Labs, my fellow developers at Urban Airship, and to you, for having me!