Skip to content
working on that thing you asked about
working on that thing you asked about



@denisix @tempezen @phamtec @christophehurpeau @StandardResumeSponsors @AdrienGiboire @maraisr @dshaw @OussamaRomdhane @Jtalk @shawnharmsen @smcelhinney @wuweiweiwu


@mjackson @Vets-Who-Code @eslint @PeterDaveHello @tatianamac @sdras @vaidehijoshi @nzakas @gr2m @lynncyrin @zkat @hzoo

Hi My name's Jordan, and I've gradually mutated over the last decade into being super obsessed with open source, backwards compatibility, and finding ways to balance what I feel are ethical obligations to all users of projects I interact with, with the very real problem of time management, burnout, and work/life balance.

I've been a part of TC39 (the committee that writes the specification for JavaScript) since 2014, and I've been an editor of the specification since 2018. I've been heavily involved in the node community for as many years, and I've gradually created (but mostly inherited or been gifted) a decent number of open source projects. I persist in trying to maintain them all with maximal back compat, the strictest adherence to semver, and the greatest respect for users.

Projects I Maintain

Standards/Communities I Contribute To

this includes participation in working groups, committees, meetings, general issue triage, etc

How Sponsorship Helps

Although open source is a huge part of my life, it's not the most important part - I have a spouse, kids, and a dog; bills to pay; and I also try to give back to the wider community.

Sponsorship helps fund domains, travel, but also other sponsorships


  1. JavaScript Style Guide

    JavaScript 98.8k 19.2k

  2. Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

    Shell 43.4k 4.3k

  3. ECMAScript 5 compatibility shims for legacy (and modern) JavaScript engines

    JavaScript 6.9k 944

  4. A querystring parser with nesting support

    JavaScript 5.5k 506

  5. Tracking ECMAScript Proposals

    11.4k 455

  6. 1
    While attempting to explain JavaScript's `reduce` method on arrays, conceptually, I came up with the following - hopefully it's helpful; happy to tweak it if anyone has suggestions.
    ## Intro
    JavaScript Arrays have lots of built in methods on their prototype. Some of them *mutate* - ie, they change the underlying array in-place. Luckily, most of them do not - they instead return an entirely distinct array. Since arrays are conceptually a contiguous list of items, it helps code clarity and maintainability a lot to be able to operate on them in a "functional" way. (I'll also insist on referring to an array as a "list" - although in some languages, `List` is a native data type, in JS and this post, I'm referring to the concept. Everywhere I use the word "list" you can assume I'm talking about a JS Array) This means, to perform a single operation on the list as a whole ("atomically"), and to return a *new* list - thus making it much simpler to think about both the old list and the new one, what they contain, and what happened during the operation.

Contribution activity

August 2020

Created a pull request in tc39/ecma262 that received 7 comments

Editorial: remove unused %AggregateErrorPrototype% intrinsic

This is non-normative since it is not a function, and nothing uses it in this or any other spec. It was mistakenly added in #2040.

+0 −11 7 comments

Created an issue in angular/angular that received 5 comments

Seeing something unexpected? Take a look at the GitHub profile guide.

You can’t perform that action at this time.