The illustrated guide to Node.js with David Neal === Noel: [00:00:00] Hello and welcome to PodRocket, a web development podcast brought to you by LogRocket. LogRocket provides AI first session replay and analytics, which surface the UX and technical issues impacting user experience. Understand where your users are struggling by trying it free at logrocket. com. I'm Noel, and today I'm joined by David Neal,~ uh, dev, ~dev advocate and Asana content creator. He's here to talk about,~ uh,~ the illustrated guide to Node.js, a talk he's been doing recently. How's it going, David? David: Hey, I'm doing okay. Thanks for having me. Noel: Awesome. ~Yeah, yeah, no, I'm, ~excited. ~This is, ~this is kind of one of those where~ it's just like, ~I feel like it's good to ~kind of ~do a checkpoint every so often and ~like, ~Talk about good stuff that's going on and what people can be checking out. ~So, uh, ~hopefully people that are ~kind of ~maybe on the periphery of the JavaScript ecosystem, ~you know, can get, can get something, ~can get some insight here. ~I think that'll be,~ David: ~Well, ~I hope so. Noel: ~Yeah. ~Yeah. Cool. ~Um, I guess I kind of, what is your, what is your, ~to contextualize this a little bit, like ~what is the, ~who is the audience for ~this kind of ~this slide deck, this talk and ~who are you, ~who are you trying to reach David: ~Yeah, well, um, ~I've been involved in Node.js for over 10 years now, and I still get a lot of questions about,~ well,~ [00:01:00] what is Node? What's it good for? ~Uh, ~are there people still using Node? ~Is it, ~is it still ~a, ~a good platform to invest in and,~ um,~ So this is a introductory type talk where I talk about my journey, ~my, um, ~how I got into Node. js in the first place and what keeps me there and how I feel about the Node community ~and, ~and the future of, ~you know, ~JavaScript. Noel: ~this? Where had you spent in,~ in what kind of,~ uh,~ Stack or language even specifically. Had you spent the most time in before Node? David: ~Um, ~it would be the Microsoft stack of technologies. I've spent Probably 12 years or so in C sharp. net SQL Server, that kind of building web applications with ASP. net, jQuery and other, ~you know, ~front end technologies ~that were ~around the 2013, 2014 is when I decided to make the jump from. net to Node and I've been pretty happy.[00:02:00] Noel: Nice. Yeah. ~I've, uh, ~I've spent quite a bit of time in the. net world. I feel like ~when I'm, ~when I'm kicking off personal projects, it's either still ~it's it's.~ net or it's. ~You know, ~JavaScript TypeScript Node for me. So I think ~this will be, this will be fun. ~This will be fun to chat about. ~Um, yeah, is there, I mean, I've got, you know, a bunch of questions.~ ~I'm kind of curious. ~This is probably straying a little bit from the outline, like how your slides are laying out, but I'm curious what drew you originally? Like, why did you find yourself ~kind of ~gravitating more towards Node over time? David: Yeah, so being a web developer,~ um,~ I had this love hate relationship with JavaScript, as I know, a lot of web developers that have had over the years. And,~ um, if you ~if you go back to the early days of building web applications, I was building a classic ASP. Well, what we refer to now is classic ASP. ~Um, ~using the B script and,~ um,~ Very few people, at least as far as I know, were using Jscript to build,~ uh,~ ASP applications. And there was one,~ um,~ blogger on the internet back ~in the, ~in [00:03:00] the nineties,~ uh,~ early 2000, who was using Jscript. ~Um, ~and ~all, ~all of his examples ~and, ~and, ~you know, uh, ~blog posts were using Jscript and I thought it was really cool. I like the syntax of JavaScript over VBScript. And ~so, uh, that was, you know, ~thinking back, that's kind of like I was doing something ~kind of ~like Node ~before,~ long before Node was a thing where I was using JavaScript to do both server side and client side. ~You know, ~application development.~ And then I guess, um, Oh, ~Node came out around 2009 and I was very much in the trenches of the NET world at that time. I was,~ um,~ helping lead the,~ uh,~ NET user group in Nashville, Tennessee, where I used to live and,~ um,~ was just very, very active ~in, in the, uh, NET world.~ In that community, but I was still building a lot of web applications using JavaScript all the time, and it, I was just really curious about, ~you know, ~what would it be like to use? Just one [00:04:00] language,~ uh,~ across the entire stack. And,~ uh,~ I played around with Node a few times, but what kept me from using Node for several years was the lack of support for,~ uh,~ my ~favorite, ~favorite database at the time, which was SQL Server,~ uh, from, ~from Microsoft. And,~ um,~ It's like everything I built,~ uh,~ SQL Server ~was, ~was my backend ~and, ~and that was my preferred,~ uh, my ~database of choice. So I think it was somewhere around 2013,~ uh, ~when,~ uh, the, ~there were a couple of different libraries available for SQL Server that had matured to the point that they were usable in production ~and, um, ~And ~that, ~that's, ~you know, ~when I took another hard look at Node and decided, Hey, ~this is, ~this is a lot of fun. And, ~you know, ~started moving everything I did ~to, ~to Node. Noel: Nice. Do you think that~ there was, there was, um, ~that was ~kind of ~a piece of a larger movement overall, like ~the, uh, ~a growing in maturity of, ~you know, the, ~the module ecosystem ~that, ~that led to these kinds of, ~you know, ~libraries and stuff that made it easier to interact with ~people? ~Other ~non, ~non traditional JavaScript tech. David: Yeah, [00:05:00] absolutely. ~Um, ~I think this was around version of Node.js version four is when I ~kind of ~jumped on board. And so there were a lot of modules,~ uh,~ in a lot of things available on NPM that were beginning to mature. And part of my reason for making this transition was, ~you ~I was working for a startup company and we had ~kind of ~hit the limits on some Microsoft technologies at that time and we were exploring technologies outside of Microsoft, more open source,~ um,~ And,~ uh,~ things like messaging and,~ um,~ NoSQL databases and caching and, ~you know, ~just services and things that weren't available,~ uh, uh, ~for Microsoft. And,~ you know, ~one of the draws to Node.js is the support for those alternatives was much better on Node.js than it was at Microsoft at the time. So if you wanted to use something like,~ um,~ Redis or REAC or [00:06:00] RabbitMQ, ~you know, it was, um,~ you weren't going to have a good time getting to those things from csharp. net, but it was, ~you know, ~very much supported on Node. Noel: ~Yeah. I mean, I feel, I think I'd, ~I suspect that, and I anecdotally, I feel like this is the case with me, maybe not with everyone, but I feel like. net kind of the. net core wave ~kind of ~opened up the. net ecosystem a little bit in this regard to ~like, ~it became a lot easier on that front as well. Do you think that Node is still ~kind of ~the champion here in,~ in its, um,~ the diversity of the module ecosystem or have the other,~ uh, You know, kind of ~frameworks and languages caught up David: Yeah, I do think that,~ um, you know, ~a rising tide ~rises all or what's the term, you know, uh, Todd, right. ~Raises all boats or whatever. ~It's like, ~it's like developers are getting smarter all the time. And ~so, you know, ~no one's gonna,~ you know, ~completely, ~you know, ~do whatever they do in isolation. They're going to look to other platforms and what other folks are doing, what other developers ~are, ~are excited about. And ~like, what, ~what ideas can we borrow from there? So I've seen, ~you know, ~the. net,~ uh, ~community evolve over time. And I feel pretty, pretty good that if I were to [00:07:00] be.~ You know, ~thrust into an opportunity where I needed to use C sharp and dot net on a regular basis. I wouldn't be too,~ uh, ~too worried about doing that because ~I've, ~I've seen a lot of improvements to ~like the, the, ~the health of ~like ~how you build and maintain applications that have drawn from,~ uh, know, ~other platforms like Node ~and, ~and have been informed by other technologies as well. So I think. I've been saying this for a long time, but ~it's, ~it's never more true today is ~like, ~there's not a better time to be a developer. Noel: no,~ I, ~I agree. ~I'm curious. Yeah. Cause like, ~I feel like this was a lot of the appeal of Node,~ um,~ for me originally as well, like the ease of getting running was, it was just like, okay, I can spin up a new project quick and there's a ton of modules and stuff available. ~I do wonder if it's almost. There's, ~there's so many choices now in the Node ecosystem where ~part of me is like, I wonder, ~I wonder if it's harder for people that ~aren't ~aren't super entrenched in one language or another, like there are decisions that are made when ~kind of ~picking, ~you know, ~A JavaScript runtime and stuff now. And ~like, ~okay, do I use NPM or PNPM or yarn? And ~like, ~should I be using common [00:08:00] JS syntax or yes. Modules ~like, like, do you, ~do you think that there's some friction there now that maybe didn't exist when you made this transition that almost can make it more challenging for devs to jump in? David: I think software development in general, whether it's Node ~or, ~or anything else has gotten more complicated and there's more choice in this, the paradox of choice, right? That's ~like, ~makes it more difficult ~to like do or, ~or at least, you know, bring some uncertainty is like, am I, am I doing the right thing? Am I making the right choices or decisions? ~And so, um, I, ~I think if I were, ~you know, ~new to ~like, well, ~even me today, like I look at other things like Rust and Go ~and, ~and other languages ~that, that's, ~that have some popularity and, ~you know, ~look really interesting, ~I wouldn't, ~I wouldn't know where to begin. ~You know, ~and ~I, ~I dive into ~those, ~some of those things. And like you said, some of the choices that you have to make is ~like, ~I don't know if this is the right thing to do or not, but I'm going to play around and, ~you know, see, ~see what works. ~Um, ~so I think there's some merit to there being like this.~ You know, ~more [00:09:00] guided way of building applications that you find in some, ~you know, ~development environments. ~Um, ~but, ~you know, ~just like front end development, like Node, like you said, ~you know, ~with ~the ~the availability of frameworks,~ um,~ just in like web frameworks, ~you know, ~express was always like that was the one that everyone used. And, ~you know, ~you really didn't ~think about, ~have to ~really ~think about anything else, but now ~there's some, a lot of, ~there's a lot of good options available and,~ um, uh, ~express is still solid, but it may be a little bit dated,~ you know, there's, ~there's some really great options to choose from. Noel: Yeah. ~I mean, ~I feel like that's ~kind of, kind of ~the story across the board, even if we zoom out, it's like, ~what, you know, what, um, yeah. ~What runtime does one even use? ~Like ~if they want to be writing JavaScript, ~like ~do it right? No. Do I write, ~you know, ~there's like ~all these, ~all these things, but let's get into ~the talk more, like the swim of~ the specifics of your talk a little bit more. ~How do you, ~how do you ~kind of ~parse this? ~What are some of the, ~what are some of the technologies you recommend? ~Um, you know, ~modules,~ uh,~ or like frameworks for web services, ~kind of ~wherever you want to start. ~I'm happy to, ~I'm happy to jump in. David: ~well, um, ~as with any kind of intro talk that I give, ~I, ~I kind of start ~by, uh,~ By just making a case for the platform itself, ~you know, ~why would [00:10:00] someone want to consider building applications with Node? And,~ uh,~ what's that,~ uh, ~ecosystem look like a little bit and what were my reasons for getting into it in the first place? ~Um, I, ~I think it's amazing that you can take, ~you know, ~a language like JavaScript, which is not the same ~as, ~as it used to be. There's still some weirdness and quirks that are left over that they ~kind of ~have to be there because, ~you know, ~one of the reasons why JavaScript is ~kind of ~so ubiquitous is that it's always embraced,~ uh, uh, ~backwards compatibility, ~you know, ~the number one,~ one, number one, uh, uh, You know, ~constraint ~for, ~for JavaScript is to not break the internet. So you can't drastically change the language. Otherwise ~you would, ~you would break the internet. ~Um, ~cause everything relies on some of that quirkiness and weirdness to be there. But there's been so many great changes made to the JavaScript language in recent years. That has made it so much more,~ uh, ~palatable and usable and friendly and not [00:11:00] as quirky ~and, and, uh,~ and awful to deal with. And,~ um, ~I think it's amazing that you can take a language like JavaScript and do literally anything. You can imagine whether it's build server applications or command line applications or desktop applications or internet of things. ~Um, it is, ~it is ~kind of ~like the closest to a universal language. I think that you can get ~it.~ Noel: Yeah. ~At least, ~at least probably the closest we've, we've gotten. ~Kind of ~Kind of seen thus far in the evolution. Maybe way back one could argue that like, oh,~ well, like~ assembly is more ubiquitous. ~Like, well,~ David: Right. Noel: but ~like, ~yeah, at some point, ~it's just like, yeah, ~the pervasiveness is staggering. ~How, like, given this, ~given this ecosystem in the vastness, how do you like navigate that? ~How do you, ~how do you pick when you're hopping into some ~new, um, like ~new kind of modality where you're trying to write,~ um,~ JavaScript. Like, how do you find modules that may be helpful? ~Like what's that, ~what's your kind of parsing and selection process like there? David: ~Um, ~yeah, I do talk about NPM and the, uh,~ uh, ~ [00:12:00] org ~is, ~is ~kind of ~like ~the, the, the, the, the, the. ~The huge shopping mall for anything and everything that you may want to develop ~and, ~and it's ~kind of ~staggering with the stats that are out there for ~like, um, two, ~two billion downloads,~ um,~ in a year or something like that. And,~ um, there's, ~there's millions of modules that are available.~ Um, ~so just navigating that can be a little bit daunting, but ~I, ~I think if you're ~kind of ~jumping into Node and wanting to play around with something, there's some frameworks and some utilities that I recommend. But,~ uh, if, ~if you're, ~you know, ~starting small, you want to build something to solve a problem that you have,~ uh, ~searching NPM. You'll probably find at least one, if not several,~ uh, ~solutions for something that you want to do. ~I, ~I tend ~to, ~to look at,~ well,~ which ones are more popular? And then look at some of ~the, ~the read me, ~you know, ~is this more ~approach, ~approachable? ~you know, as a, you know, as ~the documentation better? ~Is ~it look more polished? Has it been around for a while? ~Um, how, ~just how active is the community around this? ~You know, ~there's stats on every [00:13:00] MPM page for ~like, um, ~how many downloads in the past week, ~can, ~that's ~kind of ~an indicator of whether or not ~a. you know, ~a package is well loved. ~Um, ~and so those are ~kind of ~the indicators that I look forward to decide,~ um, you know, ~whether something is,~ um, you know, ~useful or not. Noel: ~Yeah, yeah. ~Yeah. Because you also can see like, ~you know, dependence and everything like~ dependencies ~and dependence ~and all that stuff and kind of get the graph. ~Do you find this is. I'm not, ~I'm not sure most people ~sit~ sand on this, but I feel like it can be kind of hard. ~Um, just like, I don't, I don't think,~ I don't think NPM searches inherently flawed or anything, but I think it can be ~kind of ~hard to get the context sometimes around ~like, you know, finding a, ~finding a module that serves some purpose, especially when like~ like~ kind of picking those higher level things. Like you mentioned,~ like, ~do I use express versus something else? ~Like it's, ~I don't think. You ~kind of ~can get all the context you need. ~They're ~looking at NPM alone. Is there anything else you ~kind of ~reach for other resources when you're like,~ well, like, I know, ~I know my options here, but I'm ~kind of ~trying to ~like ~figure out which of these makes the most strategic sense. ~Like, is there, ~is there anything else you reach David: ~well, well, ~definitely just searching the internet for like tutorials and things like I know I want to build an application that does this, ~you know, ~I may search for something related to Node on how to do [00:14:00] that thing. And by looking at ~a, ~a tutorial or a YouTube video or something that kind of walks through, I can get an idea of like usually from other experts as to what frameworks they're using,~ uh,~ why they chose to use the frameworks that they're using and, ~you know, ~start to form ~of~ an idea of like, oh, well, these may be good technologies to test and try for myself. ~Um, so, you know, that's, ~that's always something that I'm looking for is like trusted, ~you know, ~content out there for, ~you know, ~learning new things. And I think ~that's, ~that's every developer's job, right? Is to get really good at discovering,~ uh,~ new content and making judgments on whether a content's,~ uh, uh, ~accessible ~and, ~and,~ um,~ trustworthy. And,~ um, I, ~I also recommend there are a couple of,~ uh, um, ~newsletters that I subscribe to. There's the JavaScript Weekly and the Node.js ~Weekly, Node ~Weekly newsletters,~ and so I'm getting, ~I think there's also one called Bytes, and I'm getting, ~you know, ~at least on a [00:15:00] weekly basis,~ uh, you know, ~some,~ uh,~ References to like new articles, new versions ~of, ~of things ~and, ~and just whatever technology is ~kind of ~emerging in the Node and JavaScript communities. Noel: That's probably a good,~ um,~ like resource for language features and stuff like that as well. ~Um, ~I know you cover this a little bit in the talk. Are there ~any, ~any particular,~ um, you know, like~ language features that have come to JS recently? That you've found to be particularly,~ uh, you know, ~potent. David: ~Well, ~I think ~the The ~thing that has changed the most as a Node.js developer in the last 10 years has been just the asynchronous model that everyone programs in. So in the beginning, you use callbacks, and you may still see a lot of content out there, tutorials that use callbacks. ~Um, ~So it's a very specific kind of function signature and all this stuff. ~And it's, you know, ~there's a lot of kind of boilerplate or ceremony that goes into crafting code that uses [00:16:00] callbacks and we've moved from callbacks to promises ~and, ~and from promises to async and await, I think that's been the biggest thing. The biggest and most welcome change to JavaScript and as a Node JS developer is being able to use async and await,~ um, ~everywhere in your code. ~And, uh, ~anytime you're using something that's promise based, you can still use async and await. Noel: Yeah. And ~there's, ~there's some cool tools. ~Um, ~you can even take ~old, ~old libraries that are still written with, ~you know, ~callbacks and promise ify them and make those work. It can be a little bit,~ a little bit, ~more plumbing, but once you kind of know. What that looks like. ~It's like, it's, uh, ~it's typically a much ~more, ~more clean way to write code. I agree. ~Um, ~yeah. Are there any other kind of tools or anything recently that you've come into specifically ~that kind of, ~that aid more in the ~development ~development process itself, like quality of life stuff for developers? David: ~Well, the, ~the Node.js,~ um, ~framework itself has been,~ uh, ~traditionally very lightweight. ~Uh, ~in terms of what it includes in ~the, uh, ~the library. And so for the longest time in [00:17:00] Node, all you got was a JavaScript execution engine, NPM to install dependencies and run scripts and your very basic HTTP file system, socket, ~you know, ~libraries ~that, ~that help you with either dealing with ~uh, ~resources or,~ or uh,~ communications. So you've ~kind of ~always had to reach for other tools out of NPM ~or, ~or wherever to like compliment Node. And that's been great.~ Um, ~but we're just in the last few years starting to see. ~Uh, ~some new things added to Node,~ um, around that, ~that had been ~kind of ~popular or universal for just about any kind of Node application. That includes a test runner,~ um, ~and a built in,~ uh, ~watch system. So like a, ~you know, you're kind of. ~debug loop where ~you're, ~you're launching your application. It's monitoring your files to see what files change in your project and it automatically restarts ~your, ~your [00:18:00] application. ~Um, ~so ~we've, ~we've had to rely on tools to do that work in the past, but now ~there's some, ~there's built in ways ~of, ~of doing those things now. Okay. Noel: Yeah,~ nice,~ nice. ~I guess, uh, to, to zoom, ~to zoom out a little bit,~ um,~ before you were mentioning, ~we were, ~we were talking about the kind of ubiquity ~of, ~of Node How much it can do and how, like what so many problems can be solved using it. ~Is there,~ are there any projects,~ um, like where, ~where you think Node ~Isn't, ~isn't a good fit. ~Like, ~or ~like, ~is it just a matter of ~what, ~what people are using, ~you know, ~like what teams are familiar with? ~Or, ~or do you think ~that ~that attribute in and of itself is often enough to make Node the clear choice? David: Yeah, I make a joke in ~my, ~my talk about,~ um, ~similar to Jurassic Park, ~you know, ~where scientists were so preoccupied with whether or not they could, they didn't stop to ~think, you know, ~question whether they should. So even though you can. Build just about anything you can imagine with Node ~and ~and javascript. It doesn't mean ~it's ~it's always the best solution ~For that, ~but I think ~it is a a good ~it can be a great starting point to make it easier to prove~ um You know like ~an mvp, [00:19:00] right? So the mvp ~is ~is like ~you're ~you have this hypothesis of something you want to build ~um You ~what's the easiest path to that that market exists or that application is useful to myself or to other people. And so it may not be the final destination, but it could be a way of getting there quicker to answer those kinds of questions. But as far as ~like, I think ~performance wise, it is on par with just about anything else out there because Node uses Chrome V8, which is always being optimized ~and make, made the best, uh, for, ~for executing JavaScript. ~Um, there's, um, when, ~when JavaScript ~there, ~there is a little bit like just in time compilation, just like other languages have when you're running an application. But ~once, ~once that initial,~ um, ~compilation step happens,~ it, ~it's native code and it runs just as fast and efficiently as just about anything else. ~Um, so I, you know, unless you have some like really, I, I can't even, I can't even hypoth, yeah, ~I can't even hypothesize an example ~where, where, um, ~where someone might want to choose ~a, a, you know, ~a platform [00:20:00] other than Node, but it, ~you know, ~for performance reasons, you might drop down to something like rust or,~ uh,~ C or, ~you know, ~some lower level language to optimize a specific part of ~your, your, uh, ~your application. But most of the time, ~you know, those, ~those problems,~ um, you know, ~exist ~and, you know, for, ~for any platform. Noel: ~I know. I know. Like, ~I feel like the old joke for a while in the programmer circles was ~like ~how resource hungry. Electron apps and stuff were ~like ~running on the machine, but ~I'm, I'm, ~I'm continuously impressed by VS code. Like it, ~it~ David: Oh, Noel: so, it's so tightly, like some are still bad, ~like~ Slack's ~always, ~always a memory hog. I'm like, I don't know why, but for some reason Slack eats it up. But like VS code, it's ~like, it's just. So, um, ~I think that ~there's, ~there's some merit there for sure. ~You must like, ~you must have a particular affinity here for new devs jumping in, like I want to write JavaScript. ~Um, you're, ~we're still talking about Node, which I think ~is, ~is a totally reasonable choice, but ~is there, ~is there a reason that you think a Node is still like the most logical place for devs that ~are, ~are willing or have capacity to make a jump versus switching to a different JavaScript runtime? David: ~Have a great day. Yeah, um, so I, ~I think ~there's, ~there's [00:21:00] compelling reason for Node in that ~it's, ~it's been around longer, it's more mature. There's a lot more examples that are out there. There's, ~you know, ~a lot more content's been created for Node. So it's makes it more accessible ~from, ~from the standpoint of like, I want to learn this thing. I want to learn something specific to, ~you know, ~what I'm trying to build. And more than likely, you're going to find content,~ um, ~that's going to help you ~with. ~with Node.js. ~Um, if, um, you know, if you have like some really, ~you can build Node applications with TypeScript, but if you, ~you know, ~really want a good TypeScript experience,~ uh, ~it may make sense Deno. ~Um, I, ~I just think there's so much available. to Node and Dino's making improvements and ~it's, ~it's becoming easier to pull in some of the,~ uh, uh, ~packages that are available for Node into Dino. ~So, um, that, ~that gap is getting smaller and smaller. ~Um, yeah, ~I just think,~ um, ~there's probably ~more, ~still more available to the community, especially for people who are getting started. Noel: yeah. ~I think, ~I think that ~the, there is still, ~[00:22:00] there's issues getting like the modules to import and stuff correctly sometimes still. ~Um, ~but part of me also wonders back to that point, we were talking originally about like it being trickier to jump into these like ecosystems that have a little bit more of a history. Part of me wonders if like some of these new. New players ~will have, like,~ because ~there's,~ they don't have all the baggage of like reverse compatibility for all these things. ~Like, ~I wonder if it might make it easier at some point for new devs to jump in. It's ~like, ~okay, there's still a clear path, like ~in these, ~in these other,~ um, kind of ~frameworks or runtimes,~ um,~ that. ~You know, ~might make it a bit clearer, but ~let's, ~let's talk a little bit about ~JavaScript because I feel, or~ TypeScript ~rather,~ because I feel That's also like an interesting point here. Do you think that new devs jumping in that again, ~like ~are in the mode where they have capacity or are willing to ~kind of ~take on a new language and figure something out? Do you recommend they write just JavaScript for a while before, before writing TypeScript? David: I think that really depends on their situation. If they are part of a team that's using TypeScript, then there's kind of unavoidable. ~Um, you know, ~they need ~to, ~to jump in ~and, and, uh, ~and probably pick up TypeScript from the beginning ~and, ~and learn that ~as their, ~as their [00:23:00] primary,~ uh, ~way of building,~ uh, ~JavaScript and Node applications. ~Um, ~And I think it also depends on maybe if you're coming from a background of a typed language to begin with. If you're brand new to programming, like you've never done any programming at all, I think JavaScript~ is, ~is more accessible. ~Um, you know, it may, ~it may lead to, ~you know, ~some frustrations because of being a dynamic language, but I still think, ~you know, it's, ~it's easier to pick up, it's easier to work with, there's less ceremony, there's less,~ um, you know, ~work required ~or, ~or thought process required to build a working project and application. ~Um, ~I came from, ~you know, ~having used C Sharp for 12 plus years to I felt that it was very refreshing ~to, ~to use JavaScript as my back end,~ uh, ~as well as my front end, because ~that, ~that meant ~there was a, ~there was a lot of friction that [00:24:00] just disappeared,~ um, with. You know, ~there's tradeoffs, ~you know, ~TypeScript ~is, ~is great because ~it's, ~it enforces types, it does type checking and, ~you know, kind of ~facilitates you to,~ um, Uh, ~stick to,~ um, you know, ~the right signatures, you're not shooting yourself in the foot because you've refactored part of your application, ~you know, ~and this other part ~is, you know, ~doesn't work that way anymore. ~Um, ~so there's definitely a lot of benefits to TypeScript, but ~as a, you know, if you're not in one of, you know, And ~if you're in an environment where you and maybe, ~you know, ~just a handful of other people ~are, ~are building something together, maybe you can go faster ~and, ~and have ~a, uh, ~a good time, ~you know, ~working with just pure JavaScript. Yep. Noel: yeah, there's totally. There's a valid point there. And they're like, yeah,~ there's,~ there's less just ~kind of, uh, you know, ~syntax stuff you got to ~like ~jump over to get to just like writing hello world, but also ~like, you know, it, the, the, ~the rails of types can also be helpful in ~like ~developing, like understanding what you need to do to actually, Oh, I'm actually making a [00:25:00] function call correctly here. ~Like, ~I'm not forgetting parentheses and like having to sit there and debug. Like, why isn't David: Yeah. Noel: It's ~like, ~Oh yeah. Stuff like that. So ~I think I like. I'm not, ~I'm not totally sold one way or the other, but ~I like, ~I think ~that ~that's ~interesting, ~interesting to David: ~I, ~I do think though that,~ uh, ~ESLint and some good rules around that ~is a, is a, you know, kind of ~gets a new developer or part of the way there ~that, ~that ESLint can really help them to avoid some of the common mistakes ~that, ~that can happen when you're learning JavaScript. Noel: Yeah, absolutely. ~Yeah. To, ~to your point of developer speed ~to just maybe a counterpoint is, is maybe an overly strong term, but I'm, ~I'm continuously impressed by how good. TypeScript inference system is ~like, man, like ~I feel like ~TypeScript, ~I have to deal with the type system in TypeScript. So little, like it's always surprising to me, but again, maybe this is just from the perspective of a person who's been doing development for a long time. ~So I kind of just like. ~I know I can see through the veneer a little bit. I understand what's going on. So when it does blow up, ~I like, ~I'm like, Oh, that's because of this. But normally it's just like, Oh man, this inference is ~like, so it's, it's ~so liberating and that I can just ~like ~do the thing and the passing types works David: Yeah. And ~even, ~even if you're not using TypeScript in Visual [00:26:00] Studio Code, ~there, ~there is some inference and things happening in the editor for you. So, you know, it's giving you hints and IntelliSense and things. So I think that's great. Noel: Yeah. ~Yeah. I think, ~I think a lot of that tooling that was ~maybe, ~maybe done, I guess I'm not totally sure on the path, so I don't want to speak to it, but I think a lot of that logic that can be like, Oh, this function is returning something type. So ~even this is, ~even though this is JS code, like I can still look and figure out what's going on here. And I think ~that, that, that, ~that is super beneficial. ~Um, ~yeah, cool. Oh yeah. ~This, ~this kind of brings me back now ~to your, ~to your point with,~ uh, ~SQL Server and your difficulty there. So do you feel that this problem now has been ~totally, ~totally solved? In the JavaScript world. David: Yeah,~ I, ~I've had no trouble at all with any of the, ~you know, libraries are~ Alternative libraries that I've tried in JavaScript. ~I'm, I'm you know, ~Nowadays in my career, I'm not building huge scale commercial applications. ~Um, ~I'm usually building,~ uh, ~reference apps and tutorials and things like that. So, ~um,~ none of the libraries I've used in years ~have, ~have caused me any [00:27:00] issues. ~I've, ~I've been very pleased with, ~you know, ~the maturity ~of, ~of things ~that are, ~that are available. Noel: ~Nice. ~Nice. Very cool. ~Um, well, ~is there ~any other, uh, ~any other kind of words you want to leave us with or anything you'd implore listeners to check out, David? David: ~Well, um, ~one of the things I talk about,~ um, we, ~we briefly mentioned electron, electron ~is a, ~is a way of building desktop applications. ~Uh, ~visual studio code is an example,~ um,~ of a desktop app built with Node and chromium. ~Um, that is, ~so I think that's ~a ~pretty amazing,~ uh,~ in itself that you can,~ uh,~ use that to build and automate some things on your own system, whether it be command line applications or desktop apps ~with, ~with Electron. ~Uh, those are, ~those are pretty awesome. Noel: Yeah, cool. I agree. ~Well, ~thank you for coming on and,~ uh,~ on chat with me. ~It's always, ~it's always a pleasure just to ~kind of ~do these, ~you know, dives into, into people who are, or ~dives into languages of people who are big fans of them. ~So, uh, that would, ~that was awesome. Thank you, David. David: Welcome. Noel: ~Yeah, for sure. Take it easy.~