Gil started programming at the age of 13 with a ZX81, moving on to Turbo Pascal and eventually joining the army as a software engineer, where he spent six years as an instructor. He then transitioned into industry roles at companies like Wix and Microsoft.
Gil enjoys mentoring because he finds it fulfilling to help people understand complex concepts in a structured and logical way. He believes in starting with context and motivation before diving into the details, which helps learners grasp the material more effectively.
Gil's approach involves breaking down the problem step by step, starting with the basics and gradually building up to more complex ideas. He emphasizes the importance of understanding the context and motivation behind each concept before diving into the technical details.
Gil dislikes transpilation because it adds complexity to the development process, turning it into a pipeline. He prefers to avoid transpilation and instead uses JSDoc typings for type checking, which works well in most cases.
Gil prefers polyrepos because each package can have its own independent configuration, making it easier to reason about and modify. In contrast, shared configurations in monorepos can become overly complex and difficult to manage, especially at scale.
Gil suggests updating dependencies only when developers modify a package, using a script to automate the process. This approach ensures that dependencies are kept up-to-date without the need for a shared configuration across all packages.
Gil considers the Node.js ecosystem unparalleled in terms of productivity and the scale of NPM, which has enabled developers to iterate and share code at an unprecedented level. While it has its problems, NPM remains an amazing success story.
Gil believes ESM is crucial for the future of the Node.js ecosystem because it standardizes module systems, reducing the mess created by the coexistence of ESM and CommonJS. He sees ESM as a necessary evolution to simplify the ecosystem and improve developer experience.
Requiring ESM modules in CommonJS can lead to issues with top-level await, as CommonJS cannot handle async imports. Additionally, allowing CommonJS to require ESM could delay the adoption of ESM across the ecosystem, which Gil sees as a negative.
Node.js loaders can be used for transpilation (e.g., TS-node), mocking modules in tests, and handling different protocols like HTTP or loading from zip files. They provide a standardized way to intercept and modify module loading behavior.
Gil Tayar) is a Principal Software Engineer at Microsoft), developer advocate, and conference speaker. Gil’s contributions to the Node.js ecosystem include adding support for ECMAScript Modules in Node.js to Mocha and TestDouble. He joins the show to talk about his history in software engineering, monorepos vs polyrepos, the state of JavaScript, and more.
)
Josh Goldberg is an independent full time open source developer in the TypeScript ecosystem. He works on projects that help developers write better TypeScript more easily, most notably on typescript-eslint: the tooling that enables ESLint and Prettier to run on TypeScript code. Josh regularly contributes to open source projects in the ecosystem such as ESLint and TypeScript. Josh is a Microsoft MVP for developer technologies and the author of the acclaimed Learning TypeScript) (O’Reilly), a cherished resource for any developer seeking to learn TypeScript without any prior experience outside of JavaScript. Josh regularly presents talks and workshops at bootcamps, conferences, and meetups to share knowledge on TypeScript, static analysis, open source, and general frontend and web development.
Please click here to see the transcript of this episode.)
Sponsorship inquiries: [email protected])
The post Node.js and the Javascript Ecosystem with Gil Tayar) appeared first on Software Engineering Daily).