Your latest Node.js content, news and updates in one place.

Meet Anna Henningsen - Core Contributor & Engineer

Title: Senior Full-Stack Engineer

Company: MongoDB (formerly NearForm)

Programming languages and skills: C++, JS/TS, Python, x86 Assembly, Shell

Languages: German, English, intermediate Turkish

Years of experience: 15 programming, 7 professionally

List of talks:

Favorite customer issue to solve: I don’t really work with customers in the traditional sense… One thing I remember having a lot of fun debugging was that dns.setServers() with an empty servers list used to be able to make Node.js crash :)

Favorite personal project: I’ve written an implementation of the Levenshtein distance computation in C++ that makes use of some special CPU features when they are available, that was fun to write.

Favorite enterprise project: I think this would be something that Worker threads in Node.js qualify for.

Favorite song: The Ladder Song cover by Lorde

Hobbies: I play soccer and go on longer bike rides.


Let’s start with a little introduction, who are you and what do you do?

Hi, I’m Anna and I work for Node.js, that’s pretty much it laughs. I’m also on the Node.js Technical Steering Committee (TSC), the group that makes decisions and is responsible for the Node.js Core project.

How did you get involved in Node.js to begin with?

Around 2012 a couple of people from highschool wanted to work on a project and asked me to get involved, and that’s where we started using Node.js. I had a problem with the software we were working on and it was easier to write a patch of Node.js to figure out what was the problem rather than trying to debug my own code.

What were you building at the time?

It was a stock trading website game where people could simulate a stock trade to some degree.

That was your first contribution to Open Source?

I had maintained Open Source libraries before, but it was the first big Open Source project.

Let’s go back a little bit, how did you get started with JavaScript in the first place?

JavaScript is a different story, I think I was 12 years old, and I have coded on this old commodore 128 computer from the 80’s, with very old versions of Microsoft basic. It was possible to build things that way, and I wanted to build programs for actual computers. JavaScript was a nice language to start with, because when you wrote code for the browser you can very easily see immediate results, and you can show other people.

So you started programming when you were 12, did you pick it yourself or it was something teached in school?

I was mostly interested in seeing how things work and it made me wonder, can I build these things that other people have built? The commodore 128 computer came with a reference manual that had the complete language listed as a printed book, and that was something I could get started with very easily.

Where does your interest in computers come from to begin with?

I didn’t have a lot of friends at that age but I had a natural curiosity about these things.

What would you say is one advantage of working with Node.js Core?

One thing about the Node.js ecosystem is that it feels very natural to contribute to Open Source; if you have a relatively self-contained part of your code, you can put in a package and publish it to npm, that seems natural to me, so I did that a couple of times.

One thing that was particularly helpful to get into Node.js core later was maintaining bindings to liblzma lib-z which is a compression library, it uses a .xz format, so that made it very easy to contribute to the zlib parts of Node.js

What were the steps to maintain a library to get to the TSC of Node.js?

The first step was to do that patch to Node.js and after that I built a copy of Node.js master locally and I decided to use it as a Local Node.js developer version. At some point there was some change that was made in the buffers internals of Node.js, and because I was using Node.js master, I actually caught a bug with that before it was released, which was really nice.

At that time I didn’t understand much about the code. I did a PR like “hey I have this test case if you want it and it’s failing” and after that I got more involved, I started contributing to the zlib parts. I started watching leadership records.

Did you go to college?

My first full time job was the side project I was building with the people from highschool, so it was not a paid job. I was still a student, I finished my bachelors degree in math and I am working full time now.

Wow so you study Math… what interested you in Math?

Well, I started studying computer science for a year, and at the university I had the opportunity to take the math classes for math students, which had some extra stuff. I enjoyed that and the people a bit more, I felt comfortable. I didn’t want to do any hardware stuff.

Do you apply any of your math knowledge in your daily job?

No laughs. I have had a problem where I have to solve the system of linear equations and that was the most complex thing, and that’s just highschool math.

What did you wanted to be when you grew up as a kid?

I can’t remember but apparently I told my parents I wanted to be a gardener because flowers grow on their own. I might have had some misconceptions there.

That’s so sweet, do you still garden these days?

No, not really but I have been getting more plants and I still want to keep more in my apartment.

What was the most exciting project in Node.js that you ever worked and why?

It’s not actually a Node.js feature, it’s related to the Node.js tests, we try to avoid to talk to Internet servers because they are out of our control, I wrote a small mock DNS server for Node.js just for the test suite, and that was a fun project.

What was the thing that made it fun?

It was something that you don’t get to do usually, writing an implementation of a protocol that just works.

Would you say that learning new things and solving interesting problems is something that you enjoy?

Yeah, one thing that I like more than implementing features is actually debugging, you know, taking a puzzle and solving it, that’s a very fun thing to do.

What has been your least favorite thing in Node.js?

Today I was debugging a memory leak related to the implementation and API which is super specific. I feel that’s one of the parts in Node.js that has been way over-engineered, and I dislike that. Usually when I don’t like something about Node.js I can do something about it, that's one of the very nice things about Open Source Software, but with any API that has been exposed, it’s not possible to change it and it can get quite complex.

You focus 100% on the Node.js project, what’s the main project you are working on right now?

I don’t have any bigger things, my manager James Snell is working on the QUIC implementation for Node.js and I support him with that, mostly I’m taking care of old things that happen inside the core repo and little things that I think could be improved.

Everyone that we have interviewed so far makes it sound so easy to get involved in Node.js for an Open Source perspective. What would be some advice that you can give to someone that is considering to start out in this area?

Whether that is easy or not depends on where you are coming from, because if you want to contribute a little to Node.js I’m sure you will find something if you want to. But if you actually want to contribute for a longer period of time, more consistently, you really need to have some time to invest in there and patience for long discussions.

Most of the open issues on the Node.js core issue record are open because if there is not enough information and somebody has to put the work in to figure it out.

Do you need to have a passion?

If you don’t have a passion or if you don’t get paid to do it, you will probably lose interest after a while.

What’s the thing you enjoy the most working on Open Source?

I enjoy working with the people of Node.js core, I also enjoy very much that it enables me to go to conferences and share the things that I’ve learned.

What do you enjoy about speaking at conferences?

Sharing my knowledge especially when it is something I’m excited about, or that I find interesting and that I think other people might find interesting as well, and definitely the community aspect of it. Meeting people, talking to them over things that are completely unrelated to tech, and sometimes about tech things. A lot of ideas for features that could be brought into Node.js came from talking to people in conferences.

How many conferences have you attended?

I have a list that I keep, including meetups I have given 21 talks so far, from 2016 until now.

The most fun talks I’ve given are about live coding implementing features in Node.js.

What keeps you motivated to work on Node.js?

The community and the technological challenge. Having the opportunity to improve the developer experience for thousands, maybe millions of people, that’s a very unique thing, and I think it is worth a lot.

Node.js core provides a lot of technical challenges, you can always go from one area to another if something starts to bore you. I have contributed to V8 and Libuv, there are so many parts of Node.js that you can contribute.

Is there anyone in Node.js that you admire a lot and have you had the opportunity to work with them?

It was helpful to see some of the trans people that were around in Node.js core at the time, I felt comfortable. When I started it was mostly npm people and I generally look up to them, but i didn’t end up working with them a lot.

Do you feel that the community was welcoming enough for trans people, and did you feel that it was worth the time investment?

Node.js has had its drama in the last couple of years, I feel Node.js has made big steps towards being more inclusive in a lot of situations. And I feel pretty comfortable where we are right now.

How long have you been working with NearForm?

Since October 2017, it’s my first full time job.

Thank you Anna for this wonderful interview, hopefully more people can get inspired and contribute to Node.js and good luck in your new job at MongoDB!

Read More
Meet Adrian Estrada - VP of Engineering @ NodeSource

Title: VP of Engineering

Company: NodeSource

Languages and skills: Adrian has experience with many languages, frameworks and tools including: Visual Basic, C, C++, Java, ASP, PHP, GraphQL, Electron, React, Vue, .Net. Learning Rust, MySQL, Postgres, MongoDB, Firebase, InfluxDB. But he is strong in JavaScript, Node.js and PHP.

Languages: English, Spanish, Portuguese (intermediate), Japanese (beginner).

Years of experience: He started programming in 1997 fixing computers, and got his first paid programming job in 2000. He started using Node.js in 2012.

Contributions to the community: Adrian is widely recognized among colombian developers because of his work with communities, including leadership and organization al support he lends to the GNU Linux Group in Medellin, MedellinJS, JSConf Colombia, Colombia Dev, Pataconf, NodeConf and CampusJS. He has also contributed to Node.js Core.

Mentorship: He has mentored many people in Colombia’s developer community. His approach to mentoring focuses on helping his mentees solve practical problems.

List of talks:

Favorite customer issue to solve: A few years ago, a large company in the travel industry had a memory leak because of a login setup. It was quite a complex memory leak and he helped to detect it and solve it.

Favorite personal project: He likes the pomodoro technique, so he created a Pomodoro Timer for personal use. Is a web App built in Electron.

Favorite enterprise project: Recently NodeSource published ‘Try N|Solid’, a zero-config way for users to experience the power of the Node.js Enterprise Runtime (N|Solid). This simplifies the way users can get started with the N|Solid Console.

Favorite song: Innuendo by Queen

Hobbies: Yoga, diving, reading, spending time with the family and video games.


What did you wanted to be when you grew up as a kid?

I wanted to be Indiana Jones laughs. I liked the idea of being an archeologist who goes on exciting adventures. I wanted to travel, learn about different cultures and discover historical places.

So did you run around the forest pretending to be Indiana Jones when you were young?

Absolutely. When I was a kid I used to live close to the forest. My friends and I were definitely runningaround exploring, hunting for treasures and making our own adventures.

After that what did you want to be?

After that I wanted to be an astronomer. I was very interested in space, constellations and the universe.

Would you say that your interest in science and astronomy was different from your peers at that time; were you a ‘nerdy kid’?

I have always been the nerdy kid laughs, but it's a little different in Colombia. You don't get bullied for being smart or for getting good grades.

The concept of 'being nerdy' didn’t exist back then. As long as you weren’t shy and liked to play, kids would be able to make friends easily.

How did you go from wanting to be an astronomer to being a programmer?

I knew what I wanted to do from the moment I touched a computer for the first time when I was 12 years old. I became obsessed with the machine. I started studying the operating system: back then it was DOS 5.0, with Windows 3.0, I think.

It wasn’t my computer. My family didn’t have enough money so I was using my grandmother’s machine. Things got really bad when I started learning how to format and install new stuff, assemble and disassemble it. I broke and fixed that computer so many times! My uncles and aunts got mad at me because I was breaking it all the time.

Then our city got a local network. We had a dial up connection and I used the phone a lot. My family ended up being mad about that, too. laughs When I was 15, I started fixing computers for people and even made some money from it. Before graduating from high school, I was already working on fixing computers.

That’s how I started to get into programming. My first language was Visual Basic and I built basic windows programs like a calculator and things like that.

At university I started programming in C and C++. I also taught a bit, teaching about computers during my time there. Half-way through university I started programming full time, and got my first job coding in Java 1.4 coding desktop applications running on Windows and Linux.

Who was your first customer when you first started fixing computers?

My first customer was my uncle’s friend. I was 15 at the time. He had an old computer that was breaking all the time, so my uncle referred me and it was the first time I was paid to fix a computer.I got quite a bit of money for it and spent it all on computer games. laughs

Did you ever have people working for you while you were fixing computers?

Absolutely. At some point I joined a local company. They had 3 stores fixing computers, and they had a department for technical people. I joined the department as the most junior staff member but 2 years later I was given an opportunity to run that department. That said, I was only 19 years old and managing guys that were much older than me wasn’t easy. I learned a lot, most of it was trial and error.

What happened next?

After that I decided I didn’t want to focus on fixing computers anymore and I got a job as a programmer. It was part time, but it was already paying more than the one I was managing people in, because programming at that time was very well paid, especially Java. This part time job allowed me to keep studying and allowed me to focus on programming, only.

Did you end up finishing university?

No, I was somewhat disappointed with the program. Here in Colombia we don’t really have software engineering as a degree. There is a mix between development and computer science, math and network engineering. I wanted to focus on Software Engineering, but I was forced to take all those other classes, so I dropped out. At that time I was already working full time as a programmer and I was making good money.

Studying on top of that was tough. I had to put in a full day as a programmer and then go home to finish my work for school. I ended up realizing that I was learning more applying myself to my work and projects than what they were teaching me in the university. At that time, the industry moved a lot faster than the education system as well. For example, I learnt Java in my free time, because it wasn’t offered at university. I realized that what the industry needed is not what university was teaching me.

So you were a Java developer, how did you get into Node.js?

I did not only program in Java. I did web-development in ASP, .net, PHP which ultimately led me to using JavaScript. I did a lot of front end work. I started working with Node.js just as a hobby when it was just in version 0.8. That was like 8 year ago now.

Do you like working in the front-end?

I like them both, I consider myself a full stack developer, I don’t see a reason why one would hate one or the other. When I started this wasn’t a thing. You were just a developer and you had to do the whole system. So I just kept doing the same.

Even today, I happen to do a lot of front-end development. I work with React but I especially love Vue and some side projects I keep working on.

When did you start getting involved with tech communities?

When I was in University, I was part of the organizing team of the first Linux group in Medellin, where I met Julian Duque. We created a group that was promoting Linux in universities. We organized a lot of installation parties, where someone brings their computer and we install linux for them. That didn’t end well because the group lost its primary focus and at the end they were just meeting to party laughs.

After that I disconnected from communities for about 5 years and then Julian Duque and I connected again to organize MedellinJS. It is now the biggest JavaScript community in Colombia and possibly one of the biggest of Latin America with 6 thousand members.

Let’s talk more about your community involvement because you are quite the figure in tech in Colombia

After the Linux community and Medellin.js, I joined JSConf Colombia as an organizer for the conference’s second edition. To date, there have been 6 editions of the conference and I have organized 5 of them.

Julian moved to the U.S and I took over the leadership of Medellin.js for about 2.5 years. In that period I created something called CampusJS: we were teaching JavaScript in universities and doing special events for them. I also teached at the CodeRise initiative where we helped kids in vulnerable conditions to learn how to code in JavaScript. Helping children build projects in JS for the first time was absolutely amazing and very rewarding.

We also started to do more meetings at Medellin.js one with talks and another one with a practical workshop. I ended up having to pass the baton to someone else because I ended up being short on time. Right now Mafe Serna who also works at NodeSource, is the leader and she does a great job. After that Julian Duque, myself and other community members saw the need for a dedicated Node.js conference in Colombia, so we created NodeConf Colombia last year.

What about Pioneras Developers?

Julian and I created an event focused on helping women to learn JavaScript. We created a small group called NodeSchool which started with only 5 women. It later became Pioneras and they expanded to all software technologies. It is now the biggest community for women in Colombia with +1500 members across 6 different cities.

So you have been involved in creating many communities, events and education-opportunities. Do you have an underlying philosophy on the role that technology has in social change?

Yes, I’m always looking first to share knowledge to empower people, so people can learn and grow the ecosystem. I also enjoy teaching. It's really nice when you see someone starting out in a community to later go on and become leaders themselves with good jobs and interesting responsibilities.

You did all things while you were working full time?

Yeah, I have donated a lot of time to communities over the years.

And what motivated you to do this?

I just like it. I really enjoy teaching people, especially things I’m passionate about. My motivation was never job security. I already had my own company back then and I was working 12 hours a day like crazy.

I wanted to be involved in communities and I wanted to enjoy a more relaxed lifestyle so I quit the partnership that I had founded. I lost money there but I gained time, freedom, and I even started earning more money because I started working for an american company.

Going back to your childhood, you were given the opportunity because you had a computer near your household. Ultimately this ended up being the cornerstone of all the other opportunities you later managed to convert into successes. Did that influence you to maybe try and give opportunities to others as well?

It was definitely about creating opportunities for others. I know I can do something to help and provide opportunities to people so I do what I can to transform the city.

How is Medellin now compared to when you started out?

The city has completely changed. We used to be the most violent city in the world, but right now, we are an example for transformation. Different articles now talk about us as a hub for technology. It’s nice to have been part of this transformation. Medellin has turned into a real destination for tech and innovation. That makes us really proud.

Since you are part of the people that started this transformative movement, do people still recognize you?

I hate to say it but yees, people do recognize me. I don’t think I can ever get used to being recognized like that. laughs

Now, I understand you also had your own business. Is that right?

Yeah, and not just one. I had a few initiatives to create my own stuff. Then I was fixing computers and I created my own company. At the time I was too young and naive. I got bad deals and I didn’t make enough money but in the end it was successful because we had a lot of customers. I had 5 employees.

My second company was a little bigger. We were 12 people and we were doing software for big Colombian companies. I did not make a lot of profit, just enough to pay the salaries and after 3 years I realized that I have been working like crazy and it wasn’t growing. I ended up quitting and looked for a job in the U.S where I could easily make more money.

Is this how you started working for U.S companies?

I started out as a freelancer, then I got hired for a media company, wedding fashion, doing PHP and JavaScript, and after that NodeSource.

How did you end up working for NodeSource?

Joe McCan came to speak in the first edition of JSConf Colombia. He fell in love with the city and the community and he wanted to hire local talent and create a team. When Joe created the company he asked Julian Duque to work for NodeSource. Julian recommended me but I was very comfortable in my other job, so it was a hard decision. In the end I wanted to work in Node.js so I joined the company.

I started doing NSupport and I was the first member of the team. And then I ended up leading the team of 4 people. Now I am their VP of Engineering.

What do you enjoy the most working at NodeSource?

The culture. The culture of being involved with the community, highly technical work focused on Node.js. I love the runtime and we focus on that.

What would you say to a 15 year old person that wants to start learning programming? How could you inspire them?

You can become whatever you want to, if you are willing to put in the effort and be committed. You can definitely achieve your goals. This has been true for me and many people I know.

How did you deal with the impostor syndrome? We are all learning to overcome it but sometimes it is holding us back. How did you learn how to trust yourself and your skills?

It is an everyday thing. At least for me and for a lot of people I know. Sometimes you start comparing yourself to other people and it can be overwhelming.

One thing that helps me is to remind myself that they might know things that I don’t, but I definitely know other stuff that they don’t know about. I have done a lot. I experienced a lot. There is value in my perspective, my experience as well as my skills.Everything can be learned. Its about how you use your experience to make decisions on what to learn next. The rest is just curiosity and a willingness to learn more.

Thank you Adrian, I’m inspired just talking to you. After this talk I will register a new company, start a meetup and transform a city. laughs

Read More
Screen Shot 2020-07-14 at 12.53.39 PM.png
Need to Node – Volume 68

In this volume of Need to Node, you can find the latest news on Node.js, our announcement of and some information about our Open JS presentation ‘Behind the Scenes of NodeSource Node.js Binary Distributions'.

Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!

What’s New in the Node.js Project

  • Node.js v.14.5 released The most notable change is an update to Node’s V8 engine to version 8.3, which is primarily a performance and bug-fix upgrade and an initial experimental implementation of EventTarget which provides a DOM-style API for objects in general.

Awesome Articles, Links, and Resources

One Last Thing...

If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at @NodeSource to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!

Read More
Behind the Scenes of Node.js Distributions

If you are installing Node.js in Linux to use it in production, there is a big chance that you are using NodeSource Node.js Binary Distributions.

In this talk you can find the process in which NodeSource Node.js Binary Distributions is updated, how new versions are supported, the human and infrastructure process, and some limitations of maintaining the channel. Also and most importantly, how the community can get involved with this project.

Read More
Need to Node vol. 67

In this volume of Need to Node, you can find the latest news on Deno, a recording of our webinar ‘New and Exciting Features to Land in Node.js version 14’ and ‘JavaScript features to forget’.

Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!

What’s New in the Node.js Project

Awesome Articles, Links, and Resources

  • Deno 1.0 Released. Some of the most important features include:

    • First Class TypeScript Support without additional tooling
    • Promises All The Way Down - When Node.js was created the concept of promises or async/await in JavaScript didn’t exist yet, but now and after a lot of work it is fully integrated. Deno was created taking promises into account from the beginning.
    • Rust APIs - Deno is built in rust.
    • Stability, npm-less, security-first, JavaScript runtime. For some applications Deno may be a good choice today, for others not yet. It all depends on the requirements.
  • TypeScript 3.9 Released including a variety of editor and performance improvements, also tweaks to inference and Promise.all.
  • Second-guessing the modern web. It is possible to solve things in a better way than single page applications? Find out in this article! By Tom MacWright
  • JavaScript features to forget. New features arrive all the time, replacing and improving old ones. The introduction of ...args in ES6 replaced the arguments object, we don’t use document.write() anymore or join() to concatenate strings and template literals are much better. Find out more here!
  • Build A REST Service With Fastify. Fastify is a high-performance HTTP framework for Node.js. Fastify focuses on speed, and it’s inspired by ExpressJS and HapiJS. Check out this article to find out how to build a restful service using fastify.
  • ES2020: Everything You Need to Know there are very cool new features like: String.prototype.matchAll, Dynamic import(), Promise.allSettled, Optional Chaining among others. Check it out!
  • Hardcore Functional Programming in JavaScript - by Brian Lonsdorf

One Last Thing...

If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at @NodeSource to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!

Read More
Meet Trevor Norris - Core Contributor & Engineer @ NodeSource

Title: Principal Product Software Engineer

Company: NodeSource

Languages and skills: C/C++, JavaScript, Node.js, Linux, Git.

Years of experience: 14 years of programming, 8 years with Node.js.

Contributions to the community: Core contributor to the Node.js project for 5 years. He stepped back in 2017 to focus on NodeSource product-related projects, but now he is back to contributing to Open Source. Recently he opened a pull request to libuv that you can find here.

Mentorship: Trevor has mentored other people when he was a core contributor to Node.js. Right now he hasn’t been mentoring as much, but is willing to do so. He will never refuse if somebody asks for help.

List of talks:

Favorite customer issue to solve: Many years ago, Netflix brought in Trevor as a consultant to help with performance issues they had with their website's A/B testing. Together they came up with a solution that outperformed the previous implementation in both throughput and resource usage. Part of the solution they developed was touched on briefly in a talk given by Alex Liu about scaling A/B testing.

Favorite personal project: Trevor is working on a Planetary Motion Simulation that you can find in this repo. The simulator is based on certain parameters (for example, the mass and the temperature of the sun) and will tell you stable orbits for planets. This project uses Node.js, native modules, and C++.

Favorite enterprise project: Trevor likes to work with Event Loop analysis in Node.js. His work has led him to a patch in Libuv for a new metric. The patch is intended to predict the state of an application using only Event Loop related metrics.

Least favorite kind of work: Fixing timing bugs that can’t be reliably reproduced.

Favorite song: Bassnectar - Reaching Out

Hobbies: Playing D&D with his kids, drawing, speed cubing and of course programming.


What did you want to be when you were a kid?

Good question. I don’t know. When I was a kid, I remember wanting to beat Mario Bross :D .

laughs That's an interesting dream!

Yeah, when I was 7, I almost did it! Just to be interrupted by my brother, who turned off the console because he wanted to watch his program. Ever since I wanted to beat the game before I died. laughs

And did you?

Yes, a few weeks ago - 26 years later. I was finally able to do it and it was totally anti-climactic. laughs.

Ok, but in all seriousness: What did you want to be when you grew up?

I wanted to be Cyclops from the X-Men - Smirks more - but that's a dream I don’t think will ever be fulfilled except for many years in the future with the help of advanced technology - but for now, I will settle with being a Node.js developer.

Lol! Can you tell us about your journey from wanting to be Cyclops to becoming a Node.js developer then?

My life as a programmer started in school with three other nerdy friends who enjoyed programming. On the weekend, we carried our computer towers and massively heavy CRT monitors to each other’s houses to play Warcraft II. Of course, setting up our LAN in Windows 95 was no small feat. My first steps had the simple goal of automating away all that pain so my friends and I could get on with our gaming.

What’s your favorite Warcraft character?

My favorite was the human mage. Combining the invisibility and polymorph spell was totally overpowered :D

And what happened to those 4 guys, did they all become programmers?

Three became programmers (including myself) and one a technical document writer. Even though I threw my first lines of code on the weekend with my friends, my story with computers goes way back.

How so? Tell us more!

Ever since I was a kid computers have interested me.

My elementary school had computer courses starting in kindergarten. Even at five years old, sitting in front of a computer felt natural. My future as a programmer was pretty much sealed at that time.

During college, I wanted to try out different fields to ensure that there wasn't something that would be a better fit for my career. After switching between physics, mathematics, and a very short bout with business, I decided to embrace working with computers for the rest of my life.

After embracing my future as a programmer I realized that college wasn't going to help me. So I dropped out.

Interesting! Dropping out of college seems like a big decision. How did you know it was the right move?

My first programming class was learning C++. The teacher had been a professional programmer for years before he decided to start teaching. During the semester, he would explain how what we learned in class would be used in the workforce, and what we shouldn't be doing despite what the textbook said.

On the first day of the following semester, the professor told everyone to write a program using one of the aspects of the language that the previous semester's professor had told us never to use. At that moment, I realized what I needed wasn't a degree but experience. I dropped out that same week.

What happened next?

I got my first job as a Junior Database Administrator. A large part of the roll was handling issues that would pop up from the developer's code. From this, I quickly learned the importance of taking responsibility for my code and not expecting someone else to handle my laziness. Otherwise, it may cause them to quit.

In the end, I didn't stay there long. I noticed some decisions were being made that would adversely affect the product. When I brought up the future issues that would be faced by making those decisions, I was ignored. That roadblock made me consider how much of an impact I had at the company and helped me realized there wasn't anymore for me to learn in that position. So I decided to quit.

Dropping out of college, quitting your first job. How did it feel to make these brave choices?

There's no reason to stick around and suffer if I believe the situation won't work out. Since I had just started gaining experience, I felt that continuing with either of those situations would only harm my ability as a programmer. Fortunately, plenty of jobs cared more about experience and potential than if I had graduated from college.

So what happened after you quit your first job?

I worked for GSI, where I programmed websites for big companies like Ralph Lauren and Toys R Us. These companies would send us illustrations for how they wanted the website to look. They required a pixel-perfect match for all supported browsers, and we supported IE6 through 8 and Firefox. Those were dark times in web development.

In my spare time, I worked on my open source projects. Mozilla saw my work and reached out. I eventually ended up getting hired and working on their metrics team doing data visualizations.

Mozzilla! That’s pretty impressive

Yeah, it was fun. My work involved some Node.js which I really liked. There an opportunity to focus more and more on it. I had gotten a little burned out on frontend work. I wanted to try something new at that time and my manager was supportive of that direction . After a while, I continued to contribute to the project and ended up becoming Mozzilla’s official Node.js spokesperson.

Oh that’s how you ended up working with Node.js!

Yeah. It was around that time that Dan Shaw - co-founder of NodeSource - reached out to me to work for what was known then as the “Node Firm, (before it became NodeSource). I was hired to teach and consult. Once of the accounts was Netflix and I helped them with an architecture review. Then NodeSource was created and Dan convinced me to stay.

Since then NodeSource has gone through a few evolutions. I believe I am the last person remaining from the company’s founding team. This was rather exciting, especially at the beginning. I was only supposed to work on Node.js Core and I did that for a while. ButI stopped working on open source when I landed a patch in Node.js Core that burned me out. This patch was a big feature that ultimately led to the asynchronous local storage API feature that was recently released.

What is the best and most challenging thing about working with Open Source Software?

One of the best things about working in open source is that you get to work on what you find most interesting. It is easy to stay involved in open source because you can choose what you want to work on. But it's not always easy. Sometimes there are endless loops of conversations with other contributors on why something is done in a specific way. That can be exhausting. Dealing with different ideas and points of view can be more challenging than the technical aspect itself. I would say that the overhead of generating and maintaining collective consensus in a community that is limitless in size can be a big challenge.

So you stopped working in Open Source for a while?

Yes. I was asked by Joe McCann to start work on a new project that would improve predictive scaling. The basis of it was to predict the state of the application through observations of the event loop. That was the seed for a lot of the research resulting in what we now call the responsiveness metric. Recently, I opened a pull request in libuv to add a metrics API.

It partially exposes what is required to perform all the calculations necessary for the responsiveness metric. We're hoping to be able to reveal this in more detail in the near future. I believe it will become a game-changer in a world of worker thread support.

You mentioned burnout. How do you know when it is time to change focus?
Sometimes it is better to stop and work on something else, rather than risking burning yourself out. Recognizing that point is a matter of experience. Every project has motivating and challenging aspects to it.

What is the most satisfying thing you have worked on at NodeSource?

Probably my work on the responsiveness metric. I was allowed to dig in deep and research how event loops worked. During my research, I ran thousands of tests and was able to accumulate some surprising results. It will be even more satisfying when we the opportunity comes to unveil all this work.

Can you explain in simple terms what the Capacity Metric is?

The responsiveness metric predicts how soon the application will need to scale before reaching capacity. It takes into consideration many aspects other than just CPU. Now that Node supports worker threads, a process running at 300% CPU usage doesn't imply that it's in a critical state. Our old ways of scaling are no longer valid.

What’s your favorite personal project to work on?

My favorite personal project calculates orbital trajectories of fantasy star systems. The desire to write this came after reading many fantasy and sci-fi novels that ignore even basic repercussions of the worlds their writers create.

So I thought it would be cool to create a simulator to make predictions about these star systems. By putting in simple information (like how many planets are in the system, the size of the star or the target surface temperature of a planet) the simulator will calculate whether stable orbits can be maintained. Eventually, I plan for it to calculate differences in surface temperature during the planet's orbit.

It probably seems counter-intuitive to write a physics library for fantasy novels, but it's relaxing to work uninhibited on random projects like this.

What’s your favorite fantasy novel:

Thank you Trevor for this interview! It was great and we hope it can inspire other developers out there...

Read More
Need to Node – Volume 66

In this volume of Need to Node, you can find the latest news on Node.js’s version 14 Release, Diagnostics in Node.js and The Cost of JavaScript Frameworks

Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!

What’s New in the Node.js Project

  • Node.js version 14 Released — Woo-hoo it’s finally here! Node.js v.14 now becomes the current release line with it becoming a LTS (Long Term Support) release in October. It’s recommended to keep using Node.js version 12 for now. Some of the most exciting features include:

    • Diagnostic Report goes Stable
    • V8 upgraded to V8 8.1
    • Experimental Async Local Storage API
    • Improvements to Streams.
    • Experimental WebAssembly System Interface (WASI) to support future WebAssembly use cases.
    • Removal of Experimental Modules Warning (but it still is experimental).

Awesome Articles, Links, and Resources

One Last Thing...

If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at @NodeSource to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!

Read More
  • 1 / 2