I'm Daniel Ehrenberg (he/him or they/them), an engineer at Igalia working in various standards bodies, to improve JavaScript, WebAssembly and the Web Platform. I want to make computers more open and easy to program for everyone.
I work at Igalia, an open source consultancy, and do most of my standards work on behalf of Igalia's clients. If you're interested in collaborating, please email me.
To learn about my work, you can watch some of the talks I've given about it. I like to give talks in various groups of JavaScript developers, to explain how TC39 works, encourage people to get involved, and learn more about different developers' needs.
- Conference talks
- JSConf EU 2018: Native BigInts in JavaScript: A Case Study in TC39
- BrazilJS 2018: TC39 and elegantly handling missing values in JavaScript
- WorkerConf 2018: Community-driven language design at TC39 (Pipeline operator)
- WorkerConf 2019 : JavaScript Class Features: A case study in TC39
- dotJS 2019: TC39: How we work, what we are working on & how you can get involved
- Node.TLV 2020: BigDecimal: Avoid rounding errors on decimals in JavaScript
- FullStackFest 2019: Standardizing JavaScript Decorators in TC39
- HolyJS Moscow 2020: The future of JavaScript modules: JS module blocks and native bundling
- NodeFest Japan 2018: Private fields and methods: Coming to JavaScript
- Alibaba D2 2019: Let's work together on the future of JavaScript through TC39
- InfoQ GMTC 2019: JavaScript WeakRefs and TC39 standardization
- Meetups/podcasts
- TC39er
- TalkScript 32: # is the New _: Private Fields in JS with Rob Palmer
- dominicode: Etapas de una propuesta en el TC39 con Daniel Ehrenberg
- WTFront: TC39, el presente y futuro de Javascript
- BarcelonaJS: TC39: We want your help making the next JS
- JavaScript Israel: JS Module Blocks and Fragments
- Various TC39 panels, e.g., at JSConf EU 2019
- JSKongress 2018 and 2019: Deep Track
I've worked on a number of proposals in TC39, the JavaScript standards committee, including:
- Finished standards (Stage 4):
- BigInt: Arbitrary-precision integers in JavaScript
- Class fields and private methods
- RegExp features: named capture groups lookbehind assertions, Unicode property escapes
- WeakRefs: Weak references and finalizers
- Top-level await: Asynchronous module evaluation
- Late-stage proposals (Stage 3):
- Import assertions and JSON modules: Support for multiple module types in JS
- Realms: Multiple isolated but synchronously interacting globals in JavaScript
- Temporal: New date/time library built-in to JS
- Earlier-stage proposals (Stage 1-2):
- Records and Tuples: Immutable data structures
- Decorators: Extensible classes
- Module fragments and module blocks: Inline modules in JavaScript to improve bundling and Web Worker deployment
I've also worked in other areas of standards, including:
- ECMA-402 (
Intl
): Organized subcommittee and championed several feature proposals - WebAssembly:
- Edited the initial WebAssembly JS API and Web API specifications
- Created the WebAssembly BigInt integration proposal
- Edited the WebAssembly ESM integration proposal
- Going forward, I'm really excited about the Wasm GC proposal but haven't managed to help much yet
- HTML (e.g., integrations of TC39 proposals)
- WebIDL (e.g., formalizations)
In a past life at Google, I worked on Linux kernel/firmware stuff to improve access to SSDs. As part of that, I wrote a popular introduction to Linux AIO and even landed some very basic upstream kernel patches.