328

February 17th, 2021 × #JavaScript#React#Web Development

Potluck — Do titles matter? × Should clients pay for plugins? × Can I debug my baby? × How we prepare for Syntax × Deno × Learning things quickly × More!

Scott and Wes answer listener questions about JavaScript, web development, React, career advice, and more in a potluck episode.

or
Topic 0 00:00

Transcript

Wes Bos

treats that are tasty. We got a Tasty one for you today. It's a potluck. Potlucks are where you submit the questions, and we will answer them. These are really fun because we get all kinds of questions about rid JavaScript promises, Gatsby and WordPress, learning new stuff, a couple feedbacks on the Dino Show. So get ready to get into it. We are Sponsored by 3 awesome companies today. 1st 1 is Prismic, which is an awesome headless CMS. Second 1 is LogRocket.

Topic 1 00:14

Potluck episode with questions on promise rejections, Gatsby + WordPress hosting, learning new tech quickly

Wes Bos

Ready. They do your JavaScript session replay, and Cloudinary does all of your image compression, resizing, all of that good stuff rid on the fly. We'll talk about them partway through the episode. How are you doing today, Scott? It's a Friday. We're trying to sneak in an extra episode this week. Rid Yeah. Feels weird to record on a a Friday afternoon.

Scott Tolinski

I got a new chair yesterday, and I'm sitting in it. Feels great. Oh, it looks awesome. Yeah? Yeah. It's eggplant colored, so it's kind of rid Kind of brand colors a little bit. I went purple. I opened it up. I'm like, oh, it's purple. Definitely purple. But I love I love the color. So I'll take it. Yeah. So the first question here is from Anand, an anonymous person, not somebody named Anand.

Scott Tolinski

Do either of you have a pattern that you follow for rolling back rid Promise dot all rejections.

Topic 2 01:23

Use async/await and try/catch to handle promise rejection rollbacks

Scott Tolinski

I am looking for an elegant way of reversing any promises That may have been resolved before one was rejected. For instance, any DB rights or third party webhooks that were created during the sign up flow, but then needed to be removed if one of the promises was rejected.

Scott Tolinski

Thanks. Love the show.

Scott Tolinski

To me, when I read this question, I was thinking, does that really sound like a use case for promise all? Look, they need to run-in sequence. No? It kinda seems like these things need to run-in sequence, and maybe what they're saying is, like, Promise All is not sequence. Correct? No. They this concurrent. They all run at the same time. You're thinking. Right? Yeah. Okay. I was just making sure. The the look you had on your face, Wes, Was not exactly Oh, no. Reassuring, so I was like, wait. Am I wrong about this? So, like, it seems like these things probably need to be sequential.

Scott Tolinski

This is what I would do. I'm not a promise master. I would await it and then put it then in a try catch. And then in the try catch, have a function that all it does is rid Rollback whatever those changes were. And then if you encapsulate all that rollback logic into just a single function, hey, you can reuse that anytime, And the rollback function could simply check to see what step of the process, how far along it got in the process of things, And remove things from the database, to be honest. It's it's hard to tell without knowing your exact situation,

Wes Bos

but that's how I would approach this. Rid Yeah. I think Scott's right. You just have a function that will run on a catch of promise dot all When it throws, so either try catch or just a dot catch on the end. Even though I do async await, I use a dot catch on the end of my promises to catch any Things that go wrong, and then just having a function that will roll it back is probably the way I'd I'd go about it. And In that catch, you'll be able to tell specifically where it went wrong. You can also use promise to all settled if they don't depend on one another. Rid. If that's the case, you can just double check once it's all settled.

Wes Bos

If all of them were resolved, then good. And if something went wrong, then, yeah, of course, you have to rid Roll it back. That's not something that I've run into myself before, but I have seen it happen where like, for example, right now, I'm working on rid Snipkart and this other thing called chitchats, which is shipping. And these are just, like, I have my own code, and then I have these 2 third parties, rid One that does the selling of it and the other one that does the shipping, and they often have to talk to each other. And there's a lot of, like, things that could possibly go wrong In that and I'm gonna have to do exactly that. It's like, what happens if you sell something, but the shipper is down? For a lot of people, the answer is they just go and manually fix it. Rid. But, certainly, you could go and write a whole bunch of logic to refund the user or put it in some sort of state where it needs attention, and then you have to go in there and manually

Scott Tolinski

rerun it or whatnot. Yeah. I don't understand why this would need to be done inside of a promise dot all.

Wes Bos

Like Yeah. I think it's just a general, like, what happens when you need to Roll back something. Yeah. That's sort of what I'm getting out of this because I I typically

Scott Tolinski

would just like, here's my function. I'm awaiting the result of it. The result, if it was a success, determines the next action. Alright. Here's the next one. What's happening? Alright. The result returns the next action rather than rid Throwing it into trying to run them all at the same time. Okay. Next question is from Mike. Do you wanna take it? Yeah. Mike rid Says, I've been doing a bunch of client projects lately that use Gatsby with the WordPress API.

Wes Bos

I have the client set up a hosting service for WordPress And the Netlify account connected to, GitHub repo for my account for Gatsby. Okay? So it may makes sense. So you sign up for a PHP host for the back end. You sign up for, like, a Netlify account for the front end. What I'm struggling with is this idea of having to keep these repos on my GitHub account rid for as long as these sites are alive. But that doesn't seem all that sensible to have these nontechnical clients also set up their own GitHub account rid that they grant me access for building these projects. Do you have any suggestions? Yeah. That that's a great question, actually, because Yeah. Even though they're not the is not necessarily editing the code. They're editing the data. And the data when they edit the data in the WordPress, that kicks off in Netlify build, and Netlify will go to your GitHub and pull it. Also, like, good thinking, Mike.

Topic 3 05:00

Clients should own their own GitHub repo for Gatsby + WordPress sites

Wes Bos

Having clients attached to you somehow rid is always a nightmare. Like, I've I had 1 client with a domain name that I paid for. It's, like, 8 years before I could finally, like, rid Get rid of it. Or, like, if their email goes down, then then you're the point person for their email on a Sunday morning or something like that. So good on you for, like, trying to, like, Get away from it because there's building the website, and then there's having to babysit every technical problem that they have. And that's not to say you you can't do that. You can write contracts to be put on a retainer for that type of stuff. Like, what would you do in in this case? I don't even know. What would you do? I typically hold the repos myself.

Scott Tolinski

Okay. I don't like that answer because it's like, what is the right But I typically hold those repos myself, especially now that GitHub has private repos for free. Before, they didn't so I'd put the the private client work on Bitbucket.

Scott Tolinski

Yeah. Now that GitHub does, I would put them on mine, but, again, it depends on how much the client's going to need to access that. Sometimes, Back when I was working in agency, some of what we would do is we would just sign up the client for services like GitHub, and we would put the authentication details into a file for them, like an encrypted file for them, and say, alright. Here is the credentials for all of the services that we've created for you, And give these to your tech manager, whoever's in charge of this thing, and go ahead and just have them file it away for the rainy day in And wish somebody might need that in the future because most likely, you won't need it, but they're yours. It's your information. It's your data, and you can access that whenever you'd like. However, I don't expect you to need to reference it. So that's definitely what we used to do, and I see even do in person trainings where we'd show up, I would get to give that whole spiel to somebody in person. Like, here is here's the credentials for everything.

Wes Bos

I don't recommend, like, diving into this if You don't know what you're doing or don't know how, but you got them in case you need them. You can always pass them along to the next person. Yeah. I think now that I've thought about it, My answer would be, yeah, you should sign them up for a GitHub account. Yeah. Because, like, even if they're not technical, they should rid Hold the website.

Wes Bos

And how do you hold a website? Well, GitHub's a great way to to hold a website. And especially if they Bring on another dev 3 years down the line. That dev's gonna be super happy that you're not just being handed some FTP re credentials where they have to pick up the mess from there that they do have an an existing thing, and they can look back and see rid What's happened? So, yeah, give them a GitHub. That's that's where you put websites, or that's where you put source code at least or or not necessarily just GitHub. Give them some sort of rid get repo that they can have, and you can also have access to that repo. And then when you're done with it, you can just remove yourself from from that repo. So that's a good answer. I like that. I think that's probably the right one even though that's I've done both. But, yeah, I think that's probably the way to go. Okay. Next question is from HD. Hey, guys. Been listening to the podcast since I was starting out, and it was super helpful, entertaining, and hilarious.

Topic 4 08:53

Ask for full stack title if doing full stack work, but pay isn't tied to title

Scott Tolinski

Two more question. 1st, when would you consider a dev full stack? I work for a small company that does WordPress, GraphQL, Node, React, TypeScript, Lots of variety. I was hired as a front end dev, but I have since had done work in PHP and Node. Even my boss Has assured me that I do full stack work. However, I'm not being paid as a full stack dev. Can't figure if this is because I work part time Or for some other reason, should I be asking for a raise as a part time employee? Asking for a raise as a part time employee isn't necessarily a a problem in my opinion, but When I worked largely as a a dev in agencies, my job title was all over the place from, you know, content manager rid to interactive creator or all sorts of really dumb job titles that did not reflect the fact that I was working up and down the stack.

Topic 5 09:47

Bake costs of one-time plugins/tools into project quote, don't pass to client

Scott Tolinski

Your job title is the problem, you want to have a full stack job title, I would say maybe say, hey. I'm doing full stack work. Is there any way we could change my job title to be full stack? I think most managers will not care about that because I don't think most managers worry too much about the job titles as long as you're not like, hey. Can Can I become the CTO just because I'm doing CTO things? You know? So I would say you could ask for that title. Now rid. The ideas behind those titles, they translated into pay structures, but only internally.

Scott Tolinski

So if I was being paid as a senior dev At one specific agency, I could be making $36,000 a year, but then I could be paid as a junior dev rid somewhere else and be making $70,000 a year or $100,000 a year. So, to me, the price correlation to the job title

Wes Bos

rid It's completely relative to the organization that you're at and not something that necessarily should be, oh, I'm a senior dev. I should be getting x, y, and z money. Now if you feel like you're underpaid, by all means, ask for more money and do so in a tactful way, but I wouldn't do so by any basis of a job title. Yeah. Job titles are are a funny thing. I used to think, like, job titles are silly. Who cares what what your job title is? But, like, I've heard from a lot of people that rid. It does matter. Like you said, often the job title will correlate with a how much you get paid. Like, you know, Microsoft, Amazon, a lot of these, like, large companies, rid The amount that you get paid is is based on what slot you fall into. Like, I asked on Twitter the other day about rid Some computer science thing, and people are saying, yeah. Like, Amazon web developer level 2. Like, they just tell me what level they're at, and and then it's known rid The what the salary range is for specific that one. So do titles matter? Kind of. The other question here is, does full stack need to make more money? Rid. I'd say, yeah. Often the case is that you're writing the same language. Like, for me, I I dip into front end JavaScript and then back end JavaScript.

Wes Bos

And, like, I don't really feel like I'm doing too much different, but there is a whole another set of skills that come along with understanding, like, how the server work go back to our re Fundamentals episode on on server side. So should you ask for a raise? Absolutely. I don't think it matters that you're part time or not because They're paying you for your time, for your skill set, so you should definitely go ahead and and ask for a raise. It doesn't matter if you're a part time or not. And just to kind of talk it through, like, hey. I think I should be be making more based on the amount of stuff that I'm taking on it. And here, it sounds like you're doing it all. WordPress, GraphQL, Node, React, TypeScript.

Wes Bos

That's pretty much the whole in caboodle for for being a full stack dev. Right? So, yeah, I'd I'd say I'd say go ahead and, try to get that cash. Neat. I knew you're gonna say kitten caboodle. I I could feel it coming on. I could just feel it coming on.

Wes Bos

A kitten caboodle. What is a kitten caboodle? That's a great question.

Wes Bos

Next question we have here is from Tom c. Hey, guys. Really love both of your work as a novice looking to move into the industry. You both keep and really inspire me, motivate with your work. Thank you. You're welcome. Question is, when working for a client and you need to purchase something, for example, a custom post type UI plug in Or something like WP Migrate DB Pro. To help you build the site, do you either pay for it yourself or add it to the client's invoice at the end, Then ask them to pay for it when you need it. Is there any small gotchas I needing to get over? So the the question here is is it a onetime payment thing, Or is this, like, a monthly thing that needs to run the site? And I for client stuff, I like to move away from rid monthly stuff as as much as possible just because, like, that can add up really, really quickly. In my case, what I would normally do is rid. Either go for the developer license where you can have unlimited sites. And if you're working in WordPress, you might be working on 4 or 5 rid. Different websites a year. And in that case, it makes sense. Otherwise, you just bake it into the price. I wouldn't, like, forward the cost of something like that to them. Like, you don't go to, like, a restaurant, and they'll be like, hey. Like, carrots were $6 today. So you had, like, a third of a carrot. So rid. So we're gonna charge you $3. Like, I don't care. Just, like, tell me what it's gonna take. Like, you don't charge me for your computer that you're using. This is just software rid. That you're using to build the thing at the end of the day. So if there's no monthly subscription to the thing, just you pay for it yourself. Both that's awesome because you can right off the expense.

Wes Bos

And then 2nd, you just, like, include that in the price for for the client. Right? Like, if it's $100, just say, okay. Well, I need to spend this much I need to spend this much money, and that's how you work it into what you're gonna charge the client. Yeah. For the most part, I agree. As long as you discuss this ahead of your time with the client,

Scott Tolinski

I think either of them will work. Chances are you're gonna know what the expenses are before you get into any sort of actual work, and you're you're filling out all of that billing stuff. In those cases, you would think, like, okay. Do I need an itemized receipt or not? Do they want an hourly receipt? That kind of thing. If they do want that sort of itemized receipt, I would put in, rid Like, alright. The cost of this subscription is this amount of cost. That way, they know they can see, like, a very real dollar to dollar value as to, like, what they're putting their money in. But if it's like a long term thing that's gonna be a subscription thing, I will always ask the client to subscribe and pay with their own credit card. Maybe I'll set them up with an account, And I'll make it really easy to say, here, just log in. Here, just enter your credit card, buy this, maybe take some screenshots if you need them to see exactly what to do. We've kind of done both in the past in the agency world. It's very common for making the client do absolutely everything in that regard. Rid. In my personal, it it is just kind of something you gotta weigh on, like, what's your relationship with this client in the ideal world gonna be? And if, rid. You know, you go MIA. Is their site gonna go offline? That kind of thing. Yeah. Also, like, I should say, if it was something, like, maybe rid Bigger than custom post type UI or Migrate DB Pro. Those are, like, dev tools to me. But if it was like,

Wes Bos

WordPress yoga

Topic 6 15:45

For core functionality, make sure client knows you're integrating third-party plugin

Scott Tolinski

booking software where where, like, you're not telling the client, like, I'm gonna build you a a yoga booking thing. If that's the case where it's, like, such a huge piece of functionality, I would go to the client and be like, re Alright. We're gonna use this plug in right here. The benefit to that is that they also know that you're using an existing solution, that you're integrating for them, and you're not actually building it themselves. So Feature requests and things like that generally have to go to the people, who's building the software rather than you. Word. Yeah. I I I think this is a interesting one, but it is again, I think It all comes down to clarity. Like, what are you gonna be spending, how much, when, and whatever? And as long as you know that and you're not springing some charges on them in the 11th hour, like, rid. The day before you're about to launch a site and say, oh, by the way, I need you to charge $200 to your credit card for this hosting plan. That's gonna piss some people off. So Just be cognizant about surprise charges in those types of things. You know who's not gonna give you any surprise charges? Who, Scott? Any of our sponsors today. That's right. None of our sponsors are gonna charge you without you knowing.

Scott Tolinski

And so all of them are fantastic and lovely. And one of them is very lovely because they made a really re Super cool landing page, but they're also just a lovely service. I'm talking about Prismic. Do you wanna talk a little bit about Prismic, Wes? I do. I do. So Prismic is

Wes Bos

What we call it is a headless CMS. Basically, the way that it works is you sign up, you create your data types, you create your relationships, you create your fields in those relationship. You can create this new thing called slices, which is, like, pieces of data that can be associated with the component.

Wes Bos

And then out the other end, it rid. Out either a REST API or a GraphQL API, and you can consume that API literally any way you want. Most likely, you're gonna be piping it into a rid A Vue app or a Svelte app or, a React application, Next. Js, Gatsby, NUC, something like that. And it's awesome because It does the entire back end for you. It does previews on your website for you, which is really cool. They do image optimization, Which is really cool. All kinds of features. So if you're looking to build a website and you need somewhere to put your data, rid Check out Prismic at prismic.ioforward/ syntax.

Wes Bos

They've got a a wicked landing page. It's hilarious. Go check it out just for the landing page itself. Thanks so much to Prismic for sponsoring. Sick. Cool. Next question is from Nicholas

Scott Tolinski

Ferro, a blicker, n f b. What's up, n f b? Rid I had a baby girl 4 months ago. When she is crying, I sometimes catch myself trying to debug her rid to find out what's wrong.

Scott Tolinski

My wife thinks I'm weird, but I am just in the habit of trying to fix problems. Have you ever experienced this? Re Great podcast and the only one I prioritize to listen to even though my podcast time has gone down. Nicholas, you have succeeded in all facets in posting this question. It's a Cute question. It's funny. It made us laugh, and you complimented us. So thank you so much. Okay. So Does anyone try to debug their baby? Of Of course, I've tried to debug my baby. And not only have I tried to do I mean, I do this with everything. That's most of the jobs I've ever had even non in web dev have been all just straight up debugging because that's primarily what I'm good at. Right? I'm good at following a process to try to solve a problem.

Scott Tolinski

When Courtney first got pregnant, she signed me up for this free daddy boot camp, and it was, like, a 3 Saturday boot camp, maybe even, like, 4 Saturdays. I don't remember. I remember being like, oh, come on. Can I just, like, watch YouTube videos or or something? Like, what? I gotta go to a daddy boot camp? He was like, No. Just go. You'll get a lot out of it. It's free. It's from the hospital. And we had we had signed up for a bunch of free classes anyways, and they were all pretty good. So I I went and did the daddy boot rid. And I was so glad I did because every session was really super good, and I really felt way more confident, going into having our 1st child after going to the daddy boot camp. But one of the things rid. That he told us to do was list off all of the reasons why a baby could be crying. This was in the middle of the boot camp. Alright. What are all the reasons a baby could be crying? Went around the room. Everybody had to say 1. So you walk out of there with a list of 30 reasons why the baby could be crying. He's like, what I want you to do when the baby starts crying. Start at the top of this list and just try every single one until the baby stops crying. And I was just like, Oh, I can do that. That's way different than, like, why are you crying? It's like, okay. If you're crying, it's probably because you're uncomfortable rid whatever reason. Why are you uncomfortable? Okay. Here are the possible reasons you could be uncomfortable. Let's debug this. 1, okay. Not it. 2, not it. 3, not it. And some babies are, You know, colicky or aggressive or gonna be just, like, you know, aggressive babies. They're just crying for whatever reason. And luckily for me, rid. That list usually helped quite a bit, and if it didn't, I think after, like, half an hour or so, we could swap and maybe my wife could come help out or something like that. Or, You know, when a baby's crying in your ear for an hour, it can only lead to so many great

Wes Bos

great, you know, great head headache levels. So Yeah. Answer to this question is yes. I have tried to debug my baby, and for the most part, it did work. Yeah. It's hilarious. I think this is just a rid. A type of person that you are, and I think that's an awesome quality to have in just in life in general is that you you take a look at the information that you have. Rid. You try to collect additional information, and then you try something.

Wes Bos

And if that does not work, whether that's getting your code to work or whether that is rid Getting your baby to stop crying, then you update that list of information that you have in your head, and and you loop back and you keep trying. And that's just an awesome quality in general. I've I've rid Told many stories where sometimes even sometimes when I'm on the phone with people who are trying to help me like, rid. My Apple AirPods, the battery was, like, dead on them. Mhmm. I, like, called them up, and they started, like, from the start of getting me to just repair them. And I was like After, like, 10 minutes, I was like, I don't mean to offend you, but, like, I know more than you.

Wes Bos

It's that it's that that, that meme. Ron rid Swanson. Yeah. Yeah. Ron Swanson. I know more than you. And it's just like like, I've done my my due diligence here, and, of course, I could be wrong. I could have forgotten to reboot it or something like that, but, like, I think I know what the issue is here because I've spent so much time on my own. And, yeah, debugging, good life skill. It's also the worst when, like, they clearly

Scott Tolinski

have, like, no debugging skills, and they're just reading from a script. Yeah. And you're like, Okay. Listen. I don't wanna be rude from the powers of deduction here. We already know x, y, and z did not work. Yes. So, you know, this one is also not going to work. You know? The powers of deduction. That's that's a great way to put it. I like that a lot. Yeah. Alright. Next question is from Mahindra Machi.

Topic 7 22:20

Debugging a crying baby - go through possible reasons systematically

Wes Bos

You guys are awesome. My question is, how do you prepare for Monday and Wednesday podcast? How do you create this perfect loop, and how how is it like to be in one? Rid. Share with with us the creative process behind it. Thanks so much.

Wes Bos

This is a great question. How do we prepare for it? So the way that it works is that rid. Scott and I have a list in Notion. We have 2 lists, 1 called hasty and one called tasty.

Wes Bos

And every single time that something interesting comes up Or we hit a problem and solve it. We'll pop a card in there and just jot down our ideas. Pretty much, we don't decide the podcast until the morning of recording usually. Right?

Scott Tolinski

Rid I would say so because it is largely dependent on emotionally how we're feeling that day. Like, sometimes I'll, like, write out a whole bunch of notes or, like, really for something. The the TypeScript one was, like, a lot of work in that regard. There's just sometimes you wake up and you look at an episode, and you're just, like, rid Not today. Not how about we do Yeah. How about we do 1 on CSS fundamentals? You know, that's something I could talk about all day or or something like that. Something I'm a little bit more more pumped to do at that very moment. It is a little bit off and on like that. But, yeah, we do we do decide morning of. We do decide the morning of. We usually pull a rid. Tasty, which is the big one, and a hasty off. We record at 9 AM for Scott. So, usually, I'm up for working for 2 hours before he's even online. So sometimes

Wes Bos

I'll take a look, and then I'll jot down a couple ideas. And then we'll take, I don't know, half an hour, 45 minutes just to flesh out bullet points rid For that, sometimes I'll go on to Twitter. Sometimes if I'm at, you see me asking, like, a super open ended question. It's because I'm trying to, like, collect information of rid What the general the rest of the web world thinks about a certain issue or or what they'll possibly use for something like that. So Twitter is a really good, resource for things like that.

Scott Tolinski

Once we have our sort of our layout of of things like that, Then we we just hit record and and give her, and then our editor, Adam, makes us sound much better than we actually do. Yeah. Cuts out all the bad the the, rid Like the miss mistalks, the things I'm doing right now when I'm saying the wrong thing. But, yeah, he he cuts all of that stuff, makes it sound really good. I always rid Really like listening back to the episodes to hear how well they're tuned up because, it's always such a it's so nice to hear, like, what they end up sounding like. That's always fantastic. And, there are sometimes, though, we do come up with, like, a full page of show notes, like, a month in advance, like, well before we record an episode, it just depends on how inspired we're feeling at that given time. A lot of the times too, we're both, like, really learning about specific topics in our own rid. Either personal careers, the things that we're working on, maybe things in my code base or Wes' code base or our courses that we're working on, and we'll come across those topics and we'll say, Oh, this would be a really, really good episode specifically because my head is so in that space right now, and that that can really drive a lot of the topics.

Scott Tolinski

Yeah. I just went through the redoing the entire roles and permissions system for my advanced React course, and, like, I'm like, I we need to do a hasty on rid. On roles and permissions, again, like, we've done 1, but now now that we've done it, I I feel like I've got some different insights into how to do it. And I wanna do a new episode on auth because I just rewrote an auth system from scratch. That kind of things always pop up for us. One thing that I really like that you said here is this, like, perfect loop business because that's a kind of an underrated aspect of a lot of Ventures like this. Right? Whether it is my level up tutorials or syntax or just about anything that I've ever been involved in that I want to rid. Grow as a platform or really provide consistent value is making sure you provide that consistent value rid consistently, and you're doing so on a schedule, and it's not, oh, we'll release whenever I feel like it or we'll record whenever I feel like it. Wes and I have recorded rid. On just about every single Monday morning since we started this thing, and the only times we miss is for, like, you know, small personal emergency. So and so has an appointment or a holiday or something like that. But if we miss 1 just because we're being lazy, we're gonna miss 2 because we're lazy, and then we're gonna miss 3 because we're lazy. And that doesn't translate into literally anything. That translates into no growth. That translates into no value for anybody. And I I used to do this for level up when I was really focusing on YouTube, a lot of people wondered about my strategy for YouTube. How could I have recorded, like, a 1000 videos for YouTube? Well, when I had my concussion and I couldn't do anything, every Monday, Wednesday, Friday night, I'm recording, recording for a couple hours. Those 3 nights, I did it consistently for, like, 2 or 3 years. Bingo bango. 300,000 subscribers. That's it. Not only did I gain subscribers and learn how to do tutorials, but I got a ton better at it just because of the consistency. Also, people knew when to expect the new content. Always release on a schedule is a big thing. Our courses on level up tutorials come out on the last day of every single month. If they did not, if I missed a month, that would be bad. People expect them. We sell it that. That is what we're giving them. That is, like, part of the value of our platform, and you gotta stick to it. So for my advice, you're wondering how it feels to be in it. It feels re Great for me. I really revel in consistency.

Scott Tolinski

So as long as you set up a schedule, you're consistent with it, you stick with it, you get in the flow, and then ready. It just becomes, like, part of your life. It's, like, part of your routine. That's what you do. Get to wake up every Monday morning and talk to Wes? Sounds

Wes Bos

Yeah. Monday Monday is an interesting day too because you just, like, oh, the whole freaking thing needs to to get done. Mhmm. And we also do record.

Wes Bos

Like, right now, we're almost a month ahead right now just so that if something does pop up and whatnot, then it's nice to do it. So that was a good question. Thanks for asking that. Yeah. Well, let's take a quick break to talk about one of our sponsors and then talk about LogRocket. Now LogRocket

Scott Tolinski

is the place where you can visually see your errors and exceptions happening As the user experience them, it's very, very cool. You'll wanna head to log rocket.comforward/syntax.

Scott Tolinski

You'll get a 14 day free trial. Basically, what you do is you throw a script onto your page, it connects to LogRocket, and it records things like the network requests when a user is using your application, Now it's positioned stuff so that you can see, like, oh, I the user clicked on this input box and all of a sudden, What happened? Well, the site turned upside down. How did that happen? Well, some intern wrote a translate 180 degree CSS that got applied somehow By accident, maybe they just mistyped something. Who knows? Either way, can you imagine a client coming to you and saying like, a customer saying, your website turned upside down? I'd be like, you're crazy. But if you saw the video replay of that happening, you could actually see not only did it happen, but how it happened. So head on over to log rocket.comforward/syntax and See the magic. See the magic.

Scott Tolinski

Hi. Alright. Next question is from Joseph Pekora.

Scott Tolinski

As, like, part of his name Oh, it's fine. Well, okay. I'll read it. It says it says Joseph Pecora Des Moines, Iowa, and I was about to be like, Joseph, Pacora, Des Moines. I was like, oh, wait. This is not his fault. Okay.

Scott Tolinski

Very funny. Okay. Next, question is, hey, Scott and Wes. First off, Awesome show. Man, people are bringing it. Syntax has been not only an invaluable resource to me, but also a font of entertainment.

Scott Tolinski

Valid font usage had interesting work. Yeah. Wow. Yeah. But Cora from Des Moines, Iowa, your Yeah. Your language flex is off of the charts. LanguageFlex. Yeah. My daily run is about an hour long, perfect for a tasty syntax treats.

Scott Tolinski

And since I use a Bluetooth earbuds, I'm quite sure I am known as the crazy runner that seems to break out in fits of laughter and yell in answers to Secure JavaScript questions spontaneously as I run past. Joseph, I'm with you, Evan. Hoisting.

Scott Tolinski

Yeah. When when I I do the dishes, rid I'm just cracking up at some podcasts I listen to, and my wife and kids are like, what is going on? My question is, how would one go about using JavaScript ready. To load all images from a folder in order to render them dynamically on a page. I looked around and only see answers Using a jQuery and PHP, in the end, I want my client to be able to drop images into and remove from the images folder, and the site We'll just populate the image slider with all of the images. As of February 2021, I am 12 months into my journey of becoming a self taught developer, I've not yet touched any Node React to jQuery. My philosophy has been I will learn it when I run into a problem that cannot solve it. Thus far This is it. I have been able to rid Solve every problem with HTML, CSS, and JavaScript.

Topic 8 30:10

Reading a folder of images client-side not possible without server-side component

Scott Tolinski

Is this problem solvable with JavaScript? Yes. Or is it time to learn something new? I mean, it's solvable with JavaScript. Everything's solvable with JavaScript. Everything. What is it? Your baby crying? Solvable with JavaScript.

Scott Tolinski

So okay. You know what? I don't work a ton with file uploads.

Scott Tolinski

Wes, I the input element where you're uploading, the input is, like, files, the file input uploader.

Scott Tolinski

Yeah. I've only really used that for singular files, but I do know that it returns even with singular files. It gives you an array. Have you done anything like this where you're uploading a file and you need to get access to that? It it comes in as, like, what a data URI, rid. And you could use that data URI in an image source tag is what I would presume, but off the offhand, I've never done this myself. I think the more of the question here is, I want to be able to read the files off of the server.

Wes Bos

Like, they want the client to drop the images into a folder, and then I wanna be able to just rid Display them on the front end without any sort of server side language. Like, you could add, like, an upload button as well where you upload them into a folder as well. If you have the input

Scott Tolinski

upload and you were to select multiple files Yeah. Doesn't it give you access to the data there when you upload them

Wes Bos

Via the input? Yeah. Yeah. You can,

Scott Tolinski

but that is not gonna make them It's not gonna do anything persistent, but it would at least be able to allow you to display

Wes Bos

Yes. Yeah. You could you could use the file reader API to convert those images into a data URI, but like you said, it's not persistent For the other viewers of the website. Mhmm. So with without a server side component, no? Yeah. You there's no way to do it without a server side component. Why? Because JavaScript, you cannot read The contents of a folder on a server from the client side, that would be a huge security issue. There is like, A lot of PHP servers will automatically do a directory listing.

Wes Bos

That's, like, sometimes you see, like, index of. If that was on, you could maybe even use h t access to turn that on and then use a fetch request to load that HTML and then parse it out with regex, but that's probably not a very good solution. Now what I would do in in this case is, Depending on what server you're running it on, and likely, you're probably just running an index dot HTML on, like, a cheap host, and those hosts rid always have PHP on them. So if that's the case, then you just figure out with PHP, how do I read the contents of a directory and then JSON, Stringify, send that back. And then what you've just created there is an API to give you a list of images in the folder. And then you can query that Endpoint with JavaScript's fetch that will pull back a list, and then you could loop over it and inject those images into your slider there. So this rid the time.

Wes Bos

This is your time to actually go ahead and reach for I would probably say this could be done easily with PHP, but, ready. Like, this would be much harder to do in Node because then you have to get into this whole you have to get into a Node process.

Wes Bos

You'd have to re Start that thing. You'd have to host it somewhere that supports node, and then you'd also have to restart the node process whenever there is an image. And I'm not sure if you need to restart the note process. You could, but probably easier on on a PHP server. Yeah. It's so funny. When I read this question, I had a totally different rid Viewpoint of what he was asking. Like, I was thinking, like, you know, like, Dropbox when you drop some photos in there and it would just show you in the UI. When he said images folder, rid. I was thinking like a UI images folder, like a Like a preview of what they've selected. That's exactly what I was thinking. Yeah. Yeah. That would actually be a a fun little project rid to do, actually. Like, let somebody select images from their computer and then preview them in the browser before you rid. Hit and upload. And that and with that, that's the file reader API. Scott put a link to the show notes there. And we do a little bit of that, but only with singular files on LevelUp. Like like thumbnails that we create, and when I upload 1, I have, like, a drag and drop zone. I drop an image on there, and it shows me a preview of that image as it would look on a real card before I submit to the database rid so that I could see if I need to tweak the SVG background or not beforehand. I'm just looking, to Dropbox API because I'm thinking like, oh, maybe Dropbox rid solution to that where you could just ping the Dropbox API. Oh, yeah. But that needs OAuth in order to query it, so you you can't do that client side. You'd have to do that on the server.

Scott Tolinski

Yeah. Okay. Well, next 1 is from Mike d.

Topic 9 35:25

For large daily cron jobs, use queues to distribute work efficiently

Scott Tolinski

Check check check check it out. Some Beastie Boys. I don't know. Some Beastie Boys for you there, West Boss.

Scott Tolinski

Mike Mike d is a a member of the Beastie Boys.

Scott Tolinski

I have side projects with a node back end that sends out reminders to signed in users about various deadlines that they opt into.

Scott Tolinski

It started out pretty small, but as a user base, is now in the 1,000. I'm worried that that my reminder send functionality won't be able to keep up the increasing volume. It's basically a daily cron job that loops through users and finds rid. A different notifications to send out either through Twilio or Postmark. Is there a more efficient way to perform large cron jobs such as this? Curious of how each of you guys would tackle this Problem. My answer to this is maybe a couple things. One of which would maybe to look into queues, not something I do a ton with, but queues would be a good answer. Q is basically like, it sounds like it's a line. Each thing processes at once, and then if, like, something fails, then, you know, you're not, like, Losing all of that, we're like a cron a cron job. If you don't have it connected to a database, we'll just, like, run once specific time.

Scott Tolinski

Like, this to me sounds like the The time that I would say, you know what? This would be a perfect opportunity to dive into some serverless tech or some scheduled functions. I use render.com as the hosting platform for level up tutorials, and they have scheduled functions, which are serverless functions attached to a cron job, rid. A k a, this is just a function in Node. Js or whatever that just runs on a given schedule every single time on that schedule, And it's just gonna rot. Now you could also use something like begin.com to do this very easily, or you could write your own scheduled function with, You know, any serverless tech, really. You could write your own. However, there are some scheduled ones out there that do the scheduling aspect for you. And if you don't have to write that bit, rid I wouldn't personally. But either way, this sounds like a great opportunity for serverless if you're worried about it keeping up because this is one singular function that you can scale up and down in that case. And if you need more juice, you're not giving more juice to the whole platform blowing up your cost, but you're giving more juice to just that specific function that needs it and saying, gotta have that juice. And you're saying, here you go. Here's here's your buh bye. Yeah. I actually had something similar to this probably 10 years ago when I was running the DailyDeal website.

Wes Bos

Re what it would do is every hour, it would find people that it was 7 AM their time, and then I would send them an email with all the daily deals.

Wes Bos

And the problem that I ran into is that I think his exact problem that Mike is having here is that let's say there's a there's 500 Things that need to be sent out of 200 text messages and 300 emails. So it takes, like, I don't know, 500 milliseconds to send 1 email. And then if you're sending out 500 of them, that starts to eke up into how long a something can run. And serverless functions, they have, I think, on begin. I'm running a pretty long task on begin to do our transcript fetching. I think I said up to 15 minutes is what you're allowed to do on AWS right now. So it's possible that you're going to go past that 15 minute mark because rid. It takes a second to go to Twilio, send send the text message, come back, go to postmark, send the email, come back. And then there's also the possibility that rid. You're 250 of 500 in and something happens, and the whole thing borcs. And you're like, shoot.

Wes Bos

I need to now send the rest That haven't been sent yet, and you're in this, like, weird state. So the solution to that, and Scott mentioned this earlier, is to look into queues. Rid. So you still would run your CronJob, but instead of, like, waiting for Twilio Postmark to send the message and come back, rid Is you're just firing things into your queue as you need it, and that's much quicker because you're simply just saying, like, I I gotta send an email. I gotta send a text message. And then your queue is something that runs. And as it as it has available resources and can go into it, your queue will say, alright. Next 1. Mhmm. Let me send a text message. Alright. Next 1. Let me send rid An email. Alright. Next 1, I'll send another text message, and that's sort of a a better way on it because if it fails, then you can mark it in the queue as failed, And then it will try to redo itself, and you're not affecting the rest of the people. So I'm certainly no stranger to massive requests that rid Scrape and add stuff to the database and send text messages and send emails. And if anywhere along the the line it breaks, you're screwed. So queueing, it's not something I've done a lot myself, though, is using a queue. I'd I'd like to have a problem that needs that solution. You know what? It's funny. I I,

Scott Tolinski

rid Like, this is way back, like, in 2015.

Scott Tolinski

There was a really neat community run, the queuing meteor Package, so to say, because you could bundle up a whole bunch of stuff. This is way back. It stopped being maintained really even pretty early on. You could use it for just rid Straight up queues. And so Meteor had a database in this real time and connected. And based on this library, you could say, alright. Here are the jobs I want to do And feed them into this queue with, like, just about 0 code. It would spit out, like, a table of here are the jobs, and you could just see them performing 1 after the next. It's in it's all real time. You don't have to do anything. I remember thinking, this is really, really cool. I didn't have a use for it at the time, and it stopped being maintained almost, like, instantly, but I remember being like, this is Pretty neat. I would love to get back in the queues in some sort of way because I I do think it's fascinating. It's one of those ones that, like, I would try to write it myself and then Feel a little bit upset, but, you know, I think using it as a service for writing queues Rabbit is a neat one. You know, rabbits are pretty cool in general. So RabbitMQ, I've heard, is good. Yeah. I mean, you could probably

Wes Bos

use serverless functions to fulfill The processing of the queues, often people would reach for queues for something like PDF generation, where, like, all of a sudden, you have rid 5,000 PDFs that need to be generated because it's month end or something like that. And if that's the case, then you need to, like, have enough Resources to generate those 5,000 PDFs, but then the rest of the month, you don't need them. And that's a perfect use case for serverless functions because they can both All be done at the same time because you can run them concurrently, and, also, you don't need to pay for them the rest of the month when you're not using them. I've seen people use these in, like, video conversion stuff. Like, have you ever if you're using those apps that are like, download a YouTube video. Here, paste in the YouTube video, and then it says, alright. Re We'll send you an email when this is done. Most likely using a queue. Right? Because they don't wanna clog up their server, crash your server, whatever. It's like, we'll put into the queue. We got A bunch of people ahead of you. We'll let you know when it's done. Downloading your Twitter history is probably using queues as well. Because, like, sometimes, if you wanna download your Twitter history, it it's re It's emailed to you in 5 minutes, and then sometimes it's taking days. Yep. And that's just because of of they've got a set amount of resources to it, and then rid. They run-in a queue. That's that's cool. I think that I wanna try that. There looks like there's a a Node. Js One call just called q that's super popular. I'm gonna get into it. I'm gonna be 1st in line to learn that.

Wes Bos

Next we have here from Nathan Shepherd. Hey, guys. Great overview of Dino on episode 322 got me thinking again. The proliferation rid of tools and technologies in our industry and ecosystems.

Wes Bos

Say, we have already identified a tool or technology that we need to get familiar with, like Deno. Read. As course designers constantly exploring new tools and technologies, what are some ways you can most efficiently and productively grasp the actionable understanding, rid IE, shortest route to Neo's I Know Kung Fu. I I don't watch movies, so I don't know what that is.

Wes Bos

You never seen The Matrix? Out of all the movies, I would have thought you had at least seen The Matrix because it's computery. Matrix always looked silly to me because of the long coat he wore. That's why. Yeah. Oh, and also the the numbers fall I don't know. I maybe should watch it as a coder.

Scott Tolinski

It's yeah. It's very, very code heavy.

Wes Bos

Hey. Can you share any hacks or pro tips that help you surmount the initial learning curve and tech stack fatigue? This is a really good question. It's like, okay. Like, you've identified.

Topic 10 43:30

Learn new tech through small projects hitting key features

Wes Bos

I wanna learn Deno.

Wes Bos

Like, what do you do to to understand how it works and and all that? And, rid. Honestly, for me, it's building things that have a small enough scope that you can finish them, but big enough that you're going to touch upon rid A few different different things. And, honestly, you're not gonna learn it by just building one thing. Like, that's how I learned TypeScript over the past year is I've probably built 7 or 8 smallish to medium sized projects in TypeScript. And each one of them, I run into something new and go, oh, okay. Okay. Rid So it's it's literally just built up that is small in scope, and you will pick it up from there.

Scott Tolinski

Yeah. I actually have a a a conference talk I did it about the same topic, and we did a show on on learning things fast. Yeah. And syntax. Put that 1 on. I did a talk on this. I'll post a link to it in the show notes. I did it for Zeit today, and the talk was called 2 Fast 2 Furious talking about learning things, Specifically code stuff like this fast to the point where you like, how do you do that? And one of my big tips has always been, like, full immersion into it. So I really, like, definitely agree with Wes's, You know, small projects, small wins, collect those small wins on little projects and do little things here and there. Sometimes I like to have, like, a Collection of projects that I'll do when I'm starting to learn a specific type of language. For instance, if I'm learning a server side language or something that can access my file system, One of the first things I do is a contract generator.

Scott Tolinski

Why? It's really basic, and it does a couple of things. Reads a file, writes a file, Text replacement.

Scott Tolinski

That's it. Oh, that's a good one. Yeah. Every single time I wanna learn that. In fact, we even do that in my Deno course because rid. Wanna pick up any language like that? I make that app. Right? It's a simple app. Oh, it also teaches you how to build command line tools, which is another thing. Like building command line tools because And it's asynchronous, ready. So you learn how the flow goes? Yeah. There's a lot of neat stuff. And, you know, like, as we show in the Deno course, that can be accomplished rid Just a handful of lines of code. It's not a ton of code to make something like that happen. So I'll have these little projects that I'll always reach into my rid my bag and pull out of, like, okay. I'm gonna I'm gonna learn this type of x, y, and z thing. Let me let me pop into this. So I'll post the link to the talk. There's a ton more things. We'll send to that episode of Syntax. I I think it was in the first to 100 episodes of Syntax. So It's one of our most popular episodes ever. Which is crazy.

Scott Tolinski

Yeah. How to learn things quickly, episode number 44.

Wes Bos

Was it keeping up with the Kardashians?

Scott Tolinski

No. That was another. That was That was that was, an episode title that I really fought for, and rid And, it went over well, though. It did it did went over well. That episode was also pretty early on episode number 35, Keeping Up With the Kardashians. And When I came up with that episode title, Courtney was like because it was still early in on the podcast. Courtney, my wife was like, Wes isn't gonna wanna do the show with you anymore if you go with that name.

Wes Bos

Rid. We gotta do it.

Scott Tolinski

Yeah. So sorry about that for everybody. But, yeah, give this show a listen too. I'll post a link to my Zikday talk as well.

Scott Tolinski

And then, yeah. That has a lot of tips in there. But for me, personally, small projects, getting my hands dirty more so than endlessly reading docs and reading source, rid Like, you're gonna learn a whole lot when you write some things and an error message pops up because then you're gonna learn how to start reading the error messages. We start learning how to read the error messages, then you're gonna know how to get yourself out of just about any bind you can have by googling or really figuring out what the error message even means.

Scott Tolinski

So that's my advice there. Just consume all that media. Next, I did wanna give a quick note. We had a a little bit of a correction about our Dino show. We had mentioned that Denon, like Nodemon, was the way to run Deno in a watch mode, but it turns out since version 1.4, Deno has had a watch mode of itself, which you can just run by saying hyphen hyphen watch after Dino run. This came into us from Luca Coasanto, who, works full time on Deno. So, he would know. Yeah. Hyphen hyphen watch is available since version 1.4.

Topic 11 47:34

Deno has watch mode since v1.4, no need for Denon

Wes Bos

So You don't need Dinan, that's for sure anymore. So we had one of the devs from Deno listen to the show. I don't it says he's working full time on Deno.

Scott Tolinski

Rid Wow. But that's amazing. Working you know, it's just working full time Deno, but I don't know. Yeah. He's followed by a bunch of Deno people. I'm not sure if he is the main Deno dev, but it seems like it. So Shout out to Luca.

Wes Bos

Sick. If that's all the feedback we got from that show, then that means we did a pretty good job. Yeah. Right? I know.

Scott Tolinski

I know. Considering it, Deno is so new. It's, like, very rapidly changing. Like, since I released my course, you know, a handful of new things have come out for it. So it's It's the Wild Wild West right now now at Dino, and a lot of lot of neat stuff there. So, thank you, Luca, for that one. And,

Wes Bos

yeah, rid That was our 1st correction, I think, we've issued. We've talked about doing a corrections show at some point, but we determined that we're not very wrong often. Re Oh, I have a correction. Yeah. Let's add it to that. I have a correction. A couple on the episodes on the CSS one. I said I didn't know what the difference between 10 p x And 62.5% on the HTML tag was. And I said, I don't think there's a difference, and there is. And it's an accessibility difference, so it's really important.

Wes Bos

Setting a 10 p x base on your HTML tag will not allow your user to specify the font size themselves in their browser settings, and putting 62.5% will allow them to bump it up because by default, that's And if you set it to a percentage of the default, then it goes up and down as the user chooses.

Wes Bos

And setting it to 10 p x will not It will ignore the user's browser setting. You still can use the the plus and the minus button to zoom in and out, but that rid Scales everything up and not just the text, so definitely worth using 62.5%. We should do a whole, yeah, correction show. Add that to the correction

Scott Tolinski

Well, at some point, I think we deleted the card that was for the correction, so because I don't I don't see it anymore. No. I think it's in here. Who knows? Because Notion is so slow. By the time it loads, our kids will both be in college. Yeah.

Wes Bos

Oh, man. Or let's get into some sick pics.

Wes Bos

Alright, Scott. Look at the monitor.

Scott Tolinski

Looks like Wes is going spelunking.

Scott Tolinski

Splurm splur along what is that? Splunking?

Wes Bos

Spelunking.

Scott Tolinski

Cave cave diving. Are you going cave diving? What?

Wes Bos

This is a LED headlamp. It's something I've wanted forever because both at when I go to the cottage, and I wanna do barbecuing in the dark. I can't see anything, and you can't hold a flashlight in your hands because you need them.

Wes Bos

And just, like, in general, like, being able to have a flashlight on your head rid is super key. Even, like, I know a lot of locals use it for running just so that cars don't hit them. Oh, yeah. And, man, I did a lot of research into this, and I got one that's Super bright, and then it also runs on, an 18650 cell, which is really key because if the battery dies on it, it's not junk. You just Open it, recycle the battery, and go buy 1 a new 18650 cell, which is, like, 3 or $4 to buy rid something like that, or you can just I have a whole bunch of them here. I've pulled out old drills.

Wes Bos

So I really like that about it because it charges over USB. Re It's rechargeable, but it it also is replaceable, and it's bright as heck. So it is a Slunk, s l re o n I k USB rechargeable headlamp. You should see the video of me It's very funny. Showing Scott right now. It's just rid Killing my, my camera. So check it out if you need a USB headlamp. It was, like, $30 or something, pretty affordable.

Scott Tolinski

I'm really loving this. I'm actually, like, trying to I knew if I wore that, I would get just an consecutive endless amount of eye rolls from Carney. So I'm wondering if your wife tolerates it or if

Wes Bos

I got it. I'll wear it downstairs tonight.

Scott Tolinski

Yeah. I'm I'm pretty sure because I I have, like, a a kangal hat, you know, like, that they have in the eighties, And I only got it because it's like a b it's a b boy thing, right, to have a kangal.

Scott Tolinski

And, you know, I love Slick Rick, so I I wanna rock a kangal sometimes. But me and my one of my roommates used to Both have these Kangals that we would wear when we played video games, and we called them our our gaming Kangals. And so we'd put them on, and Courtney would walk into the room and just be like, Oh my god. Just like walk out because she hates the Kindle so much. She's been trying to get rid of it since day 1. I have a really neat sick pic rid here today. Those of you who have listened to the show know that I love my cold brew coffee maker that I go nuts on. I have a big, old, rid. Giant cold brew coffee maker I've sick pick multiple times because well, that's what cold brew does is it makes you do things like sick pick the same thing. I was given this as a a gift. It's in the same vein. I was given this as a gift for my brother and his wife for Christmas, And it is a cold brew tea maker, and it's slightly different because of how much easier tea is to filter and how, You know, with the cold brew tea maker, basically, you just need a a filter to prevent the tea from pouring when you pour the thing. And what it does is it kind of looks like a wine bottle with a rubber And it has a filter on the top of that, and you pour, you sprinkle in a handful of any kind of tea you want. And I'm not typically, rid like a a fruity tea kinda guy, like my Chinese greens, my Japanese greens, primarily, and maybe some oolongs.

Scott Tolinski

But, You know, I I'm I'm a pretty tame tea guy, but when it gets into, aroma teas, it's never been never been my thing. But this has really rid Awoken me to the joys of aroma tea, cold brewed. So what I do is I I sprinkle some of my, like, peach Tea or something, peach green, oolong, blah blah blah. And then I pour some cold filtered water in it, and then I leave it in the fridge overnight. And then by the next day, it's Tea guy. But I'm loving this thing, and I use it just about every day now. It was a very good gift, and, been really loving it. So if you like tea, got some tea center in the house, you wanna make some cold brew tea? Check this thing out. Cold brew tea maker. You sprinkle it in there. You leave it in for 12 hours or so, and it's perfect the next day, ready to go.

Wes Bos

Sounds delicious.

Wes Bos

I I have to try that out. I've been drinking way too much coffee lately, and,

Scott Tolinski

it's nice to mix it up. It is nice to mix it up. Yeah. I have, like, a one Cold brew limit.

Scott Tolinski

A day limit right now. So, like, I'll drink a cold brew in the morning, and then so this is my way of getting around that limit because if I make the tea a little strong, it's almost like I'm having multiple cultures, and I don't have to feel guilty about it because it's different.

Wes Bos

That's awesome. I'm going to shamelessly plug my latest Updated course at advanced react.com.

Wes Bos

It's called advanced React and GraphQL. We learn about Creating a headless CMS. Personally, we're using Keystone in it, which I'm really excited about.

Wes Bos

It uses hooks, Apollo 3, all the latest and greatest rid. Of style components.

Wes Bos

Really proud of it. Really happy with it. Check it out. Advancedreact.com.

Scott Tolinski

Use a coupon code syntax for $10 off. Rid Sick. I am going to shamelessly plug my latest course, which is on Cypress.

Scott Tolinski

Cypress is this amazing modern visual testing ready. Library that is an end to end testing situation where you could actually see your test run-in a browser as they run. Because of that, you get to debug it as if you were in a browser. So the test fails at a step, you can go back a couple steps. Click on that step, open up your Chrome dev tools, check out the network request, check out anything that you might have debug why the test is not working instead of, like, what? Most testing libraries, you got Jest, whatever. They just give you a printout of Who knows what, and they handle async stuff very poorly. So you'll get your test failing and then the the log that's Next to the test on why it's failed, nowhere near it. There's, like, all sorts of issues I have with various testing situations, and Cypress to me has really been the very best, Especially if you're testing front end code, unit testing front end code and React code, I have done it for a long time, and this to me just feels way more better.

Scott Tolinski

Way more better. Oh, wow. Okay. So that's a preview of that type of stuff you'll get on that course.

Scott Tolinski

Way more better. Also, neat thing about Cypress, Wes, gonna maybe talk a little bit more about this in a show. I got a lot to say about Cypress now, obviously, but there's a new thing in in the latest version of Cypress called Cypress Studio, rid And it's not like a paid feature. It's like a free feature in Cypress Studio, and it's basically a record button. And you click record, and then you use the site. And as you use the site, it is physically writing code to write the test for you. Oh, that's awesome. And then read. You can insert your assertions into the code that it's written as so, like, you don't even have to write the code to navigate your site. It's very neat. It sounds like an ad, but I I think it's just neat. Maybe we should, like, talk a little bit about testing stuff at some point in general. But, yeah, check it out level up tutorials.comforward/pro.

Scott Tolinski

Sign up, and you get a course every single month from yours truly as well as a lot of new and exciting guest creators coming this year and in the past. So check it out, level up tutorials .com. Sick. Alright. Thank you so much for tuning in. We'll catch you on Monday.

Wes Bos

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

Guest 3

ready.

Share

Play / pause the audio
Minimize / expand the player
Mute / unmute the audio
Seek backward 30 seconds
Seek forward 30 seconds
Increase playback rate
Decrease playback rate
Show / hide this window