414

December 15th, 2021 × #webassembly#adhd#typescript#graphql

Potluck - enums, WASM, Lighthouse, Redirects

Scott and Wes answer questions on Chrome UX metrics, REST vs GraphQL, using enums in TypeScript, WebAssembly, ADHD as a developer, redirect status codes, and more.

or
Topic 0 00:00

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 Boss.

Wes Bos

Welcome to Syntax, the podcast with the most delicious tasty treats about web development rid Out there today, we've got a potluck for you. This is where you submit the questions.

Wes Bos

We provide the answers. We haven't done a potluck in, I don't know, maybe 6 weeks or so. We've got all kinds of really, really good questions about, Variables and Astro and Express and Koa and How do you handle redirects but can keep the verb? Some pretty nerdy ones.

Wes Bos

What is the difference between gRPC, rid The REST, RPC, GraphQL, and webhooks.

Wes Bos

Oh my goodness. Some good ones today. We are sponsored by 3 awesome companies, Sanity, Structured content, CMS, Sentry, error and exception tracking, and Linode, which does Linux cloud hosting will talk about all of them partway through the episode.

Wes Bos

With me as always is mister Scott Talinski. How are you doing today, Scott?

Scott Tolinski

Oh, I am doing pretty good. Got my, workout in this morning. I don't often, like, workout before work, but On the days that, like, Courtney has to go to work super early you know, she works in the school.

Scott Tolinski

When when she has to go to work super early and I'm all I'm woke up, I'm like, you know what? I might rid. A workout before we get going for the day, and it's always nice. So That's awesome. Feeling feeling ready to go even though I, And I did need a little bit of caffeine to get me going, but it's all good.

Scott Tolinski

Did you use your, what's it called, tonal? Is that what you're still using? Yeah. The tonal, dude. It's incredible. I'm on a 7 week streak. I I work out maybe 5 days a week on the tonal. And, man, it's amazing. I never even think about how much weight I'm lifting. I just show up. I push the button and it auto sets everything for me, and it tells me what to do. And I say, yes. Yes, Tonal. Yes, sir. Thank Will do. GitHub Copilot for Working out. It really is. If if it doesn't do the lift for you, that would be sweet. Oh, yeah.

Wes Bos

Wow. That's rid. Cool. Alright. Let's get into the questions. First1 we have here is from Felicia.

Wes Bos

I just rid. Came aware of an initiative over at Google Chrome to start measuring user experience beyond the complete page load.

Wes Bos

C h ttpcolon//github.comforward/ no. They they they link to a, A GitHub issue where it says, they they detail what it is.

Wes Bos

What will this do to our cherished best practices of deferring scripts, rid. Filesheets, images, and fonts, is it back to the drawing board? Or is this not as big of a deal as I think it is? So I actually haven't taken a look at this Have you seen this, Scott?

Topic 1 02:33

Google Chrome measuring user experience beyond page load

Scott Tolinski

I haven't done a a super deep dive, but I think my answer is not going to change regardless.

Scott Tolinski

You know, my opinion about any of these tools, whether it is Lightroom or or Lightroom, Lighthouse or, one of these, You know, performance trackers or SEO trackers, they're they're only as, like, useful as the person that's, like, reading it or consuming that data.

Scott Tolinski

So if you're if you're kind of just running lighthouse and blindly accepting the scores or saying that that's like some sort of definitive proof, I I would say that's not probably a great strategy, and what you wanna do is interpret the results. Right? It it's running these these tests on your site regardless of what they are. And then so it's back to you, the data, and it's up to you to interpret whether or not that's good or not. Like, not all sites that have a 100 on light Like, I can probably say light box, light whatever. Not every site that has a 100 score on lighthouse is any good, and there are plenty of sites that don't have that score That are also very good. So again, they're all about how you interpret this information, I suppose. And it it gives you a road map. So what they're doing is they're expanding the lighthouse score from just being,

Topic 2 03:13

Lighthouse scores useful but don't blindly follow

Wes Bos

like a very simple page loads and then you get your score at 2. Rid. Okay. Well, as the user uses it, like, if they click click a menu, and it drops down a whole bunch of items, then rerun the accessibility.

Topic 3 04:13

Figma uses Rust via WebAssembly for performance

Scott Tolinski

Or,

Wes Bos

like one thing that one of our sponsors does, Sentry, they provide you speed analytics based on just Stuff that happens on the page, like, if clicks are very slow or, when there is arbitrary interaction on the page Mhmm.

Wes Bos

Those are things that can really, really hurt the user experience. So they're trying to figure out how do you, How do you gauge the experience of somebody actually using your website and not just loading your website? And I I think this is great. And it probably will, rid. Make a few people upset, especially these people that have a one h one tag on their website, And they say they get 100 on Google page speed score. Yeah. Right. Yeah.

Topic 4 05:03

Tools over rules for performance metrics

Wes Bos

Because there's more there's more to it than than load time. And this is good.

Wes Bos

And again, this is always about tools over rules. And you should you should always Think about the person using your website and not just, oh, I need to defer loading of a font and then and then it's amazing website.

Scott Tolinski

Rid Yeah. Totally. Hey. And I I agree. Again, it like, you wanna run these tests and look at the results and act accordingly. But there is an eye iTest component, and you do wanna, you know, make sure everything feels and looks nice while you're using it. But again, you know, these things are good for Missing tags, SEO tags, whatever. But, yeah, don't don't follow them as the the word of, truth, so to say. Next question here is from Mike.

Scott Tolinski

Quest greetings. Noob question alert.

Scott Tolinski

Noob question alert.

Scott Tolinski

How can I ensure that I am executing npm commands safely? I know that you shouldn't execute npm as root. I am am I a root user on a Mac if I have admin rights? Question mark. I think Mac disables root user by default. I In pseudo things, so is that a yes? Okay. So Mike is basically adding asking, hey. If you run an NPM Script or a node script on your computer, how can you be sure that this thing isn't either, you know, maliciously adding or removing files from your computer? And the answer to that is rid Global if you if you do want to install things globally, which there are some things that are are good to install globally, outside of a package, You want to make sure that you do not run sudo npm or n p x, whatever the command is, because sudo is going to give that admin Right? And it could cause some malicious behavior. So if you ever see a Stack Overflow p question where somebody says, I ran npm install hyphen g Sass or whatever, And you're telling me I don't have permission.

Scott Tolinski

Do not just run sudo whatever be not because, you know, installing Sass that way is bad, but It's opens you up to to running things on your computer that you don't know what it is, and it is something that you wanna be cognizant of. And I think you can just change the permissions on NPM itself, and that will fix those errors. But either way, don't don't just arbitrarily run global scripts on your machine if You're not exactly sure what they're doing. If you wanna be safe about it, it's good to know what sudo is doing on your computer.

Wes Bos

Because for a lot of people, that's just what you have to type in front of the thing to make it work. Oh, yeah. And it's it's kind of unfortunate, and you have to You should probably dig a little deeper into how how to properly fix that. I even I forget what package it was. It was a couple months ago. I globally installed something, and I just popped a sudo in front of it, and it's like, we don't support installing it via sudo. And I was like, that's okay. Good job. Thank you. That's cool. Thank you for catching me on that.

Wes Bos

Next question we have here is from the viewer. You guys have talks about prefixing booleans with is or has, and I really like this convention.

Wes Bos

However, if you have a function like is sick and you want rid. Just set a variable to the results of the function.

Wes Bos

What do you name? That variable. You can't use is sick or you'll get a name collision in the functionality.

Topic 5 08:16

Naming functions vs boolean variables

Wes Bos

Rid I usually end up, renaming the function get is sick, but that is just sad.

Wes Bos

Tell me there's a better way. Rid. PS, I love the show.

Wes Bos

I was gonna say before I even finish reading this is that I usually just pop a get in front of it. I'm just looking at some code I'm writing right now, and I have get rid stream, get object list, and get session.

Wes Bos

So, it this is a little easier with TypeScript because you can just hover over top of it and see Mhmm. The type That it returns. The reason why we have these is or has in front is just sort of as a, what do you call that? A a notion, Indicator to help us out. Label. Yeah. An indicator to to what it is.

Wes Bos

But you could call it get sick status, because that would that would be good as well, but I don't I don't see anything wrong with that. Yeah. I I do something very similar, but like

Scott Tolinski

rid Like this person saying, I don't ever name a I I never name a function is something. Right? I would name just the bully in that. So that's kind of what I got out of this is if you have a function named is sick, but I would never do that. The function would be get is sick or get sick depending on how I'm feeling that day.

Scott Tolinski

But just like UI usually prefix a get or a set or update or something, a nice little identifier there on the function And only use the is or has or the boolean itself. That that's just how I do it. Alright. Next question is from Ben Lammers.

Scott Tolinski

Ben says, hey, Scott and Wes. Hope you're doing well. Recently, I had a few scenarios where I debated between using an enum as versus a union type in TypeScript.

Scott Tolinski

Union types seems simpler, but also seem to be a matter of preference. I was wondering if you guys prefer 1, or maybe some of the benefits of them. Thanks. Okay. So an enum is kind of like an object where it has properties and values or just values that are are there.

Scott Tolinski

And a usually, this is used if you wanna say something is one of these potential values. It is one of these values within this enum, but not outside of this enum. So that way, if the inside of the enum says status as a string or something, Then if you don't have even the capitalization correct on that status, it's going to fail because it's not the same property. And string unions are very similar where you're saying, hey. This type rid Can be, this string or this string or this string or this string and nothing else. So on the surface, those seem like they're very, very similar, and they are they're very similar use cases.

Topic 6 10:20

Enums vs string unions in TypeScript

Scott Tolinski

The only reason I tend to use enums more than string unions is because with an enum, you can actually use it in your JavaScript code, As in you can do comparisons.

Scott Tolinski

So if you were using a string union and doing a comparison, you'd be hard coding a string in there. Like, thing is equal to a string of active.

Scott Tolinski

Right? However, if you have an enum, you could say, If thing is equal equal equal to status dot active, which is referencing One of the properties in the enum directly and not just an arbitrary string, this, to me, becomes easier to debug when you're updating things or need to change any of those values.

Scott Tolinski

And I I just kinda like the way it makes few things feel, like, secure. It's not like, hey. Here's the the string that needs to meet the requirements. It's like It's using physically one of the actual chunk requirement types.

Scott Tolinski

I don't I don't know if it matters too much. I think it is more of a A preference thing, but I do like that feature of enums in TypeScript. This reminds me of in in Redux where you have your actions, and people would rid. Take a string of the action, like, incremented,

Wes Bos

and then they would just, like, make a variable called incremented and then put a string in there, and then they'd use that variable everywhere instead of an actual string.

Wes Bos

And, in almost every case, I was just like, well, I get it, rid But, like, you're just you're just typing the same thing without quotes around it Yeah. At the end of the day. And, like, maybe that makes, refactoring a bit easier because, rid is an actual type, and it's variable. And you can reference those things very easily versus just doing, like, a finder place on a string.

Wes Bos

Rid. But honestly, I I've I've gone back and forth with, the using an enum property rid To check something and just using a plain string. And I find that sometimes even with the enum, I have to look. Okay. What was the enum set to? Mhmm. So I can look it up. But the the benefit of like Scott said, the benefit of using enum, also is that enums are the only thing in in rid TypeScript that are compiled into your JavaScript at the end of the day. The rest of TypeScript is stripped out, but enums can are actual values. They're they're And you can use those values even to do simple things like populate a select drop down.

Wes Bos

You have rid. Active, inactive, or canceled in a, in an enum, you could loop over that enum and and automatically populate the drop down, which is pretty cool. So, rid we don't have an answer for you. Sometimes unions and sometimes enums.

Topic 7 13:19

Enums useful for populating dropdowns

Scott Tolinski

So don't don't sweat it too much. Yeah. It really depends on the context for me, and they are very similar in their usage.

Wes Bos

Next one we have here is from Yorn.

Wes Bos

Rid what is web assembly? What problems will it solve? What are the benefits for whom? Rid. When is it coming, or is it already here? What must I learn? What can I forget? Is that even learned yet? Alright. WASM, web assembly. We've talked about it, Quite a bit on this show.

Wes Bos

I don't know if we've done a full show on it, but we've, we've just, like, kind of, like, have we? Let's look it up. We've done so many shows now. Know if we have done a PhoWasm show.

Topic 8 14:03

WebAssembly allows other languages in browser

Wes Bos

Nope. We probably should. So web assembly is rid. The ability to run other languages, in the browser And interface with them with JavaScript. So a really good example is that Figma, you know, Figma, the What do you call it? The design program.

Wes Bos

They you think, oh, it's written in JavaScript and CSS, and it's amazing.

Wes Bos

Most of the, like, heavy lifting of Figma is written in c plus plus. Mhmm. And then they use JavaScript.

Wes Bos

They run it rid in WebAssembly and they use JavaScript to actually interface with it. And another example is we had, the folks from rid Stackblitz on, and they are running, Node. Js in a container with WebAssembly.

Wes Bos

So, like, you can kind of think, like, okay, Because of Wasm, where you're able to run literally any language you want, Rust, c plus plus,

Topic 9 15:13

Figma uses C++ via WebAssembly

Scott Tolinski

Probably PHP. By the way, Figma is also using Rust for quite a bit of stuff too. Oh, via via, WebAssembly, I'm assuming? I I don't I'm not entirely positive, but, yeah, they have some really interesting blog posts about their usage of Rust and why they rid. You gotta get them on the show. I think that would be such an interesting show is asking them, like, how do you

Wes Bos

how do you actually write c plus plus. And then You know what, Wes? I did do, videos for Figma at some point and got a lot of contacts over there. So Pick up Phone, mister Chielinski. We gotta get them on. Let's do it. Yeah. An awesome an awesome, podcast to have them on. But it it's really interesting to I'm just I just searched Figma Rust. It says, we wrote our multiplayer server in Rust and saw a dramatic server side performance improvements.

Wes Bos

Rid. Okay. So that is probably not Yeah. Not web Yeah. That's probably not running in the actual Figma app. That's a server that runs somewhere to talk to one to another.

Wes Bos

Rid But pretty, pretty cool. That's I'm I would like to do some WASM myself because I just rid hearing about really cool stuff. The problem is I don't know any other languages.

Wes Bos

I guess you could run Node. Js in Wasm, though. I have not done any WASSoming, but,

Scott Tolinski

You know, some people definitely get concerned about it taking over their jobs and and things like that. I mean, there's always a concern with stuff like this, especially because these languages that are Primarily being used for Wasm performance wise, like Rust and and c, plus plus or whatever people are using.

Scott Tolinski

Golang.

Scott Tolinski

I I honestly don't know too much about what languages people are using for Wasm besides Rust. But, you know what? They're not going to be things that you really need to worry about. And oftentimes, what we're seeing with many of these things is that the tooling or the people who write this stuff, You know, they write it, and then you could take advantage of it and use these things. There there are some situations where it would really come in handy. I know that, MongoDB for their Compass app, which is very good. They offload a ton of their heavy processing of their data into WASM specifically. There's a really good conf talk on it, But, you know, not everybody's doing that, especially if you're a UI designer. As a UI designer or developer, you're building UIs, react, or whatever.

Scott Tolinski

Yeah. You don't need to really know anything about Wasm other than the fact that it is. Look what it is. It's WebAssembly in the browser. Or Here's here's another good example. Rid. I just went to the awesome Wasm.

Wes Bos

I was like, I bet there's an awesome Wasm repo, and there is. There's a huge, There's a huge repo of it in one of the one of the Wasm packages they have, which is jq. It's a JSON processing tool, And it runs in WebAssembly because I'm assuming it's written in some other language.

Wes Bos

And if you have, I don't know, a 1000000 records that you have to rid. JSON parse. Doing that in the browser would probably crash the browser. It'd be very, very slow. You you have to do it with streams and buffers and all that stuff. And, rid. Other languages are very good at doing data processing and doing it very quickly. So often, that's why people will reach for their languages to do that.

Wes Bos

And the fact that you could run that in web assembly is pretty nifty. Some one of the comments was I hadn't said nifty in a while, so I Try to bring that back. Pretty nifty. Hey. You know what else is nifty? One of our sponsors. What's nifty? Sanity.

Scott Tolinski

Sanity.

Wes Bos

It is. Hey. Sanity is rid. Super, super nifty. Sanity is a unified content platform that powers better digital experiences.

Wes Bos

Everybody that uses Sanity is gonna love it. Why? Because you, the developer, you get to write just plain old JavaScript or TypeScript to define your schemas for your data. You can say, alright. I have rid. I have a person. That person has a name and a photo, and then I have podcast host, and that is related to a person. And then I can link all these things together. And then, the marketing people on the other side, once you've built this thing in Sanity, the marketing people are gonna rid using it because there's amazing UI to edit your data and to relate it and to make custom workflows. You got rid People have to get it approved by the lawyers. The lawyers are gonna love logging in and, and approving this thing, and It's just a awesome everybody everybody's happy when you use Sanity because it's just a it's from writing the actual code to using the UI, rid and compressing your images, you name it. Sanity, every it makes everybody happy. I think that they should put that on their website. What is Sanity? It makes everybody happy. Yeah. It makes you happy.

Wes Bos

So go to sanity.ioforward/ syntax. That's gonna get you double the free usage tier.

Wes Bos

Thank you, Sanity, for sponsoring. Sick.

Scott Tolinski

Super cool. Alright. Next question is from Will Adams. He says, you recently did an episode on the MacBook Pro. I'm curious as to what happened To Scott using Linux, I I what is I IRC?

Wes Bos

If I recall.

Scott Tolinski

If I recall.

Scott Tolinski

That's an odd abbreviation. If I recall, he's from Oh, if I recall correctly. Oh, if I recall correctly. Yeah. I was like, recall? Two words? What? Rid. I I RC, he switched to Pop!OS a while back. Okay. So here's the status of my Linux laptop. Linux is Fine.

Scott Tolinski

It is not Mac OS. I I will tell you that. It's it's not you know what? There's a lot of upsides to Linux, but there Has been a lot of trouble. And if I wasn't fluent with the command line or used to using the command line to do anything, Honestly, that computer is almost dead in the water just because Pop!OS, Linux in general, it's it's not the same experience as you get working on rid. A Mac, but I didn't buy it as a production machine. And what I did is the reason why I bought that machine is because at that time, I had 1 laptop in the house and 1 laptop only. My wife did not have a computer. She didn't have a laptop.

Scott Tolinski

I had 1 laptop, and if that thing went down or went away, I would have nothing to get my work done on, so I bought it a a cheaper Pop!OS Linux laptop as a backup instead of going with, like, a Mac. But To be honest, I should have gotten, like, a MacBook Air, for the cheapest MacBook Air or something like that because, honestly, I just don't think the experience is very good on Pop!OS or Linux for that matter.

Scott Tolinski

The machine's fine, but, you know, there's driver issues occasionally.

Scott Tolinski

You You have to go to the command line to do a whole bunch of stuff. A lot of the applications are half assed.

Scott Tolinski

So, yeah, it's okay.

Scott Tolinski

Honestly, now that, I've gotten this new computer and my wife has now gotten my 6 my other MacBook Pro, I I think I would like to sell this Linux machine because I'm just not going to use it. So honestly, if if anyone likes it, maybe I'll put it up for sale. We can talk about this right now. If you are interested in a, a used system 76 laptop, Just hit me up on on Twitter. We can work out a price or something for it. It's in perfect condition. I just hardly ever use it. So, that's where it's at. Backup machine got up to be a backup machine, and it's fine. But it's by no mean competing with this machine whatsoever. I'm very curious if you could hack wrecked. Because

Wes Bos

it's like a like a juicy, beefy computer. Right? Not really. I got I got, like, I went more portable with it. I think Oh, okay. Yeah. Rid. You didn't get super juicy. Okay. Alright. Well, we'll start the bidding at $1. $1.

Wes Bos

Let's talk about one of our sponsors, Linode. I've talked about Linode a lot. I'm gonna focus on their marketplace today. So Linode is a Linux host, and You can you can do literally anything you want on these servers, but they have this thing called the marketplace, which allows you to install, a whole bunch of stuff rid To run your server, so they have all of the popular control panels out there. So you want cpanel or Plesk, webadmin, rid. Wabuzio, Cyberpanel. You name it. You can install that and get these control panels for managing it, but they also have stacks. So if you wanna get, rid.

Wes Bos

MERN.

Wes Bos

You have a MongoDB, Express, React.

Wes Bos

And what's the end in what's the n in, In MERN 4? No JS, obviously.

Scott Tolinski

I was like, different question.

Wes Bos

So they they rid. Basically, you click it, and you will automatically have MongoDB Express, React, and Node. Js and their firewall installed for you. And you can get up and running hosting your React and Express application super quickly. So check it out. They're gonna give you a $100 in free credit When you go to linode.comforward/syntax.

Wes Bos

Thank you, Linode, for sponsoring. Next question we have here is from rid Shodar Khada, how do you batch requests in Node. Js to an API? That's a kind of interesting question. So, rid you have to send off, I don't know, 6 or 7 requests to an API for a whole bunch of stuff. How do you batch those together? Rid So there's a there's a couple, like, different ways you can sort of look at this is I've got to make 7 requests right now. How do I do that? Well, if the API doesn't support batching, in. You are kinda out of luck.

Topic 10 24:27

GraphQL allows batching requests

Wes Bos

That's kind of what GraphQL is, is that you could rid. Send in GraphQL, you can send as many requests as you want in a single GraphQL request, and then the server that is running the API will be able to, rid.

Wes Bos

Run all the database requests and fulfill all of that that data and then send it back in a single request. That that's rid Huge benefit to using GraphQL. The other thing you can do is you can, like, throttle or debounce your requests. So that's not necessarily batching them, but What that will allow you to do is if you're worried about sending a request too often to an API, you can throttle or debounce them. We've Gone over the difference many times in this podcast what the difference is between the 2, but essentially that will only allow you to run them once every however However many seconds and that will stop you from totally, slamming the APIs.

Topic 11 25:21

Throttling/debouncing requests

Wes Bos

Same thing with like, Vimeo.

Wes Bos

Rid. I use Vimeo API a lot. And when every single request that you send them, they'll send you back a header that tells you how many requests you have left. Mhmm. So I've done some some parsing of that header just to make sure that I'm not going over my limit and then being returned,

Scott Tolinski

rid no data when I really need it. Yeah. Yeah. I mean, like, yeah, I think you've covered all your bases here.

Scott Tolinski

And and there's even ways in GraphQL Besides just writing all of your your values inside of the query, there you can even do batching in a lot of the GraphQL libraries Outside of the GraphQL spec where you're saying, hey. Just perform these multiple queries and it will go off and send them as an array rather than a Just a single string of 1. So that that's totally doable depending on how your server handles it as well. But yeah. Yeah. I think you nailed it. Next question here is from Rafael.

Scott Tolinski

Rid. Rafael says, lately, I keep hearing about micro front ends. What is it? What's the benefit? What are the cons? Okay. Micro front ends are the idea that you can use multiple front end frameworks or versions of a front end framework in 1 codebase and have them all play somewhat nice together.

Scott Tolinski

Is this something that the majority of developers will ever need to worry about? In my opinion, no. This is like this is a situation where you have a team and the team is large. There's There's people in different sections working on different parts of the site, and they have different tech requirements or different tech. Maybe somebody built something in Svelte. Somebody else build something in Angular. You want them to play nice together. Right? So that's why you would use a micro front end system. Right? A system to control and wrangle multiple front end frameworks and or versions within 1 project. But what that means is really that's not something that The majority of developers are going to hit. Like, if if leveluptutorials.com started using multiple front end frameworks, please take it out back.

Scott Tolinski

Take it out back. Just leave it on the side of it or whatever. Get rid of it. It is that that size of website or project does not need a microfinance solution. Yeah. And it's gonna make things terrible. Rid. So it's it's really funny. I've I've heard this this

Wes Bos

idea of making small isolated rid. Versions of an app or a website has has popped up, I think, 3 times now in my career. It was called MiniSites initially, and then it was called the MicroSites.

Wes Bos

Rid and now it is called micro front ends.

Wes Bos

And, usually, all of these are the answer to, bureaucracy, rid. Meaning that we can't move fast enough or we can't build what we wanna build, inside the existing rid realm of what our company has. So we are going to build something totally separate.

Wes Bos

And then before you know it, you've got rid 18 different websites that are need maintaining and are on all these silly frameworks that you thought were pretty popular at the time and rid. Didn't work out, and, some of them are still running on Gulp and ask me how I know.

Wes Bos

So I I don't know. Like, they're rid I I we talk to a lot of people who work in big companies, and this is just how they do it. You have a team that works on React, And you have another team that works in Svelte and they all they both use the same APIs. There's another team that builds the APIs, and then they just rid. Dish out the data and then each team is allowed to sort of pick their own tech. And and honestly, at the end of the day, they're much more efficient rid Because that team is is able to do it. So, yeah, it's a kind of a fancy word for just saying let people work up by themselves

Scott Tolinski

because there's too many meetings, and I can't get done what I wanna do. Yeah. Totally. I mean, I did run into a situation where this would have been handy when I worked at Ford because there were multiple Teams. In fact, since when I worked at Ford, they they agencied out a whole bunch of stuff to many different agencies. Yeah. And oftentimes those agencies would come with their own their own system. Right? In fact, I always laugh like one of the one of the guys one of the guys on one of the teams that they, like, contracted out rid Use some of that that precious, like, big big three money to write tests for the CSS for a prototype That was only gonna be shown in 1 meeting. And you're just like, why? Why? Why? Why are you writing CSS tests for this? I could I Like, why are you even writing JavaScript tests for this? This is not production code.

Scott Tolinski

Just I guess when, when the paycheck's there, it's Easy to do that stuff if you gotta spend the time on it.

Scott Tolinski

And, Wes, I'm glad you brought up Century earlier at their performance metrics because that's a A feature of Sentry that I use all the time. This episode is also sponsored by Sentry at century. Io.

Scott Tolinski

Now every single time I go on to Sentry, rid. I I feel like there's a some something new or or great or something for me to check out, because there's so many great features in this thing. But, again, the performance met tracking metrics Is really one of the coolest things on this and it's one of the newer features on Sentry. So Sentry is an error and exception handling tool that allow you to See exactly how your application is functioning.

Scott Tolinski

Whether or not there's lots of bugs or no bugs or whatever, you'll see it, But you'll also see performance tracking metrics with a user misery score, things that are telling you just how fast any individual route on your site is.

Scott Tolinski

And and just if there is anything where users are hitting a snag or it's taking too long or there's one particular section of your site, maybe it's not cached correctly, rid So it's always loading or causing some sort of errors or something, but you can see all of that visibility and more. You can see all of that right next to your issue tab, Your releases, user feedback, a lot of great dashboard stuff that you can get if you have one of the business accounts, but just endless amount of cool tools. So If you wanna check all this out and have some awesome exception and error handling and performance tracking tools, head on over to century. Io. Use the coupon code tasty treat. That is a tasty

Wes Bos

treat, all lowercase, all one word. You'll get 2 months for free. Well, well, well worth your time. Next question we have from Otis, this one's for Scott. I'll read it. I'll let you answer. Since Astro seems so amazing, aren't you tempted to rebuild your site now in Astro and SvelteKit? Rid I am. And I think this is half joking because Scott is a golden retriever of JavaScript frameworks, but also half serious.

Wes Bos

Rid So, Scott, are you gonna rebuild your entire, business and livelihood in Astro? No.

Scott Tolinski

No. I will not. And not because Astro is not good. Astro is fantastic. I really liked it. Here's the deal. It's not the same thing. SvelteKit is an like an application in a web building framework where you can build a ton of different types of sites. And my site is primarily a dynamic site. Right? There's a lot of User based things where that just does not make sense to be a static site. Astro is a static site generator.

Scott Tolinski

If if if maybe if my site was written in Gatsby, I might think, oh, it would be kinda cool to rebuild this in Astro just for fun. But It would only be a just for fun thing. It wouldn't be anything serious. But either way, you're comparing Sveltekit to, Astro is is not a super good idea because they have very different use cases.

Scott Tolinski

Astro is fantastic if you're thinking Static and maybe server first and static primarily, not only, go Astro. But if you need, You know, that that server response and that dynamic server data to come back, then you're gonna need a a more you know, an actual full stack node node as well as or Server side platform as well.

Wes Bos

Next question we have here from Andrew.

Wes Bos

Thanks for all you're doing. You are both Legends. Thank you. What was that? What was the movie where people were saying everything was legendary for a while? I don't know. But there's a

Scott Tolinski

A YouTube channel that I occasionally watch that does, like, speed running for video games, and they always go, you absolute legends. And then I'm like, I don't know,

Wes Bos

man. What's that? Is that How I Met Your Mother? How I Met Your Mother. I just I just saw the clip, and I was like, I've never rid. I've never seen this show before, so it's it's one of those things that has escaped its original, use, and it's just made its way into the mainstream. Anyways, thank you For calling us legendary.

Wes Bos

Thank you. Can you please shed some light on redirects and express slash Koa? I'm gonna, expand this and saying redirects In literally every server framework ever, because this is not a specific question to express.

Wes Bos

My understanding is that redirects Carry the same method across from the original endpoint.

Wes Bos

What if I'd like to redirect from post to get, for example? Is that when these 301, 302, 307, or 308 come in handy? I can't find any good reasons or is this to understand this. Thanks again. So, this is a good question. When you are redirecting somebody, I guess it kinda is an Express question. Because, when you redirect someone in Express, You just say, like, response redirect forward slash, the new page. I have lots of these in my application because I've changed around the rid. URL structure over time. And it's it's really funny how often I get emails from somebody who's, like, 6 years old or 77 year old email they're applying to. Like, oh, this link doesn't work anymore. I'm like, oh, yeah. I gotta I have to still support the links I sent out 7 years ago.

Wes Bos

So I put a redirect in there. Anyways, Express handles, redirects, as a 302, which means that if you post something to a URL, it will change it to a get.

Topic 12 34:51

302 redirects change POST to GET

Wes Bos

So if you are trying to save something to a database and you change that URL end point, then you need to use a different redirect. And that's where a 3 0 3 or 3 o sevens come in. You can also do a 3 zero one redirect, which is permanent.

Topic 13 35:18

301 redirects are permanent

Wes Bos

Rid 3 o twos will change post to get, or it will it will change every whatever verb you send to it, post, put, get, delete, it'll always make it into a get. Rid. 3030307 will maintain the verb. A 301 will not maintain it. So, again, back to the original one, but that is permanent. So, rid. If you accidentally set a permanent redirect, you are kinda pooched until the bra the user gets a new computer or something like that.

Wes Bos

Rid. And then, so just be very, very, very careful with 3 zero one redirects again. Ask me how I know.

Wes Bos

And then a three zero eight is the equivalent of maintaining the verb, But it is permanent again. So, always kinda side on a temporary redirect until you absolutely know. And it's it's you usually only use permanent redirects rid. For, like, SEO reasons, because you you wanna tell Google now this this this article has moved forever to this new URL.

Wes Bos

So that's that.

Wes Bos

Don't don't take what I'm saying for it. Look it up. But yes, that's you can specify The number, these HTTP codes when you redirect in your frameworks, including Express and Koa. Yeah. Whenever I

Scott Tolinski

rid am returning any status code. I feel like I have to have the table in front of me just so I can make sure that I'm utilizing the right one because you do. You wanna use the right one.

Scott Tolinski

Okay. Next one here is from, Thomas.

Scott Tolinski

Hey. Only recently started listening to the podcast during my night shifts. Rid.

Scott Tolinski

Found yours soon after and has been my go to and now keeps me entertained and has gotten me through some tough times. So I wanted to massive say a massive thank you. Well, thank you, Thomas.

Scott Tolinski

So far within 2 weeks, I've gone through a massive amount of episodes. I can't remember what episode it was, but it got me thinking if you could make an episode on being a developer with rid. And then tonight, I heard an episode about a t shirt shipping on the 21st April.

Scott Tolinski

And one of you said that you have ADHD, And I wanted to ask you how you deal with it in the combination of being a developer. How does this impact your ability to stay concentrated on a single project in a general starting and finishing projects? Hope it makes sense. Thank you again for being here during my night shifts and getting me through some tough times. Thank you, Thomas. Yeah. So I do have ADHD, and it was something that, I did I guess I didn't know for too too long in my life. I just felt like, maybe I wasn't great at concentrating or any of that stuff. I always do bad on standardized tests despite being, like, a 4 not a not a 4 point student, but almost a 4 point student. You know? I had good grades in or in high school and in most part for college, but, like, the the classic things that you would say, like, oh, yeah. This person has a learning disability, I would I would pretty much fail on. So I definitely have ADHD. I I'm super fidgety. I'm always looking around. I'm always doing something. I'm always consuming, like, 8 different Dreams of information.

Wes Bos

So

Scott Tolinski

a lot of things there for me.

Scott Tolinski

I personally think that we should get Kordion, who is my wife, she's a doctor of psychology to talk about ADHD and some strategies for dealing with it. Because I know a lot of people have similar issues. And for me, the things that keep me, focused are, like, focus apps. I've talked about using a focus app for my Mac. I have, You know, focus settings on my phone set up so that I can open certain apps at certain times. Kind of like building in these tools to help me along and concentrate and not get Too distracted.

Scott Tolinski

Again, I think Courtney would be really great to have on because I know she would you know, she knows a ton more about ADHD than I do, considering she's doctor of psychology. So I don't wanna I don't wanna say too many things other than, you know, just pay attention to what systems are are working for you in terms of, like, what's being able to keep you focused and and keep track of that. You know, some some simple things for me, it's as simple as like going to a coffee shop and putting on headphones And get me into a place of mind where I'm not, consuming any different things. Because I I even tweeted out the other day that, like, having multiple monitors It's sometimes like a net negative for me concentration wise because I'm looking around all the time. I got too many windows open. It's it's not like focus mode. So there's a there's a lot of stuff there around focus, and I'm sure I'm sure just in in general,

Wes Bos

there will be a lot of techniques. Rid. How did you get diagnosed with initially? Because my wife says that all the time to me. She's like, you for sure have ADHD because I'm I'm all over the place and have a hard time focusing sometimes and and whatnot. So so Courtney kinda

Scott Tolinski

diagnosed you with it? That's, like, what she does For her job. Not specifically ADHD, but, she's testing children for, learning disabilities or autism or whatever. And she has done a a massive amount of large tests and essentially, like, you know, like a couple of rid Like a 2 day long test, and that's, like, one of the things she does to to understand and learn these things. But for me, She was just like, I don't know why I didn't see it for so long.

Scott Tolinski

You definitely have ADHD.

Scott Tolinski

It is extremely obvious.

Scott Tolinski

And because of that, like, yeah, that's that's how I was diagnosed, but it you know, the diagnosis doesn't really do anything for me. I'm not gonna get on medication Or it just helps me understand and and be able to research a little bit better ways on how to deal with it, so to say. It would have actually been dope to,

Wes Bos

Be diagnosed in high school. I could've gotten extra time for tests and stuff, especially because I'm also dyslexic. So, like, you know, that would've been great. I would've had some time. I got rid. To go into a different room and do my tests in high school. I didn't I wasn't the the teachers just knew. Like, yeah. You're freaking crazy. So, You know? Like, I don't I I wish I could, like, remember. Like, how did that even come up? But, like, yeah, I had a hard time concentrating on on doing my test. But, like, also, like, My, like, golden retriever attitude, let's talk about that again, is has gotten me into some good good spots in life as well. So Part of me is just like, I kinda maybe just leave that alone. Yeah. Yeah. I know. It would be really nice to have a a a

Scott Tolinski

switch to flip because I I come up with An absurd amount of ideas, but it's always when I'm trying to think about something else. Or, like, you know, I start working on a feature in the site that's, like, not rid. Necessary to be worked on, but there are necessary sections that I I should be spending my time on. It's just like things like that where it's like, yeah. I Really wish I could have a little bit of focus sometimes, and and there is some, like I said, personal responsibility there. You know, I have the ability to control myself. It's just it's just not easy. Right? And And I'm sure a lot of people feel that way as well. Next question we have here is from Yosef.

Wes Bos

Hi, guys. I heard Wes saying that he uses GitHub issues for managing features of his projects, and I started doing so. But I have a small project which is linking commit messages with issues. It's good a good good idea.

Wes Bos

Rid. I mean, should I repeat the name of the issue on the commit or just resolve's issue number issue number? Rid. Because at GitHub, when you have a commit, you can put in an issue number in the commit, and GitHub will automatically link it up and and mention it in the issue. So you can see that there was a commit against that specific issue. I know it's a silly question, but I am very confused as to what to do. So, usually, what I'll do is I won't just rid. Say resolves issue number. I'll usually say, add feature, picture in picture rid For video player, it resolves issue number whatever. So I'll do a quick explanation of what it is because that helps me when I'm doing git log in the terminal rid As well as link up to the the actual issue.

Topic 14 42:52

Conventional commits for organized messages

Wes Bos

Scott just posted this conventional commits here.

Wes Bos

We did a show on it, like, a year ago, And we both said that we were going to take this conventional commit seriously, and I have not started using it. Have you? Yeah. Yeah. We did it,

Scott Tolinski

for a whole year or since we last talked about it. And I have, I both have, like, an alias in my rid mainline, but I also have an extension for it within Versus Code that allows me to easily do conventional commits because let's face it. As we just talked about my, Memory, things like that aren't good. I never remember what the pattern is for conventional commits, and and that's, like, could be seen as a barrier to entry. But if you have an extension That's specifically for conventional commits. It forces you into, that structure. Now I don't know honestly if there is things in here for mono repos, but I figured it's a good way to at least have an eye on what your commit messages could be like. I would imagine there's something with monorepos in here specifically on how you do it, but this is a good, a good way to be very, rid regimented about your commit messages in a way that keeps everything organized, allows you to have oh, wait. This person this person wasn't talking about mono repos. No. But you you use a monorepo.

Scott Tolinski

I do. Well, the reason why I went to monorepos, we had another question about commits and monorepos in the in the, Hotlucks. I started reading this one, and I just or I I listened to this one and just assumed it was the same question. Either way, conventional commits be a good solution for that. Alright. Next question is from Joseph again, same guy.

Scott Tolinski

Hey, Scott and Wes. I really enjoy listening to your podcast while exercising. I have 2 questions.

Scott Tolinski

Do browsers automatically update automatically? For example, when I see a feature that's supported by Chrome, the latest version, does that mean that all Chrome users have this feature? Rid.

Scott Tolinski

I wanna say yes.

Scott Tolinski

There are people who just, like, do not update their browser and will never close it, but When you do close it, Chrome's gonna be like, I will update now.

Scott Tolinski

So a a lot of browsers, Chrome, Edge, Firefox, they all update themselves, and they've gone into a way where it's just kind of Being done behind the scenes, almost like Edge as it gets out of date. There's just like a little green arrow in the top right corner, and if you click that, it Refreshes it with the new version.

Scott Tolinski

So a lot of modern browsers do. Unfortunately, Safari being Safari and Apple being Apple, They only update Safari with OS updates, which, like, come on, in 2021 you're updating Safari with an OS update? You know what? Why that should have a built in updater.

Scott Tolinski

So it doesn't mean that all people no. Not all people, but it means that most people will Because it's it's kind of hard to run a really old version of Chrome or Edge or whatever unless you're almost intentionally running a very old version of it. So, for the most part, It means that most people get those features. Yeah. Like, I wouldn't even know how to stop

Wes Bos

Chrome from auto updating. I did I did hit it once where, rid I had people somebody that worked for a Canadian government contact me, and something wasn't working on my website. And I was like, what the heck? Rid. And then he gave me the he gave me the actual error message, and this is before we had our sponsor, which was Sentry installed on the website. Mhmm. And we finally figured out that, rid. The Canadian government just pegs Chrome on a certain version and then, like, runs it for however long, which is rid. Security issue in itself, I guess, but they were on, like, 20 versions behind which is, like, 3 years old version of Chrome they were running.

Wes Bos

So they had to contact IT and whatever and get it updated. But, yeah, most people get the the updates. Even with rid. Even with people's iPhones and and Safari, they will eventually they're they're probably a little slower to update, but this is not, rid. Like, 10 years ago, this was awful with IE, where, like, you would you would just have to wait for people to buy a new computer, rid before they would update their version. Of course, you could update it, but there was no auto updater built in. There was no software update built into Windows rid. That would do it. So you pretty much just had to wait for people to buy a new computer, before they would update it. But there was remember that there's this huge, huge push of People installing Firefox on their, like, family members' computers?

Scott Tolinski

Yeah. Oh, yeah. I did that. Yeah.

Scott Tolinski

It's good now. I had a a con when I was in college, I did a computer, like, consultations for, like, older folks.

Scott Tolinski

And one of the guys I did was, like, this, like, famous, University of Michigan gymnastics coach. He was, like, super famous, And I used to go over to his house once a week and help him with his computer. And he he was so funny because we we got him up on Firefox because he was using some old version of IE, of course.

Scott Tolinski

And he called he only called it Foxfire, and I I it was the cutest thing in the entire world. I love it. He'd be like, so I just click on Foxfire? Like, yep. Foxfire.

Scott Tolinski

That's it.

Scott Tolinski

So that was always really, really fun for me. But okay. So the second part of this question is, I haven't worked on a real project before, and I wonder When you work on maintaining a big project, what do you do in a daily 8 hours? I mean, is there always bugs and apps? I also wonder, do you always Work on adding new features or just maintaining. Okay. So, this is a good question for me. I'm working on a project. I'm largely coding all day on it if I'm not recording or doing a podcast.

Scott Tolinski

And, the things that I typically work on, since it's a custom platform, was it just yesterday, I added a Edit button to any page of a content that will take you automatically to the form.

Scott Tolinski

So, hey, here's a tutorial page. I wanna edit this specific one. Now there's a little edit button on that rid. Page. I just click the button, and it automatically zooms me to the admin form. Things like that. Right? These are little features. People are gonna be working on the site. They're gonna be editing content, authors, creators, whatever. You wanna make sure that's easy for them, build a nice little utility. Or how about this? We were looking at our Black Friday sales and wondering, like, how does this compare to previous Black Fridays? I don't know. We don't normally take metrics like that. Oh, let's build in a chart. So I built in a chart. Love building charts. That's exactly, what we do as developers. We get to hack around on things, and Sometimes it's really important features like adding a form so that the user can update their stuff or their credit card or anything like that. But, typically, you're just adding, working on features. Bugs are a part of it, but maybe not a major part of it or hopefully not a major part of it if I'm fixing a couple bugs per week.

Scott Tolinski

And sometimes You get bug reports, and you investigate them for 20:20 minutes or 30 minutes and find out that it's actually something with the user's

Wes Bos

own browser. Maybe they have an extension that's blocking it or something like that. I had somebody the other day. We were trying to debug it, and it turns there was no sound. And,

Scott Tolinski

Turns out his headphones were broken. Yeah. So, hey, that kind of stuff happens. Things like that happen. Yeah. It is funny because you do occasionally get a comment saying, like, oh, I cannot play Any of your videos on my on my browser. I'm like, well, let's restart the browser. Let's update it and close it. Oh, that fixed it. Okay. Yeah. Rid

Wes Bos

next question we have here from Dylan. This is the last one. Can you help break down and explain the jargons between RPC, REST, rid gRPC and GraphQL. And I'm gonna throw webhooks into that as well.

Wes Bos

And the second part of the question is JSON the standard formats for data slash content transfer. Rid. REST is probably the most popular one, out there in the world, and the what that is is it's a endpoint on your server that you hit, rid and you you you either send data to it, because you wanna you you need to give some data to it to save or or to filter, and then it will send some data back to you. So that's what REST is.

Wes Bos

This RPC, gRPC is not Super common in the web development world.

REST most popular web data transfer

Wes Bos

Quite honestly, I don't even know if I've ever I've ever interfaced with WebR or sorry, RPC or gRPC.

Wes Bos

The best I can sort of understand from it rid Is that, you describe the task at hand, and you send the entire task. So what I understand is that, rid. RPC and gRPC, I'll tell tell you the difference in just a second, is that you do all of the, rid Work in in building the instruction on the client, and then you send that over to the server or to the actual device. And, apparently, it's very popular in, rid. Low power situations.

Wes Bos

IoT is is a big user there. That that kind of reminds me of GraphQL.

Wes Bos

That's the next one is, rid. GraphQL, you sort of describe a little bit more what you are doing and what data you would like back from it, and then you send over that entire, rid. You send over that entire request, and it brings it brings it on back to you. Oh, I forgot to say, RPC g RPC. So gRPC is like a framework built around RPC, sort of a set of framework standards.

Topic 16 51:48

RPC/gRPC good for low power situations

Wes Bos

And then finally, webhooks is kind of like opposite rid of a, arrest request, because your webhook is when something happens, a blog post is updated or somebody buys something on your website then the server will ping you it will Ping most likely it will ping another server with a URL and some data and you can do what you want with it. Word. Yeah. You know what? It's funny.

Scott Tolinski

I've never used rpg or pc before.

Scott Tolinski

And so for me, it's like I I feel like I I got to, You know, of I went from REST to GraphQL, and I don't I don't know if I need another data transport in my life. I think those are they're pretty fine. Rid I I don't think that it's, like, a thing for web. I think it's, like, if you were, like, interfacing with a Raspberry

Wes Bos

Pi or Oh, interesting. Some sort of controller.

Wes Bos

Rid. And they the other part of the question is JSON is standard format? Usually, yes, but but not always. It's some I've When I worked with, when I worked with the drone, like, these, like, low power things don't necessarily have the rid power to JSON stringify something before they send it. So they just they send it as, like, a new line or a tab delimited or, commas in between every piece of data, and then you have to just parse it out yourself.

Wes Bos

Often they will be standards like RPC, and there will be some sort of package available that will allow you to parse it out into whatever language is equivalent of an object is. It's all interesting. Yeah. It's very interesting. Alright. I think that is it for the questions. Thank you for submitting them. Please keep them coming because, we love doing it. Go to syntax.fm.

Wes Bos

Rid In the top right hand corner, it says ask a potluck question.

Wes Bos

Put type into the box, hit the submit button, and we will answer it on the on the episode.

Wes Bos

Let's move into some sick pics.

Scott Tolinski

Sick pics.

Scott Tolinski

Sick pics. I let's see. I do have a sick pic here. I'm trying to think. There's there's been so many cool things in my life lately.

Scott Tolinski

I recently got a robot vacuum, although I'm not gonna sick pick that just yet. I want some more Oh, man. That looks awesome.

Scott Tolinski

Yeah. I know. It it actually has been very nice to to run the thing. Although we ran it in the middle of the night, and it woke both of us up. It was Just bumping into the front door, like, going, like, dump, dump, dump. And we're like, what is that noise? Yeah. We tried to do that, too.

Wes Bos

We're like, when we got ours initially, we're like, oh, amazing. It'll we just run it in the middle of the night, and it's, like, so loud. He can't do it. Yeah. I can't do it.

Scott Tolinski

Okay. I'm gonna stick pick a a really neat little thing here for phones if you have an iPhone, in particular, I I'm sorry. I'm stick picking something for iPhones only, but this is a Satechi or Satechi. I don't I don't know how they pronounce it. Thanks, Satechi.

Scott Tolinski

The TETCHI.

Scott Tolinski

This is the TETCHI 3 in one stand for wireless charging.

Scott Tolinski

It rules. It's it's pretty awesome if you have an iPhone with the, the magnet on the back or even just any phone with Wes's magnet thing that he talked about or his Piece of metal that you can use to wirelessly charge. This is a great stand, and it's a 3 in one stand.

Scott Tolinski

So it can charge your Your watch, your AirPods, and your phone all in one stand off of 1 cable. And it's pretty minimal.

Scott Tolinski

It doesn't have a lot of annoying LEDs. There's some, rid Some light ones, but not really. So if you're worried about it taking up some light space. This is a nice little stand, and, it's a little expensive. But it does all 3 things, and it does them very well. I've been really liking having 1 thing on my dresser that I can just put all my stuff on rather than having, like, 4 cables that I'm trying to wrangle and, You know, take up a whole much outlet space.

Wes Bos

I'm going to sick pick, the Always Sunny podcast.

Wes Bos

Rid there are a bunch of It's Always Sunny in Philadelphia podcasts out there, but this is one that The actual actors of It's Always Sunny in Philadelphia go on. And what they do is they just take a a pod they take a show, and then they just sort of talk rid through it, and then they just go on these hilarious rants. And, the way that they act in the show It's very much how they are in real life.

Wes Bos

And I was just been howling listening to it. So it is super, super funny. The Always Sunny podcast.

Scott Tolinski

Rid I'll give that a try. I think I saw it in the, the trending. Oh, yeah. Yeah. It's a good one.

Wes Bos

Shameless plugs, west boss .comforward/courses.

Wes Bos

You can see a list of all of my courses, Master Gatsby, Beginner JavaScript, Full Stack, Advanced React, and GraphQL, and a whole bunch rid more. Check it on out. Use the coupon code syntax for $10 off.

Scott Tolinski

Sick. I'm going to shamelessly plug the latest rid course on level up tutorials.com, which is accessibility for everyone by Amy Kaepernick.

Scott Tolinski

She did an amazing job, and I'm so excited to have this course on our platform. If you're interested in learning about accessibility on the web, which is something every single developer should really have in their toolkit, you're gonna want to check out this course. This course is for you, and Amy makes it nice and easy. And she has a ton of experience with this stuff, so, she's just a phenomenal resource. So If you want to check it out, it's at leveluptutorials.com.

Scott Tolinski

If you sign up to become a pro, you can sign up for the year and save 25%.

Scott Tolinski

And you can check out not only Amy's Just amazing creators and some more amazing creators on the way as well. So check it out level up tutorials.com.

Wes Bos

Rid. Alright. Thank you so much for tuning in. We will catch you on Wednesday or Monday. Monday. Monday. Monday.

Scott Tolinski

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.

Share