I'm Daniel Ehrenberg (he/him or they/them), an engineer 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 Bloomberg as a software engineer. Previously, I worked at Igalia, an open source consultancy, which counts Bloomberg among its clients.
To contact me:
- Email: dehrenberg@bloomberg.net / microdan@gmail.com / littledan@chromium.org
- Matrix chat: @littledan:matrix.org (Preferred DM platform)
- Bluesky: @littledan.dev
- Mastodon: @littledan@hackyderm.io
- Signal/WhatsApp/SMS/POTS: +1(415)549-6836
- LinkedIn: @danielehrenberg
- Facebook: @ehrenbed
- Instagram: @ehrenberg.daniel
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.