January 27th, 2021 × #Deno#Nodejs#JavaScript
The Deno Show
Scott and Wes introduce Deno, a new runtime for JavaScript and TypeScript. They compare it to Node.js and discuss features like built-in TypeScript support, ESM modules, sandboxing, running scripts from URLs, and more.
- Introducing Deno
- Deno replaces Node.js
- Deno uses TypeScript
- Deno doesn't replace front-end frameworks
- Deno bundles and compiles code
- Deno imports ESM modules
- Deno runs WebAssembly
- Deno is fast
- Deno has security sandboxing
- Deno can run scripts from URLs
- Deno uses async/await
- Deno aims for Node.js compatibility
- Example Deno scripts
- Current status of Deno
Transcript
Announcer
You're listening to Syntax, the podcast with the tastiest web development treats out there. Strap yourself in and get ready. Here is Scott Talinski and Wes Bosch.
Wes Bos
Welcome to Syntax. This is the Dino Show. This is long awaited.
Wes Bos
Rid Scott and I have been fussing around, Fitzsimmons, playing with it.
Wes Bos
And finally, it's time. We know enough about Dino that we're gonna do a show rid Explaining it to you, what it's for, what it is, what it isn't, why is it awesome, and is it going to replace Node? Re We're sponsored by DQ, which is d e q u e. They do web accessibility software services training. They have this thing called Axe that will rid. Allow you to to take a look. We'll talk about them partway through the episode. Sentry does your error exception and performance tracking and mux, Which as a new sponsor, well, DQ and Mux are both new sponsors. Welcome.
Introducing Deno
Wes Bos
Mux is video streaming.
Wes Bos
You've probably heard Scott gushed about it enough.
Wes Bos
That they finally just started sponsoring the podcast.
Scott Tolinski
So how are you doing today, Scott? Oh, I am doing good. Hey, man. We're getting back into it. We're we're feeling the flow. We recorded, another episode this morning, and I'm feeling rid. Feeling a little bit better. Feeling a little bit more. The juice is going, getting moving.
Scott Tolinski
So I'm feeling good. It's, 2021.
Scott Tolinski
We're out of that hellscape that was 2020, And we're into the hellscape that will be 2021.
Scott Tolinski
Overall, man, I'm ready to go on this year. I have some really, really bananas Projects in the work here. I think well, all of which you're you're privy to. I'm working on, like, a whole new code base for a level of tutorials. It's like our our 3 point o, and it's it's rid Awesome. So I'm pretty psyched to start talking a little bit more about it. How are you doing? I'm doing great. We got a little bit of lockdown going on here again, which is
Wes Bos
Fortunate, but I'm really hoping those kids go back to school soon. Yeah. Right? Yeah. Let's, get rid of this situation.
Wes Bos
Rid And, yeah. Yeah. Yep. Nip it in the bud. Butt in the butt? In the bud? Butt. What's the saying? Butt. Butt. Butt. Butt. Like a rosebud. Yes. Or nip it in the butt like a piranha little bitin' a Yeah. Yep.
Wes Bos
So, Dino, I've been using it for a couple months here and there. You've been using it for a couple months here and there. I did a course on it. You did an entire course on it, so we feel like we're at a a good spot. You probably been hearing us talk about it, tweets flying about it. It reached 1 point o in 2020.
Wes Bos
Rid. So let's just talk about what it is. Deno is a secure runtime for JavaScript and TypeScript.
Deno replaces Node.js
Wes Bos
That means That it's a competitor to what Node is, and it's also a competitor to what Ruby and and PHP is. It's it's basically it's another re Environment where you can write and run your language. So the name is a play on node, so no Duh. You take the last 2 letters of node and put them in the front, and then it's d no. And, I guess, that's how we know how to To say it. Right? Because what what's the other way to say it? The reason we know how to say it is because somebody, I think Ryan Dahl, specifically clarified it in a YouTube video, but We've always said that dino
Scott Tolinski
oh, no. Not diary. Deno because
Wes Bos
Deno.
Wes Bos
No. Duh. Yeah. Duh. No. Rid I know. Don't know if we should just take the audio of me saying node and replace it, and we'll find out. But we're saying, Dino, and we think that's right. Basically, what it is is they've taken the engine out of Chrome, which is this thing called v eight, and they use it to run JavaScript. So like any programming environment, you can run it on hardware. You can make it do whatever you want. Most likely, you're gonna be using Deno to do to run a web server Mhmm. Or to perform scripting tasks, but you can use it for anything. You can mine Bitcoin. You can do scientific calculations with it. You name it. And the coolest part about
Deno uses TypeScript
Scott Tolinski
that is that it is TypeScript.
Scott Tolinski
So, Well, not not that it's built in TypeScript. We had that whole kerfuffle before, but it is TypeScript. So when you write your code, it's a language that you know. Right? It's not Ruby or it's not Python if you don't know those. It is JavaScript, which is what we're used to, although it it it is rid TypeScript out of the box. So you could use JavaScript or or TS out of the box. I I kinda feel like do people write JS with Deno? Is that, like, actually a thing, rid Or is it just, like, everybody who does it uses TypeScript? Because I I've only really seen Deno TypeScript. Yeah. It seems like all the native rid Modules
Wes Bos
are built in TypeScript that I'm seeing. Like, you can do anything, and and the reason behind that is because rid. V eight doesn't know what TypeScript is. The TypeScript is compiled to JavaScript at the end of the day, but it seems to be that if you are tackling this thing head on, that The reason why TypeScript is is supported out of the box is because they see it as a major benefit. Yeah. So What I thought we would do is before we even get into the benefits and all the nitty gritty of it, I thought we would just play this game of, does it rid Replace or what is it in relation to? Just to sort of place it in your mind as to what is this thing and what isn't this thing, and then we'll go into the the The actual benefits of it and and why was this thing even created when we have Node already.
Wes Bos
So the first one is, does it replace or what is it in relation to Node? Rid It is a replacement runtime for Node. Js. It does not have the same API as Node. Js, meaning that If you were to use JavaScript APIs, something like set time out, that code is gonna work in Node. That code is gonna work in the browser. That code is gonna work in Deno. But if you were to use a node specific API like f s dot write file sync, That's a node API, and there is different APIs in Deno for things like writing files. And if that's the case, then it it won't run. We'll talk about compatibility between the 2 in in the future, but, essentially, it is a full replacement for Node. Js. Yep. Next one is going to be Express.
Scott Tolinski
Express, for those of you who don't know, is a node based framework for building a web server.
Scott Tolinski
Express rid Doesn't currently run on Deno.
Scott Tolinski
However, the express of Deno is Oak, Which is oak server forward slash oak on GitHub. And for the most part, this API is very, very, very familiar. It actually models Koa, The API does. So if you've used Koa before or any of these web frameworks, to be honest, I found Oak to be rid. Very easy to use, very easy to parse and get up and running if you've ever done a web server.
Wes Bos
So while you won't be running Express rid Specifically, there are definitely express like things in Deno. Next. Js does this as well for their API routes. Is it's very much like an express. The API is very similar, So you you sort of feel at home, and any other, like, minor inconsistencies, you can pick up pretty quickly, which is cool. I love the Express API. Rid. Yeah. And I love that it's been used in in so many other places. So, like, Express is not gonna run on Deno because Express uses Node. Js APIs.
Scott Tolinski
Rid. But, yeah, like Scott says, things like Oak and and other servers will run. Yeah. And we actually like, I I've spent quite a bit of time with Oak, and it is it's very good. Next one is serverless.
Wes Bos
So Deno can be used for anything. So whether that is spinning up serverless functions or a traditional web server, it will run as long as The thing you're running it against has support for Deno, can can compile the Deno binary. So specifically, begin.com, Brian LaRue, He maintains the Deno library that will run on AWS, so it will work as long as it it's not super well supported. You're not gonna be able to go to GoDaddy and throw a Deno app on there, but it's not like Deno is a replacement for serverless as serverless can be done in Deno just like it can be done in rid. JavaScript, Ruby, Python, whatever language you like. Yeah. Next 1 is going to be, is Deno a replacement for React,
Scott Tolinski
rid use Svelte, any of these things? And the answer is no. React, use Svelte, these are all JavaScript front end frameworks. Now more and more, they're becoming like They can be used server side. Right? We can do server side rendering in React or whatever, but React itself is just going to be the JavaScript part of that. Now how can we do, like, React apps with Deno? Well, the same way you did node apps with Deno. Right? Deno doesn't necessarily care about your React app. It's just going to serve this JavaScript as is. Rid. You can serve it with an Oak server like you would an Express server or even there is we talked about this on the episode with Brian. This new framework rid Called Aleph, a l e p h, which is alephjs.org, which is sort of like their their whole thing seems to be like, we're gonna be re but for Deno, I have not used this. It looks a little fresh. It almost looks, not not like a not a dig rid. Folks, but it kinda looks like like, they're trying a little har too hard to be Next. Js with the branding and some of the stuff. But, like, Yeah. It looks great. So if you're interested in building React sites, this could be an option. It it does look like it it might be pretty fresh, but, definitely looks really cool and something that rid You should have your eye on if this Deno world interests you and you build front insights. Totally. And we should say, like, a lot of the Tooling around your existing React probably won't work on Deno. Right. Specifically, something like a Next. Js probably won't work on Deno because rid. They use specifically Node. Js API. So that's the difference there is that if it's purely
Deno doesn't replace front-end frameworks
Wes Bos
browser based or if it's just JavaScript, rid. Of course, it's gonna work on on Deno because Deno runs JavaScript. But if it's node based, it has node APIs, then it won't work. Next one, SSR. It comes one really cool thing about, you know, is it comes with all the browser APIs out of the box. So rid Huge pain in the butt is that the fetch is a browser API and not a JavaScript API, and that's why you don't have fetch in Node Yet. CrossFAST, isomorphic fetch, or any of those, you always have to bring it. Yeah. You have to, like, install it. And, like like, rid Come on. That's, like, the thing I wanna do in Node is, like, I just wanna fetch data. Right? Like, why do I have to install that every single time? Also, window dot add event listener is a Deno API, and that's great because, first of all, you're not gonna run into these, like, annoying rid Issues with you do with Next. Js where a package has, like, window APIs on it. And second of all, you can use, say, like, window dot At event listener dot load to unload, and you can listen for Deno events the same way you would listen for DOM events or or window events in the browser. Yeah. Cool. So next 1 is, Parcel Snowpack,
Scott Tolinski
Webpack, any of these things bundler. Now Deno is The bundler, you do not need to use any of those things. One of the cool things about Deno in my experience is that they're looking at it much more like Many of these other languages, like I've mentioned before in the past, things like Rust or any of these other, like, fully Go, I've heard. Go. Right? These fully encompassed environments re Where, like, you don't have to pick up a formatter. You don't have to pick a bundler. You don't have to pick any of that stuff like a testing framework. You don't have to pick any of that. It comes with Deno because they want you to just, like, use the platform as it is. So for me, I really enjoyed that. So web webpack, Parcel, No pack no more. One of my very most favorite aspects of working in Deno is the ability to just start writing code without having to configure some sort of a webpack bundle or something. I'm gonna loop in a bunch of these together just because Yeah. It does it all. Yeah. So Prettier, Deno is a formatter. TSC, TypeScript Compiler. Re Deno is a TypeScript compiler in runtime. ESLint,
Deno bundles and compiles code
Wes Bos
Deno is a linter, and Jest, Deno is a test runner. So like Scott just says, It loops all of those things that you normally have to go out and reach for into Deno itself, and it's opinionated about that. And, rid. Quite honestly, like, I'm really excited about that because I'm somebody who does lots of little quick projects.
Wes Bos
And I often rid Get this little like, the wind out of my sails when I find out, like, alright. I gotta spend 5 minutes configuring ESLint and getting TypeScript set up properly in, Test Runner and and Prettier and and my bundler and all that. And even though those all of those things have gotten really fast, That's still, like, 25 minutes when you're starting a new project, and that, for me, that's at least once a week. Not only that, but, like, like, I'll I'll get into this settled more at a later date. We recently rewrote a bunch of our tooling. Right? And then we we hit a specific issue because we don't use Babel anymore that, like,
Scott Tolinski
Oh, shoot.
Scott Tolinski
Now all of a sudden, we need to run Jest to do our testing. And so now I need a whole custom config and a whole custom build process was just for our stupid GEST test. Like, it it was like it made me, like, really just want to pick up my computer and and dump it in the trash can because, Like, I had I I just really, really love the aspect of, like, you just open a TS file, you just start typing, and then, like, that's all you gotta think about. Rid So I I I'm always a big fan of that. One of our sponsors today is DQ Systems. They've been on the show before, and they're back for some more. They've got some kind of neat Stuff being cooked up with their Axe accessibility
Wes Bos
plug in. They're they're gonna release a little bit more of that in in a couple of months, but let me tell you about what re DQ does. So DQ makes a browser extension. It's available for all the popular browsers that will help you figure out rid. Where the accessibility issues are on your website. Like, I actually maybe about a year, a year and a half ago, I ran it on the Syntax site, and we had some rid Text that didn't have enough contrast on it, and it it just popped that information out right to us.
Wes Bos
It's awesome because you can start rid. I think, in general, it leads to just a bad experience for everybody who's using your website. So you grab the Chrome, the Firefox, the Edge extension, And you run this thing, and it's gonna show you exactly what's going on with it. So check it out at d q. It's deque.comforward/axe, re A XE.
Wes Bos
Thank you so much to DQ Systems for sponsoring. The last thing is NPM. Does it replace NPM? Yes. Rid Kind of. So Deno is a package manager, but you just import the packages from URLs that live on the Internet somewhere. So We'll talk about what that means and and how that works in when we talk about the modules part. Alright. So let let's talk about some of the benefits that we have here. We've got a whole bunch of subheadings Yeah. We've already talked about one of the biggest benefits, which is just TypeScript and JavaScript work out of the box. But we've got modules, standard lib, WASM, speed, security, rid Running from anywhere, asynchronous code, node compatibility, and then we'll talk about our own own version. So you wanna kick it off there with, How do modules work in Deno? Yeah. Okay. So modules
Scott Tolinski
are ESM, ECMAScript modules. For those of you who don't know, it's basically The modern version of what you used in Node, which was common JS, but ESM is really nice because what it does is it Request the module when it's needed rather than requiring everything to be bundled together. Right? So ESM out of the box, And you can now think of the import syntax as almost like a link or something like that. It the December course for all of our tutorials was on Snowpack, and we talk about ESM in the browser. And we actually go to the network tab and show on each import, it's requesting a specific file or document.
Deno imports ESM modules
Scott Tolinski
So you can kind of think about it like that where it is like a it's loading information from, essentially, a request for information. You could think of it as like, alright. I want to access a specific function from a specific file. Therefore, I'm going to import Function from file. That file can be anything. It can be a TS file that you have in your application, but it can also be a URL rid to a GitHub gist or a repository somewhere or a deno dot land page. It can be any TS file that exists, You can import Could could literally be on a USB stick. Yeah. You could plug that USB stick in. Yes. You could do that. For your dependencies. Yes.
Scott Tolinski
Forward slash volumes whatever. Yeah.
Wes Bos
And, actually, that is kind of true because we'll we'll talk about the rid The security and sandboxing in in just a second as well. Yeah. And that's really cool. My initial thought behind that was like, okay. But, like, re There's no package registry. You simply just import these things from the URLs.
Wes Bos
Initially, I was like, alright. Well, then you have to, like, import the URL in every file, and then Scott just said, oh, no. He just has, like, a a dependencies dot ts file that Yep.
Wes Bos
Exports like, let's talk about, Lodash. Let's say you wanted Lodash. You would just Say export Lodash from h t d p dino.landforward/ Lodash.4.5 whatever dot j s. And then you import Lodash from your dependencies file. And then whenever you wanna update Lodash, you'd simply just update the URL in that that one spot. Right? Yeah. It's a common practice to see what is a deps, d e p s dot t s file, and I've actually linked to Oak, Oak server's adepts.ts
Scott Tolinski
file kind of ends up becoming like a routing center for the information. Right? You're importing the things from specific Package tied to a specific version. It's almost like a a package dot JSON file in that you it's like a central station for routing all of your dependency versions and rid The actual individual imports that you want to do. So you'll see an example export name from URL with the version. So I think this rid This one, this oak one is pretty nice and easy to understand, but this is a very, very common practice. Yeah. That makes sense. What about, like, updating? I there's probably no tools right now to check if There's a newer version, but assuming that we would get something that could, like, parse URLs like this and look for newer versions. Yeah. I know. I feel like there has to be something like that, but I think because DEPS isn't like it's not baked in. No. It's not. It's just a thing. It's just a it's just a, convention. So, Yeah. I haven't seen anything personally. That doesn't mean it doesn't exist. So it it could exist already.
Scott Tolinski
Chances are it will exist. Rid Who knows? But that definitely seems to be, like, something that that could be here. Do you know land seems to be where people are publishing
Wes Bos
rid Them, but you can also publish them to,
Scott Tolinski
like, your own web server, like Scott says, or to what's the Snowpack? GitHub or Skypack or anything. Yeah. As long as it's pointing to a TypeScript file. Like we said, even a GitHub gist, you can write a GitHub gist And then import that. Wow. I bet
Wes Bos
GitHub,
Scott Tolinski
like, releases will be where a lot of this stuff ends ends up rid. Going because, like, what like, one frustrating thing about npm right now is that, like, what's on GitHub and what's on npm is not necessarily the same thing. Dude, I just had this issue where I was going nuts on a bug. My my site kept on telling me Next. Js wasn't defined. I'm like, I'm not in a Next. Js site. What are you talking about? And then only to find out That the GitHub page I was on was telling me to install the thing as a package. Only when I went to NPM, they didn't have that registered package name. So whoever wrote their read me was just like, oh, yeah. Just it's just gonna work, I guess, somehow because they did but they didn't own the package name. So here I am installing a completely different package than I was on the GitHub page for. So you're right. I mean, what's on NPM is not necessarily what is on GitHub and vice versa, And so, therefore, things can become out of date. They can become misaligned. What if you change your NPM package name or something like that and you Hit a old GitHub page or something that's telling you install the wrong thing. Those are all very real things. Next thing we have here is Deno has a nice rid. Standard lib, and and what that means is that
Wes Bos
you don't have to npm install absolutely everything whenever you need something. So something like looking up MIME types rid For files, you previously, you'd have to go and get a package for that in node or, getting UUIDs.
Wes Bos
So So if you need, like, a a unique identifier for, like, a file or something, you'd have to go in npm install a package for that, and, that comes with it. So rid. It's kinda interesting where a lot of the Deno ethos is just go and install it from wherever you want. But, Like, we are all installing the exact same things over and over again. Yeah. Seriously. I'm trying to trying to think, like, what other, Obviously, fetch is a is a really good one that's that's built right in. I have a question for you. When you were looking into the standard library, did you how did you find the documentation? Because I found things
Scott Tolinski
To be kinda tough to part. Like, I found myself reading a lot of source. Not that that's, like, necessarily a problem, but I think that will be a problem for some people. Like, I found myself always going to the source. Yeah. The docs are, like, pretty good, but they're not, like, at the level of node. And I think that's just right now because everything is rid is working. But, like, I would say they're they're pretty good,
Wes Bos
but it's not at a point now where just, like, anybody can jump in. It's rid Definitely the read the source kind of people that are are playing with Deno right now. Yeah. Totally. Oh, one one kinda cool thing that they have is rid A date time parser. So you know in, like, PHP, where you for, like, 30 years, you've been able to format a date however you want? Yes.
Wes Bos
You can do that. And, you know, I'm just looking at it right now, which is is pretty cool. So you just import the date, time, standard lib, and then rid. You can output it however you want without having to to import, like, date functions or moment or something like that, which is pretty nifty. Word. Yeah. I didn't know that that was a standard. I just thought that was something PHP did, but the that is a Unicode standard for
Scott Tolinski
Formatting dates. Mhmm. Cool. Standards.
Scott Tolinski
So, next step is going to be WASM.
Scott Tolinski
So because Deno can run Wasm, essentially, with the same API that browser can, it means that you can use basically Wasm the same way that you would on the web. Can you can bundle to WASM too directly from Deno.
Scott Tolinski
So another thing you can do is compile Deno into a binary executable.
Scott Tolinski
Rid. So this actually came, I think, into Deno 1.6, and it's a self contained stand alone binaries where you can Deno compile To build your projects into stand alone executables.
Scott Tolinski
So, like, Deno is is really forward thinking there in terms of being able to utilize this in the same way that you could A higher level programming language is it does feel like an evolution of Node, like, full on. It's pretty cool. Like, I haven't done this myself, But you can also use web assembly modules
Wes Bos
in Deno. So if you have a a Wasm module for formatting video or something like that, rid. It doesn't necessarily have the MPEG Wasm. Yeah. It doesn't necessarily you don't have to to get, like, a, a native add on. You know, like, rid Remember back in the day when you would upgrade Node and your Sass would break, and it would tell you, like, all these errors and stuff? Yep. With Wasm, you can just compile those into web assembly modules, and I don't know if you would hit the same issues or not. But rid. Anything that is made for Wasm in the browser will just work for Wasm in Deno, which is pretty cool. I know Node is planning to support WASM as well. I'm not sure what the API will look like, but the fact that it's the same as the browser makes me so happy. Yeah. There's a lot of just, like, it's browser based. There's a lot of, like,
Deno runs WebAssembly
Scott Tolinski
Neat browser stuff or at least Yeah. Browser stuff in the design of the API for Deno.
Scott Tolinski
So if you're living on the web development edge, You're probably trying out some very fancy code. And if you're trying out some very fancy code or even code that just gets used by anybody, regardless if it's fancy, You're gonna want an error and exception handling service like Sentry at Sentry dot I o. Now Sentry is a really neat place to see all of your errors and exceptions happen in one spot, Allows you to catalog and categorize them based on what they're doing and how it fits into your entire application.
Scott Tolinski
Allows you to see who hit those errors, when they hit And what browser they were on, whether or not it was handled or not. Yeah. A lot of cool stuff, even the IP, the OS name, the stuff that makes it important to solve bugs. And if you have source maps, you can even see the direct line it happened within your, you know, maybe JSX or TypeScript files, something like that.
Scott Tolinski
So I am a huge, huge, huge fan of Century at century.i0.
Scott Tolinski
You're gonna wanna check them out. Use the coupon code tasty treat, all lowercase, all one word, And you'll get 2 months for free. Thanks so much for Century for sponsoring, and, let's get into multithreading with web workers, Wes. What is the well, you got a note here. I rid I just looked this up. I'm interested in this. I was like I was like thinking I was like, what other I was like, are service workers
Wes Bos
part of this? Like, is that even a thing? And then I I found in the docs The web workers are available in Deno. And, again, the browser API is exactly the same. So If you wanna do multithreading in JavaScript, you have to send that off to a worker, and it it works in the background in another thread. And then it comes back And says, hey. I'm done. Here's here's the pie I was baking you.
Wes Bos
And you can do that in Node, but the API for doing it in Deno is exactly the same as the browser, rid Which is really, really cool.
Wes Bos
So, like, if you wanted to do some resource and intensive rid Work. You didn't wanna block everything in your main thread, then you can kick that off to a a web worker, and it will do the work for you, which is pretty, pretty rid Cool. Pretty pretty cool. Just look that up myself as not something I have tried. It's not even something I've done a whole lot of in in the browser world, but just knowing that they've already done that is Pretty cool. It's gonna be very crazy. Next one is going to be speed. Deno is very fast. The fact that you don't have to specifically,
Deno is fast
Scott Tolinski
rid Run some sort of a build process while you're developing. 1 is fast. 2, it's built in Rust, which is also always very fast type safe.
Scott Tolinski
So, Rust is, like, primarily known for being exceedingly fast in general, so that's great for us. Basically, they they took the lessons from from Node and and expanded upon them. I rid. I think one of the big ones is ESM too. ESM allows you to just basically modify 1 file. But, again, since Deno runs TypeScript natively, it can just rid. Look at the TypeScript and run it rather than having to wait for any sort of bundle or even compiler necessarily to compile that file. I don't think that's rid necessarily true because Which part about that? The fact that TypeScript is not compiled. It still is compiled. It's just compiled under the hood because
Wes Bos
rid You have to give v eight JavaScript. Right? You can't give it TypeScript.
Wes Bos
So it it still has to be compiled, but it's It's all done. I keep saying it under the hood. Right? I thought it did that in runtime because it's a runtime for TypeScript.
Scott Tolinski
Yeah. Maybe I'm about that. Maybe it's it's not compiling it. I've always been under the the understanding that Deno is just a straight up runtime for TypeScript, and that runtime is built in rid Rust, they reimplemented TypeScript in Rust as opposed
Wes Bos
to having it be the Having it be compiled over. Yeah. Rid Okay.
Wes Bos
That might be true. That probably is true, and I I don't know enough of it. And I I was even thinking about that myself. I'm like rid Like, what do I, as a web developer, care that it's written in Rust? And, like, why is it written in Rust, but we we write our code in JavaScript? So What I understand here is that, like, v eight, the engine that runs JavaScript is written in c plus plus. That's the engine behind Chrome. Rid. And node is written in c, c plus plus, and JavaScript, and Deno is written in Rust. And how it talks between your JavaScript and your Rust, how those things connect to each other is written in notice, written in c or c plus plus. Rid. In in Deno, that's written in Rust. So if you go into the Deno GitHub repo, you can search for dot RS files. Rid I've provided a link to a little hello world one, and you can just read through the Rust code to see how it's, like, sort of passing data between Between JavaScript and passing that off to the V eight engine. So okay. So I'm I'm trying to to get to the bottom of this. Out of the box, TypeScript compiler
Scott Tolinski
Relies on both extensionless modules in the note what? In order to bridge this gap, Deno has so this says, Yeah. This is kind of a a tough tough thing to solve here because it does say Deno supports JavaScript and TypeScript as first class languages on runtime. So Okay. Yeah. So that tells me, look, there there probably is A compiling step at some point in there. I don't know. It says it supports it on runtime, though, because there is things about compiler hints. So I don't know. Yeah. If you know, tweet us at Sodex FM.
Wes Bos
Yeah. Because it's it's honestly it it's funny because even with notice, I don't rid. Totally understand how all of the c and c plus plus and all that stuff works. Mhmm. But it doesn't necessarily
Scott Tolinski
matter because we know that somebody is making is writing Rust code so that I can write my TypeScript in JavaScript, and it runs Nice and quickly. Yeah. Without needing a a webpack or something like that. Let's talk about these security flags because I thought this would be pretty interesting. So out of the box, If you try to, let's say, read a file in Deno let's say you just write a standard, like, f s, whatever. You read a file. It doesn't rid It'll allow you to. Basically, it'll give you permissions error. Same thing with writing to a file or even accessing the Internet in some sort of way. You'll need An HTTP allowance by saying allow hyphen net. And so what there is is there's basically a list of various rid Permissions of which we can just list off really quick here, which is allow e n v for environment variables, HR time, Which is high resolution time management, not something I've used allowed net, which allows you to give network access. And the cool thing about that is you can Scope it to specific URLs too. So let's say you only want to allow connections to specific, addresses, IPs, whatever, You can pass those in directly to give it a list, or you can just allow all domains. You can also allow read for reading files. You can tell it to read rid files only or allow run or allow write, allow plug in. There there's a handful of these things, and the ones that I found myself using the most would be rid. Net, read, and write as a web developer or also e n v. Those are the ones I found myself using the most. And then to be honest, when I was rid Starting dev in it, I often found it to be easy to, like, at the start of a project, to run Dena with hyphen capital a, which just allows all permissions. And then when I was ready to, like, get a little bit more serious about the project, I was then removed that hyphenate, and then it starts throwing the permissions errors so that I can lock it down to exactly what I need rather than, like, from the start trying to guess what I need. Yeah. Yeah. It's kinda neat that it has, like, sandboxing
Deno has security sandboxing
Wes Bos
built in right away because, like, that's kind of the scary thing about a lot of programming languages, node included. People always, like, rid. Say like, oh, like, why would you allow NPM? Because you just have, like, this random stranger's code arbitrarily executing on your server, And that's true for literally every every programming languages out there. That's not just a node specific problem. So The solution to that is you you run your program in a sandbox, like a Docker container, where it can't get out. It can't, like, l s l on your root and And fetch request your entire is is your entire hard drive over to, to something else. And this will allow you to rid. Sandbox it without having to use a virtual machine. And like Scott says, you can allow it everything, specific folders, specific files, just read, just write. Rid network access can even like, you could allow it to read and write your files, but not go out to the Internet, which is kinda cool because then it couldn't send your environmental variables to something or your file system. Like, I think about this. Like, you download some scripts, and sometimes people are like, oh, just run,
Scott Tolinski
and and and and I'm very, very sorry for whoever I'm about to say. Let's say Next. Js. I'm not picking on you. Let's just say you run you install Next. JS is like a global on your computer, and then you run Next. Js. You kind of are just trusting that Next. Js isn't going off because it's a node app. You know, there's that's a node file that's gonna go and do things. You're kinda just trusting that that's not gonna go start mining Bitcoin, which it's not. I I I I should've just made up a fake company. I'm I'm I'm not saying that anybody's do. But, like, this would if you were to do the same thing in this particular situation, you were gonna say, just run this random package that I got off the Internet. You know? Trust me dotts.
Scott Tolinski
Okay. I'm running trust me .ts. I hit enter, and then trust me .ts isn't gonna go ahead and and add and remove files or whatever. It's going to essentially, Well, it could mine Bitcoin, but only in the current folder that you allow it. Yes. Right. Yeah. So by permit having those permissions in place, it really does give you, In my opinion, a good amount of peace of mind about what you're actually running on your computer. That said, I've never had any issues with that in Node. Js that I've known of, but it it is nice that those those can exist.
Wes Bos
Next benefit we have here is that you can you can run them from anywhere. So, like, one popular thing that's is getting popular in Node. Js is rid is being able to NPX something. Yeah. Love NPX. One kinda cool NPX I found the other day is NPX kill dash port. Rid. If you have a process running on a specific port that's, like, beheaded and you can't figure out how to kill it, you can kill the process based on what port it's using, And NIP execute port will will do that for you. I love that. And one kinda neat thing is that you can publish JS or TS files to the Internet. You can literally run, Deno run, and then paste in the URL, and it will run the script rid That exists at that URL. Obviously, check check it first that to see it's not malicious or anything, but I think that's so so cool that rid. It didn't need to be compiled or bundled or anything like that. Like, so often, I find myself wanting to maybe contribute to a project, rid. But then all the tooling overhead and the compile steps and whatnot just get in the way. I'm like, it's not not worth it for me. I don't wanna spend that much time on it. Or in this case, you can just publish a little script up, and then you can tell us that, hey. If you wanna run this script, Just run, do you know, run, and then paste the URL of it, and that URL can live anywhere. Yeah. I love that about it. And then combine
Scott Tolinski
That with the permissions, and you can feel fine about running just a random script. Right? So I think that is a good time to talk about one of our new Sponsors, I don't have any, transitions worked out for them just yet, but this sponsor is one sponsor that's near and dear to my heart because it powers All of the video on level up tutorials .com that is released in the past year, which is mux.com.
Deno can run scripts from URLs
Scott Tolinski
Mux is the How developers build online video.
Scott Tolinski
It's a really cool platform that allows you to host video like never before in my experience. I Please go back and listen to our video encoding episode. Video on the web is complex nowadays. We have all these crazy formats like DASH and all these things that are, like, rid. Swapping out what track you're on based on the current bandwidth and latency and stuff like that. Video is complex. It's not just firing up an MP 4 in the browser. And so you're gonna want a service that handles if you're doing any serious or any video work at all, to be honest. You're gonna wanna have a service that handles all of the hard stuff, and Mux handles rid All of the hard stuff allowing you to get on demand encoding. So if a specific version of a video doesn't exist, rid Like, a 7 20 p version doesn't exist when that user hits it. It compiles it on the fly without you noticing, essentially, and then that video will be cached and ready to go for the next time. Re It also does some really awesome stuff. In fact, when we did our Syntax Live episode, we hosted very easily, mind you, read. Our own livestream on syntax.fmforward/live.
Scott Tolinski
We hosted our own livestream using Mux rid By just creating a livestream on Mux and then telling OBS what that address was, we dropped it into an HLS React player, and it just played it. It was very cool. It was my very first time ever doing a live stream on my own site that wasn't YouTube, and it went off without a hitch. It was absolutely flawless.
Scott Tolinski
Rid I can't believe how quick you did it. Yeah. It was just like, I don't know, 20 minutes or something. I did it in maybe less than that. The hardest part was finding the right video player. That was the hardest So, like, that's a good message. It I just absolutely adore this service. Mux is one of these amazing, amazing services. On over to mux.com. If you're building anything with video, you're gonna wanna check this out. It's built for developers.
Scott Tolinski
The API is fantastic. Great design all around. So check it out at mux.com, and create account, check it out today. And, if you wanna give this a try, you can also head over to level up rid .com and and give one of our videos a try. It's not gonna there's not gonna be a ton revealed there, but you can see just how fast and how everything Good quality everything is in action. So mux.com, check it out. And the URL for that is mux, mux.comforward/
Wes Bos
syntax.
Wes Bos
Re Next benefit we have here is this async out of the box. So one thing about Node, when Node was created, promises were not a thing, and async await was obviously not a thing. Rid. And now that it is a thing, a lot of the, like, core APIs and still even a lot of library methods are callback based. And if you wanna switch them from being callback based to being promise based, you usually have to wrap them. That's just because that's how the world evolved in that amount of time. But Because they're brand new and they have a clean slate for doing this type of stuff, everything is a sync await right outside of the box. I'm pretty sure there's top level await rid Inside of all of your modules, which is really handy for when you wanna set up a bunch of stuff in a module before the rest of the code runs.
Scott Tolinski
Big fan of everything being a sync await right out of the gate. Yeah. Top level await, which exists in TypeScript already, but having rid Top level await just exist in the platform. Oh, man. I don't know if you've you've done a whole lot of top level await, but I did it once. And I was just like, I want this front for everything now. Rid. So, when in fact, when I can't use top level weight, I'm always a little bummed out that I have to write an iffy an async iffy.
Deno uses async/await
Wes Bos
Next one is rid Node compatibility. So this is the one that I've been looking at because, like, we probably aren't going to be switching over to Deno Millions of packages out there that that we need, and I would not be able to move as fast or be as efficient If I were just using Deno because of all the stuff that's built into node. So they are working on a rid. Node compatibility, it's a module that is meant to have a compatibility layer with the Node. Js standard lib. Rid. So things like f s dot write file sync, that's actually already been you can kinda think of it as a polyfill rid Where they basically just, like, write the entire API for Node. And then inside of all of those API functions, they implement it As in, you know, that's exactly what a polyfill is. So it looks like maybe about half, maybe not. It's not an uneven half of the API has been implemented, which is kinda cool. Things like path dot join. And that's not because you wanna code your API with node APIs. Rid. It's because you probably wanna go grab modules from a a package that only exists in node land, and that's gonna be easy, especially, like, you get into these like, rid Like, I was working with a Canada Post node module the other day, and there's, like, 6 stars on it and 4 downloads in the entire time. Like, This is not something that, thousands of developers need. This is something that dozens of developers need. And is there gonna be a Canada Post module Oh. For Dino, probably not anytime soon. Right? Here's what you should do, Wes. You should head to their GitHub issues. You should file an issue and just say, rid. Make me Dino, please.
Deno aims for Node.js compatibility
Scott Tolinski
Add add types.
Wes Bos
Yeah. It's kind of cool, actually. If you if you look into rid crypto or anything like that. You'll be able to to see how they're how they're reimplementing it because rid. This is no different than you writing a module, but they're just writing it in as part of of, which is kinda cool. So rid I don't know when that will be done or if that will ever be done.
Wes Bos
I would assume that that would be a big thing because people wanna be able to rid Move over their projects to this if they want to. It's actually really funny that they had to polyfill require because Oh, yeah, rid Dude, because if you're using common JS modules, so you all you have to do is just polyfill
Scott Tolinski
or require. That stuff is a a PIA to me. Rid Yeah. The the require stuff? Yeah. Just in in this general switch over to ESM for me, it's like the amount of packages even that I'm trying to you know, that I have to deal with. Rid Require is not defined. Just Yeah. It's gonna be a rough couple years.
Wes Bos
I am so excited for like, not that rid Common JS was bad. It was great, and it was great when it was all Common JS. But now that we're in this, like, weird in between babble everything, Webpack config doesn't know how to handle certain things. It just freaking always pops up and Always. Yeah. That's just a growing pain from us switching over. So rid. I'm so stoked. That's part of why I'm excited about stuff like this that is just ES modules from the get go, And there's no babble conversion anywhere in that line word. Let's talk about what we
Scott Tolinski
built with it. Rid Yeah. So you built a course in it. What did you do in that? It's fun. I I did a a course for level of tutorials in oh, I think this was November, and this was, rid Deno one zero one for web developers.
Scott Tolinski
And what we did in it was, first, besides, like, doing the 1 on 1 stuff, re We we did some basic things where we did a, like, a CLI contract generator, which is a good project because it it shows you how to read a file, how to write a file, And how to replace text and and do those kind of things. But then for the most part, we got into even getting into, like, creating, Like APIs with the Oak server. So my my work primarily in the course, which is primarily how I've written Deno, rid Was really around how can you write CLIs, but also how can you quickly build a web server, and what are the caveats you run into. Like, some of the things that I found would be, like, packages that had, like, 20 stars in Deno or something like that, and you've just been like, This is, I guess, the package for that, but,
Wes Bos
so that's what I built in my experience. What I did with it is I've been primarily doing little scripts. So anytime I need to to script something, one example was I needed to download every single episode of syntax so that I could pipe it into Our transcript generator, and we have an API on syntax. So we hit that, but they needed to be renamed as we did it. So I couldn't just run, like, a rid Curl whatever of of all the URLs of the the show because it needed the name of the show needed to be formatted nicely. So I I wrote a little rid. TypeScript's Deno, thing. It was, like, 30 lines of code. Pretty pretty simple, but it's all a sync Oh, wait. By the start, he uses TypeScript. I needed, something to download a URL, so I just found a module called download.
Wes Bos
And rid. It's great. You just pass it the URL, and it downloads it. You, of course, have to run it with allow network and allow write flags so that it can both Go out to the Internet and download the thing and, also save the file locally.
Example Deno scripts
Wes Bos
I put a link to the Twitter thread. And in that Twitter thread, there is a GitHub gist, rid. Or you can run it yourself. And even if you want, you just simply just run, Deno run, and then paste the URL of the gist, And it will start downloading every single syntax episode to your hard drive. Nice. Pretty cool. Yeah. Yeah. So that was of the fun one. I've done a handful of other little ones here and there, but I haven't done like a web server or anything like that. And it just yet, but I think it's next time you have A little script you need to run? Try do it in Deno because it's it's fun. Yeah. Especially because, like, the hardest part for me in doing that would have been, like, having
Scott Tolinski
Libraries, bringing in libraries because it's fresh. Right? We'll just say it's fresh. But, like Yeah. Writing a simple script or something I would have done in Node just by myself, Man, it it can't beat the startup time for just running a TS file and running Deno whatever and having it just work. Right? I mean, that Yeah. That's great. Oh. There's no setup. We should also I should mention quickly, those of you who are used to nodeemon, which I always used to call nodeemon for some reason. I I just have no idea. I have there's probably videos of me on YouTube calling it Notemon because I'm just dumb. And, like, Denon is the Deno compatible version of that to run a script and have it Update when a file changes. So d non is the the new version of nodemon that used to exist rid In node land. That's something I would hope would be built in, like hot reloading
Wes Bos
for JavaScript files. You know? Like, I guess you could make it Do that like it. It does the import. Every single time you hit a thing, it doesn't import. You could probably mess with the cache somehow.
Wes Bos
I'm not sure. I haven't looked into that, but that's interesting that that is a a third party package that you need to
Scott Tolinski
use. Yeah. Rid. And the coolest part I I found about any of that stuff is that, like, when those packages do exist, such as, like, Denon exists. Right? And who knows if it gets built into it. Right? It but when it exists, it is really easy to look at the source of Denon. Right? If you go to deno.land And then do the third party modules and then search for Denon, you can see that it's, like, really not, Like, that intense to paw through the actual code, but it is it is its own thing. It looks like there's maybe even several competing ones, but Denon is the one. An interesting world of, like, all these new tools, new things that are kind of doing the same thing.
Scott Tolinski
Yeah. It it's it's an interesting experience.
Wes Bos
So where do you host Deno? Any Linux server, you can install Deno to just like node. Yeah. And then in order to run your application, you just rid Say, Deno, run the name of it. And assuming you have a web server and whatnot, that will fire up. You probably wanna still put NGINX in front of it. You still have to do your SSL certificates.
Wes Bos
That part of it is is no different.
Wes Bos
So any Linux server will be able to do it. Begin.com, we've had Ryan LaRue. They do They allow you to just deploy Deno too. That's probably I think that's the only one. I'm just looking on Reddit right here. Somebody said fly. Io supports Deno as well. Hey. This is not the first time I've heard of fly. Io in the past
Scott Tolinski
couple of weeks here. Rid. Yeah. This is I just went to this site. This is kind of interesting site. I wanna do a new new hosting episode. I've I I really went down the rabbit hole in hosting.
Scott Tolinski
So Yeah. We'll have to do some sort of a new hosting episode lately. But, no, this fly to I o looks really nice, but I have no rid. No experience with it beyond looking at the pretty looking home page. Very much like early days, no jutsu was the way to get your node apps rid. Online. I'm very curious to see
Wes Bos
which companies are gonna come out running. I think it's gonna be, like, at that, Versa will probably rid. Be able to host this pretty soon. It's kind of early days, and I bet there's not a whole lot of Dino running a production. Rid. It's mostly just people playing with stuff and making little side projects, so it's probably not a very, not a really good return on investment, But
Scott Tolinski
I appreciate it. Yeah. So I guess it's a it's a good lead into the last thing, which I wanted to guess, say, talk about was, like, our final words on, like, what do we what do we feel like the rid. Current status of Deno is in, like, should you use it? Should you try it? What what should you do here? I'm going to say that now is a great time to learn, Dino. It's a great time to learn the basics of it. It's a a great time to mess around with it. I wouldn't necessarily rid Say it's a great time to write critical work, unless, of course, you have the time, the resources, and the mental energy rid To deal with the things that will come along with not having the libraries you expect to be there, having to write a lot of stuff yourself, having to paw through code, Those are the types of things that you are definitely going to hit if you're trying to use this in any sort of substantial form. Not that it's not good because it's fantastic, But it is not used to the degree that node is used, and there is a lot that comes along with that, rid At least right now, well, you have to use Deno libraries.
Scott Tolinski
So while the libraries are still being written and evolved, I found the documentation ready. To be especially sparse on third party modules sometimes.
Current status of Deno
Scott Tolinski
I found myself reading a ton of source. There'd be times where things Just flat out wouldn't work, and I would have to read the source to find out why because the documentation had been left behind. Even just trying to connect to a Mongo read. DB database. I tried 3 packages, all of which had some sort of weird errors so that it like, by all means, it's not a problem with Deno, but I wouldn't say many things in that land are as polished to the degree that Node is. Granted, Oak Yeah. Fantastic. Oak is fantastic, And working in Deno itself has been fantastic. I wouldn't necessarily use this for anything critical or anything it doesn't need it for right now, Unless, of course, you're doing it for funsies because that that's that's very valid as well, and I I highly support using it for fun. But that's rid. Probably where I draw the line, I think, right now.
Wes Bos
Yeah. I I think even we said on previous episodes that Adeno is rid. Something to latch onto if you wanna, like, hitch your wagon to something.
Wes Bos
And since then, we've I've seen, like, a couple people come out with rid Courses and newsletters and and all that stuff. Wait. You saw somebody come out with a Dino course? Yeah. Who? I think it was, Super Mario tutorials or something like that. That's pretty good. Super Mario tutorials. Yeah.
Wes Bos
Level up tutorials.comforward/pro.
Wes Bos
Oh, yeah. What what do I think about it? I think, yeah, I think it is the language for writing little scripts, doing fun stuff. Rid. It is not the platform for building your next production ready application. You're simply gonna hit way too many rid edge cases of things that you're probably the 1st person in the world to run into this, whereas, like, like, a a package like Mongoose rid. Has, like, millions of people using it, and nothing is battle tested, has all the edge cases likely hammered out of it, whereas re Do you know package that has 6 downloads? You probably haven't found all of the issues. And do you wanna find that issue in production? Probably Probably not for most people. I would also say, like, if you know JavaScript and TypeScript, you're already, like, 90% of the way there. Yeah. Rid. The really the only difference is that you just have to find out what is the equivalent of, like, how do I download a file in Deno? How do I save a file? How do I Not even, like, how do I make a request in node? Or how do I make a request in Deno? Because it's just browser API. So you have that one for you. If you know the browser API, it's already coming into into Deno. So I'm really excited about it. I don't know if it We'll go anywhere. It might light a fire under nodes bottom
Scott Tolinski
to start implementing some of the stuff that that we just said we really like about this. But I'm I'm pretty excited about it for the future of JavaScript. And, also, it's just another another platform for us JS devs. It's rid It's another platform, and I'm excited about it too because if all it does like, if it all it does is give us all of these features within node, then that's cool too because all of the feature set rid Of Deno is very good. So, like, I really appreciate where where it's at and, what it's hopefully going to do for some of the JavaScript in the server side aspect for us. Alright. We're moving to some sick picks. You got a sick pick for me there, Scott? You bet I do. And, and then you know me, I'm podcaster. I'm a podcast rid fien. I'm a fien for the podcast before I became a teen. Not microphones with the cones with ice cream, or cones like, cones with ice cream. I don't know. I forget what that microphone theme. Either way, I have a really good tech based podcast that's not, like, rid Tech education is not web dev, but it's related to us in all sorts of ways. And this is a fascinating podcast for me because rid I was, a a user of this application, which many people were. Did you guys ever get HQ up there up north? What a HQ
Wes Bos
is that a magazine? It's an app. Rid Oh,
Scott Tolinski
I've never heard of it. So it got really popular here, like, so much so that The Rock was on it at one point. So HQ was an app that did, like, trivia, And it was a live hosted trivia game show that would happen twice a day. And your phone would buzz, and it'd be like, HQ is on, and you'd open up HQ. You, and it was a trivia game show that they would ask questions for. And if you lasted the entire thing, you got to split the prize. The prize money would be, like, You know, $200,000 or something, you would get to split the prize money with however many people completed this thing.
Scott Tolinski
So either way, this this app was re Hugely popular, getting millions of people using it twice a day. And so this app is talking about it's called Boom and Bust, the rise and fall of HQ Trivia. Basically, how rid How HQ Trivia came to be and what happened to it because I haven't played HQ Trivia in a long time, and I didn't realize there was this re Hugely fascinating behind the scenes, with the owners. There's, you know, coups involved and, all sorts of, like, really interesting stuff going on. Rid. One of my favorite things about this podcast is they didn't necessarily shy away from talking tech specs in a way that was, like, accessible. So they'd be like, rid The application's built on WebSockets. What does that mean? Well, it means that this happens, and therefore, because you have a game show that happens twice a day With, you know, 1,000,000 connections all happening at the same time via WebSockets, the dev team, basically, before Each show had to start. They basically had to be like, alright. How many people do we think we're gonna get today? Alright. We think we're gonna get 20,000 people. We should spin up x, rid y and z servers to host and connect all of those WebSockets. Right? And if they were wrong, the whole thing would be super glitchy, rid Or they would be spending way more money than they, you know, needed to because that's a crazy amount of data to be flossing with. So I found this podcast To be absolutely fascinating, the personalities involved hearing the full story. So boom and bust, h the rise and fall of HQ trivia. Anybody who played HQ Or is just interested in this kind of thing. We'll find the start up culture, whatever. We'll find this very, very good. I ain't got a sick pick up pillow. I got this Wicked pillow,
Wes Bos
I don't know. A couple months ago, because I was having some, like, neck pain in the morning where I was sleeping too cricked.
Wes Bos
Sometimes the pillow was too high, and sometimes it was too low. And rid I was like a Goldilocks about this pillow, and I found this, orthopedic memory foam pillow that has, like, a little cutout for your head. Rid Have you ever, like, had a masseuse put their Oh, yes. Fingers underneath your skull Yeah. And they're just like, oh. Yeah. Like, this is the feeling that this rid. Pillow gives you and, like, it's probably not for everybody because everyone's really fussy about their pillows. But I have tried so many pillows over the years, and I finally got one of these weird looking ones. Rid. And there's, like, a spot for your arm to go and a spot for your head, and it is awesome. I I can't believe I we just went to the cottage for a couple weeks, and it didn't bring it with me. Rid. And I was, like, so regretting not bringing this thing up with me. So I'll link up the one I got. There's tons of them over the Internet. You can just read the reviews rid off and see what works out. But, I was happily surprised about that helping my helping my sleep a little bit more. Rid What is the name of the pillow that you got? Because it's so funny. It's called the it's one of these stupid, like, Amazon names.
Wes Bos
Marnur.
Wes Bos
M a r n u r. It's one of those ones where you're like, oh, I got the Marnur.
Wes Bos
And then you, like, scroll down, and there's, like, 11 other Kines that are clearly the same pillow. Yeah.
Wes Bos
So I wouldn't play too much into I'll link the one I got. Obviously, I I like it. I did my research, and it it worked well. The only weird thing is it it smelled when I got it, and that happens a lot with, memory foam. So you had to, like I off gassed it for Couple days before I actually slept on it, and now now it's great.
Scott Tolinski
Sick.
Scott Tolinski
Cool. Shameless plugs. I'm going to plug one of my courses. The latest course on level up rid Or else at the time of recording this video is ESM and Snowpack.
Scott Tolinski
We talk all about using ECMA script modules with Snowpack In this latest course, we talk about what ESM is, why you might want to use it, and how Snowpack fits into that picture. Sure. Because you might think, oh, I can just use e s m in the browser. I I guess I don't need Snowpack. Well, Snowpack actually helps out in a lot of, like, really interesting ways. And I've had a lot of very hands on experience with this because our level of tutorials new site is built in Snowpack, and rid Wowzers. I'm a big, big, big, big, big fan, and, we're gonna have to have Fred back on here because I wanna talk to Fred about how much I love Snowpack now. Either way, this course is all about Snowpack, how to use it, how to even, like, use things like, you know, Sass in it or TypeScript in it. There are all these little things about working with Snowpack and ESM in the browser. So check it out, level up tutorials.comforward/pro. I'm going to sick pick rid All of my courses, westboss.comforward/courses.
Wes Bos
You can take a look at everything I got there, CSS, JavaScript, Gatsby, React, rid Vanilla JavaScript, you name it. I'll I'll call out 1 beginner javascript.com.
Wes Bos
If 2021 is your year, slam dunk JavaScript.
Wes Bos
Check it out at beginner JavaScript .com, and use the coupon code syntax for $10 off. I should have plugged my, my Deno course on the Deno episode.
Scott Tolinski
Oh, yeah.
Scott Tolinski
Real quick before we get in here, I I do actually I I've realized that I plugged, like, the latest course on level up tutorials instead of the Deno course, I have a Dino course on level up tutorials, and this shows just how good of a marketer I am. Head on over to level up tutorials.com. And, also, If you sign up to get that ESMPAC course, snowpack course, there's also a course Deno 101 for web developers, which will teach you all about the basics of Deno And getting in there, talking about some of the stuff we said, like how to build a CLI kind of stuff, but as well as the types of thing you'll wanna know as a web developer to build web servers and Have fun with those ways and understand some of the things we talked about in this episode. So if you're interested in learning Deno, level up tutorials.comforward/ Tutorials forward slash dino 101 for web developers. I'll have this link in the description. For here, give it a give it a gander. Alright. Thanks so much for tuning in. We'll catch you on Monday. Peace. Peace.
Scott Tolinski
Head on over to syntax.fm for a full archive of all of our shows, and don't forget to subscribe in your podcast player or drop a review if you like this show.