440

March 16th, 2022 × #auth#api#tooling#tips

Potluck - Handling Auth × Are Web Dev Real Developers? × Handling Git Conflicts × Converting PNG to Box-Shadow × Bad Docs vs No Docs × Making Shopify Headless

Scott and Wes answer listener questions submitted on a variety of web development topics including authentication, motivation, tools, and favorite products.

or
Topic 0 00:11

Potluck episode with questions submitted by listeners

Wes Bos

Welcome to Syntax. This is the podcast with the tastiest potluck rid Treats today. We've cut a potluck episode for you today. It's where you submit the questions, and we will answer them for you. If you've got a question You'd like us to answer, make sure you go to syntax.fm.

Wes Bos

There's a button in the top right hand corner. It says ask a pollock question.

Wes Bos

Smash that button. Put your read. Question in the box, and we will answer on the show.

Wes Bos

We've got some really good ones for you today talking about authentication and permissions levels.

Wes Bos

Some interesting ones about like headless e commerce. That's always a question that we have and there's a lot of questions about that.

Topic 1 00:41

Questions cover authentication, headless ecommerce, cookies in Next.js, motivation for finishing projects, git conflicts, developer roles, Shopify CMS, URL tokens

Wes Bos

How do you do cookies in Next. Js? And all kinds of really, really interesting stuff. So we are sponsored by 3 awesome companies today. Rid. Sentry does error exception and performance tracking sanity.

Wes Bos

Does your structured content CMS And FreshBooks cloud accounting, we'll talk about all of them partway through the episode.

Wes Bos

My name is Wes Bos. I'm a developer from Canada.

Wes Bos

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

Scott Tolinski

I'm doing pretty good.

Scott Tolinski

Yeah. I don't know. Nothing Nothing too wild. We got a bunch of snow here, so, you know, feels kind of cold. But, you know, I'm doing I'm doing okay. Yeah. Just hanging out. How about you? That's good. Good. Good. We

Wes Bos

rid We are had just I forgot the the what they call it? Fools winter here in Canada, where, like, you get 1 warm day and then, like, Like, my wife's like, let's go for a picnic in the park. And then, like, by, like, 4 o'clock, you're like, oh, it's actually still freezing. You got to, like, gotta be careful with that. But it's nice as all the snow melts, like, we get this, like, rid Ice pack on, like, everywhere. Like, I'm sure you get it as well, but it's just, like, frozen tundra, Disgusting. Everything is brown, like and then there's mud coming through, and the dogs walk through it. And it's, like, just like the worst part of winter. So it's rid. Really nice when that all melts and all the salt

Scott Tolinski

Yeah. Like, everything is just white. Like, do they use salt in Denver? They don't. But, no, in Michigan, it was really funny because, like, You would have just snow that would last the entire winter until March, April, and it would just be black by the time you know, because of the dirt. But in Denver, because we have, like, 300 plus days of sun, the snow completely will disappear between snows. So, like, completely.

Topic 2 02:33

Handling different authentication levels with individual permissions and role groups

Scott Tolinski

And because of that, the I mean, the the ground's always really hot so that the roads clear pretty quickly Because of that and then they don't use salt because it's too expensive to import it. So you can buy it in private businesses. We'll use it. But on the roads, they'll just do sand or nothing, basically, Because they know that in a day or 2, if the sun's out, it's just gonna melt on the pavement. I wish we had that, man. Like, the bottom of our cars, Just like it's like oh, yeah. If never buy a car that's from Canada, this is just a rust bucket. I'm sure. Like, we have, like, a the 4 year old van, and I went under it the other day to

Topic 3 03:05

Salt on roads destroys cars in Canada compared to sun melting snow in Denver

Wes Bos

rid. Take a bolt off, and it's just like it's gone. Like, it's the entire bolt is just seized up and, like, brutal. Like, you see these TikToks sometimes with people, like, in Arizona, And they're like, this is a 40 year old car, and they just undo it with a ratchet. And it's like, no, I get it out. Like, a bolt lasts 6 months until the first solve. It.

Wes Bos

Nice. All right, let's get into it. We've got the 1st question here, who is from Mike. Rid. How do you handle authentication level within an application, such as when a certain control needs to be shown only Above a certain authentication level, how do you prefer to implement this? It's kind of interesting one. So we've done a Entire show on roles and permissions. I think we've actually done a couple of them in the past. And the way that I like to do it rid Is and this is what we do in my advanced React course is that I you create individual permissions, like, Can delete a user, can update a user, can view a user. Right? And then you can group all of those permissions into specific Administrator and whatnot. And that's really nice because you can then make infinite levels of rid. Access control where you just add and remove certain permissions from each individual one. And you can even go a bit further and rid. Give those people not just yes or no, but you can also give them and Keystone does this really well. You can give them filter queries. So, like, rid. Can I see the users? Well, the answer is not yes. You can see everybody. The answer is also no. No. You can't see none of them. You can see the people who are your friends. Right. So then that would be a quilt a query. Show me the people who are currently friends with me.

Topic 4 04:49

Grant specific permissions like viewing, editing users, plus conditional queries, not just yes/no access

Wes Bos

And then one like 1 step further is like what about the rid. I think, like, how do you show the controls? Right? Like, how do you how do you block? Yeah. Exactly. Rid. Like, for example, on my app, I have a stats that shows me sales, and things like that. And, like, that's only shown to me. Right? And my assistant logs in. She can't see the Stats and the sales and all that stuff, but she can search for customers and do refunds and amendments and things like that.

Wes Bos

So usually what I'll do is I'll just, like, wrap that in, like, a rid. Permissions component, and then that permissions component will then check if the user has that permission and then either render it out or not render it out. And You you could also just, like, not do anything, and the API request on that will fail because they're not allowed. But then you got this, like, weird, like, empty graph. So it's it's nicer to wrap it in a component.

Wes Bos

What do we do? I do,

Scott Tolinski

we don't do, like, Usage based permissions. So now we don't do, you know, canvas person view, edit, delete these types of things, but that definitely is a strategy.

Scott Tolinski

We just basically have several different, roles and role groups.

Scott Tolinski

So it's it's not exactly a feature based role Kind of thing like that that setup, but it is definitely like a, admin, pro user, customer, those types of things. And any user can be any amount of roles or added to a role group that would then give them access to those roles. I actually just redid the entire server part of our role system Because I don't know how much you've used directives in GraphQL.

Scott Tolinski

Have you used them, Beata, at all?

Wes Bos

Directives.

Scott Tolinski

No. The ampersand. Or it's the at sign, not the ampersand. The at sign. Yes. Sorry. I totally have. Yeah. Yeah. So we recently implemented something called Mercurius off, which is, our our GraphQL library, Mercurius. It has, like, in its own auth package, but that gives you an auth directive that you can attach to any individual field. So I can just say, add auth pro. You know? So that that way, the user has to be a pro, And then our API, like, won't even return data unless you are that raw. That's beautiful. And on the UI, we also have several just is Is is pro, is customer, is admin, whatever, that is just essentially toggling the UI. It's funny because people always be like, well, I found your your role Hoggles, that's not secure. Right? You can just check the I am the I am the pro. But the thing about roles is that you have to have the The server side also validate those roles. So if you have just the UI toggling something, that's not good enough because people can If it's client side JavaScript, people can manipulate it. So just a heads up for those of you who are are working on a role based permission system, you wanna make rid sure that your admin section is heavily locked down for role based same role based as well. Otherwise, it's not really doing anything. It's a There's it's a fence that you can walk around. There's gotta Gotta be a name for these types of,

Wes Bos

DMs and emails of, hey. I found a major issue with your because I I get them, like, maybe

Scott Tolinski

once every month or 2. Do you get people at requesting a bug bounty from you even though you don't have a bug bounty program? They're like, I found this bug. You should fix it and give me money. And I'm just like, 1, it's not a bug. And 2, like, I that's not, like, part of the program.

Scott Tolinski

But you didn't find anything, though. Why would I pay you for this? Yeah. Usually those guys those guys are,

Wes Bos

like, they just have a list of rid. Ten common bugs, and then they go to, like, thousands of websites and report it. And every now and then, Somebody will be like, oh, wow. Thank you. And they'll pay out, you know, because it's it's it's always these just, like, script kitties, I call them, that they're They're just they're going around with, like, these, like, things that are not actually bugs, but they're like, hey. Do you know you're susceptible to click jacking? Yeah. And then And they, like, put an iframe and they put a button over top of my iframe website. And so I think that was like, k. Come on. Come on. So there's that. And but then there's also, like, Like, somebody when I was selling my stickers the other day, someone says, hey. I found out that I can get your stickers for free and any of your courses for free. And I, like, started, like and this happens, like, once every couple of months, and you start panicking. Yeah. Sometimes on the weekend, you're like, oh my gosh. Like, tell me more. Like, what's going on? And then they're like, oh, sorry. No. Or, like, this guy was like, I found out I can get them for free. And then I, like, checked I checked all the things that he sent me. I was like, you paid with your credit card.

Wes Bos

Like no. You paid for that. It's like, oh, sorry. Free. Yeah. What? Turns out I can put my credit ready to info in and buy these things. And then, like, I just don't know, like, where that got lost. But all the time you get these, like, panic things that are not real, Which is funny because you can't shrug them off because one day there might be something that's real. Totally. Yeah. Yeah. Yeah. I feel that. Alright. Next question here is from TTTT,

Scott Tolinski

four t's.

Scott Tolinski

I I started learning front end development, and I see a lot of people who say Front end developers aren't really developers, period. My question is my question is, How can we respond to them? Okay. So, sorry. That was translated in case you're wondering why I I was struggling over the words there. So, it's okay. Front end developers. Not real developers? Who cares? Who cares? This is the same lang.

Scott Tolinski

For for me, this is the same argument I hear about, like, is it is HTML a programming language? Who cares? Like, what does it matter to you? Like, does it not matter to me at all. If somebody says front end developers aren't aren't real develop who cares? I don't care. So, yeah, my my advice for you is, don't give ignorant people the time.

Topic 5 10:16

Don't worry about people saying front end developers aren't real developers

Scott Tolinski

You know, they're trying to either get you riled up or they're trying to get you angry or they're Trying to make themselves feel better than insecure or something. Who knows what. Right? But at the end of the day, like, it's it's your responsibility to say, you know what? I don't care.

Scott Tolinski

And because I don't care, it's a total nonissue.

Scott Tolinski

I I I don't know. This this is the type of thing you definitely get more of in, like, The early programming world, like, a novice based stuff. You maybe you're in college or you're encountering a, like, a young young dev who thinks they're, like, hot stuff, and They think they're really good at programming, and they're like, you don't know what you're doing. And then, like, to me, if somebody were to ever say that to me, I would just think rid. You're clearly very green.

Scott Tolinski

You're clearly brand new to this stuff, and therefore, like, I feel rid. I feel bad that you're in this this headspace, but at the end of the day, like, none of it matters at all whatsoever. Yeah. Anytime you hear somebody being so opinionated and,

Wes Bos

rid negative about a technology or a job title or anything.

Wes Bos

It's 100% of the time it's because they are rid. Not confident in their own skill set. Yeah. We lose out all the time when when you're doing the boot camp.

Wes Bos

Like, 6 weeks into the boot camp, you had 30 of the most opinionated developers in the world who Mhmm. Hated jQuery or whatever, and it's just like, okay. Like, you you literally don't know. You have no idea. And then as as you get, like, I even you probably can even listen to this podcast over the years that we've done this podcast. Like, as you get better with your own skill sets, you care a lot less And you're like, oh, like, everything is everything depends. So what does it matter to you? Much if you think programming is not a real thing. If that's on you, I don't care. I got stuff to do. I don't have time for you, you jokers. Work to do. Okay? I'm I'm working here.

Wes Bos

Next question We have here is from Ari. Thanks for the great show. You're welcome.

Wes Bos

How do you handle git conflicts in package JSON or yarn lock files? Rid. These merge conflicts come up when maintaining 2 long living branches, for example. Usually, these changes cause a lot of noise and don't make much sense. Do you just remove the lock file and regenerate it? Do you somehow understand which changes to pick? I'm often running rid into this issue, and I haven't found a perfect solution yet.

Wes Bos

There's a little aside here. We'll read that after. Let's answer the question first. Yeah. My rid. Answer to this is that I just regenerate it, because, like, who who is going through that and manually doing it? And then also, rid. The lock file is actually a bit of a vector for an attack because if you were to take a pull request from somebody and you just rid. Look at that, like, 10,000 line diff in your lock file, and you say it looks good. There's a possibility like, what the lock file does is the lock file, describes rid. The dependencies all the way down until this into the Earth.

Wes Bos

So this thing depends on this thing. This thing depends on this thing. This thing depends on this thing. And there's a possibility that somewhere along that somebody hand, artisanally crafted that package lock rid. JSON file to point towards a malicious package or a malicious version of a package or something. And then when you type npm install, Before you know it, boom.

Wes Bos

It's over. Right? So that's what I do.

Wes Bos

And so I usually just regenerate them myself,

Scott Tolinski

rid. Because, like, I don't know who's got time for that. Yeah. I don't know if you ever tried to do a diff on a package lock, but, yeah, that's not It's frustrating because

Wes Bos

The lock file is supposed to go in your it has to go in your git. Right? And that's that's also what Dependabot does as well, where They will immediately fix those things for you. That's why every time you merge something, you get 79 emails from Dependabot. Mhmm. It's because they immediately scan that and fix any possible issues. Yeah. It's

Scott Tolinski

it's no fun. That does it. I I but again, yeah, just regenerate it. And as long as your package dot JSON version Version numbers are accurate to what you want them to be.

Scott Tolinski

Hopefully, that's, you know, not going to install anything breaking. Right?

Wes Bos

Mhmm. Next question is from We got we have 1 more aside from Ari here. Yeah.

Wes Bos

It says, also, on a funny ready. Know in episode 422, a poll question related to protecting images on a website. I build a small project which converts PNG images to CSS box shadow values.

Wes Bos

Whole images can be presented in a single box shadow value.

Wes Bos

Usually, these end up being tens of megabytes, though. Each pixel is its own shadow.

Wes Bos

Holy cow. Images, this will prevent the right click Save as since there is no image on the element. It cannot be used in real life as it ticks all the powers from the CSS parsing engine to paint it.

Wes Bos

It's still a rid Silly thing to do with CSS box shadow. I thought you might. It's kind of funny, and he links it off to so this is beautiful.

Wes Bos

So he links us to a 7 meg. Oh, my gosh.

Wes Bos

URL, which is like rid A design that was converted into box shadow.

Wes Bos

Oh, oh, I just froze the browser. It's it's it's taking Let's see how long this takes. That's so wild. But freaking this is this is what I love love about the Internet. It's like, no. You shouldn't use box shadow to rid image, but not there. I always thought about that. Like, could you convert an image to a table with, like, a 1000000 Oh my gosh. A 1000000 table cells It's a background.

Scott Tolinski

You yeah. Oh my gosh. Yeah. This is so funny. It's just the the funniest part is just how large it ends up being, and then you you understand And why we have formats in the 1st place because they're made for that kind of thing.

Wes Bos

My entire browser My entire browser is frozen. So Oh, that's great.

Wes Bos

I don't even know if I could freeze the entire browser if I tried.

Wes Bos

Oh, it unfroze.

Wes Bos

Alright. You you go on with the next one. Alright. Next question here is let you know if it ever renders.

Scott Tolinski

Next question here is from Clint. Clint says, great show, guys. I just read that January 19th 2038 at 314 o eight is the end of epoch since it's using a 32 bit integer.

Scott Tolinski

I'm guessing that most of us will still be working and have to deal with this. I'm wondering if work will work has started to fix this, or will we just wait till the last 2nd with, like, y two k. I've never heard of this issue whatsoever, but this is hilarious. This is very much the y two k issue where, like, years were coded with Two digits to save space.

Scott Tolinski

And then because of that, when it goes to year 2000, those years will be 0.

Scott Tolinski

And a lot of problems could have happened, but, you know, luckily, people mitigated that at the last second. But if you remember the y two k scare when everybody was, like, freaking out the night of? I remember being, like you know, I was in, what, high school or middle school and just being, like, alright. Nothing happened. It's all good.

Wes Bos

It's all fine. Rid. My dad spent, like, a good couple years of his career upgrading stuff to y two k. And it's funny because at the time, I didn't understand it. And now as an older person, like, oh, they literally were just starting the date as like 99.

Topic 6 17:42

Y2K scare was mitigated as the year 2000 arrived with no issues

Wes Bos

Right. And then It would go back to 0, and then there's, like, things that we're checking if it's greater than or whatever, which is hilarious to think about. Like, that was the actual problem. I thought it was More complex than that. Hey. It was a plot point in the movie Office Space where

Scott Tolinski

do do you remember Office Space? Oh, yeah. Oh, yeah. Systems are all all they're all so So many people work on the y two k bug. No one's gonna be able to notice the, issue there. So it's it's very funny. I have no idea, Clint. I've never this is the 1st time I've heard of this, And I'm now very interested, so maybe we'll have to do a little little hunt for this to see if there's any work being done. Yeah. Absolutely. This has been,

Wes Bos

what, like, 16 years from now. Yeah.

Wes Bos

So that's. Yeah. That's not that far away. And, like, I bet I bet before then, either you can just, like, switch it to seconds and multiply by a1000. Oh, yeah.

Wes Bos

Rid. That's so cool. You can't. You have to use a big int. We have big ints, and maybe that's when we're all gonna switch to using big ints, rid. Or, like, you just you just save it as a like, maybe you will have moved away from time stamps by then And and we're just using, like, proper dates, you know? I don't know what the actual solution is. If if you have any insight listener,

Scott Tolinski

into this issue or you've heard of this, Please let us know because I I think this is wild. This is the 1st time I've ever heard of this. Yeah. I just googled

Wes Bos

32 bit integer, and it says 22,000,001 A 147 oh, no. 2,000,000,000,147,483,000,000,483,600 rid. And 47.

Wes Bos

And if you go to, epoc.versell.app, this is an app that we use for, doing the timestamps on our oh, shoot. We use this on our podcast. Rid. Yeah. We use time stamps on the pocket. Oh, my we gotta fix this. We got it. We got 16 years.

Wes Bos

I'll do it I'll do it next year. I'll do it Next year. Don't worry. Yeah. I see it next year. That was, like, the the the we had the leading 0 bug on the syntax website for, rid. Like, 2 years before it actually. Y two ks bug itself. Yeah. January January 18.

Wes Bos

I'll leave it for 2038. You got a couple of weeks in January. Yeah. To figure it out. We have to convert it to just I think we just converted to big end. That's that's the that's my that's my fix.

Scott Tolinski

It's a good fix.

Wes Bos

Although rid Does a date take a big int? Because if you you do new date and you pass at a time stamp, Can you pass it a big end and not just a regular number? Oh, we're screwed. It's all gonna crumble. I'm just gonna go start

Scott Tolinski

Stockpiling cash and buying food rations sounds good to me. You know what else sounds good to me was? What? Having a service that catalogs and, contains all of my errors and exceptions so that I can see them as they happen, but also mark them as, complete when I fix them or mark them as regressed when, they have regressed and I have not fixed them. But also attach them to issues, users, browsers, and get the full Stack with source maps and all that and more. I'm talking about Sentry at Sentry dot I o is the perfect tool To catalog all of your errors and exceptions, but not only that, track performance of your website. Get your web vitals, all transactions. See to your user misery score. What's fast, what's not. Is it really amazing that you can, when you when you adjust the releases too? So I'm just gonna go a little, by the by on some of these features here. One of which is that you can tag, your issues and exceptions with releases, and you can very much track, like, which Releases are buggier so you can see if oh, wait. Alright. Version 3.01 came out, and this version is Got some problems, and it it we have regressed. Everything is kind of worse than it was in 3 point o. So let's do some work there and and make the next release squash some of those bugs. You can also set up alerts.

Scott Tolinski

There's also a new feature, in century called dashboard allow you to create your own custom maps, graphs, and more. And if you have the business plan, you can get access to that and have, essentially, build your own custom dashboard. Man, who doesn't love a custom dashboard? Gotta love it. So check it out at century.i0.

Scott Tolinski

Use the coupon code tasty treat, all lowercase, all one word, and you will get rid. 2 months for free. Century, one of those services that you gotta try. Thanks so much for Century for sponsoring. I just launched,

Wes Bos

a new version of our course platform, rid. And, there was an issue with the one of the, one of the routes. So it's throwing, like, thousands and thousands of errors.

Wes Bos

And Century says you're about to exceed your transaction limit.

Wes Bos

And like, it's it's funny because, like, you can either buy more rid credits or increase your plan or fix the bug. Yeah.

Scott Tolinski

So it's kind of a little kick in the pants. Yeah. It's a nice little incentive there.

Wes Bos

Next question we have here is Charlie.

Wes Bos

Charlie bit my finger. Remember that? That was, like, the rich. Remember that? Yeah. Yeah. I do.

Wes Bos

Charlie from Grand Rapids, Michigan.

Wes Bos

Shout out to Michigan.

Scott Tolinski

My work uses

Wes Bos

rid React and TypeScript, and we use a lot of open source packages. Some of these packages use TypeScript with prop types. I'm a big TypeScript fan and understand the benefits. But why do you use it with prop types? Have you used prop types in your JS or TS React projects? Rid Stack Overflow answer says that TypeScript validates types at compile time, whereas prop types are checked at runtime. This This makes sense to me, but I've never used prop types before. Should I add prop types to my package and projects? Thanks. So The Stack Overflow is right is that, TypeScript is entirely at compile time, meaning that it will only check against rid. Your functions are accepting the right data and whatnot. But when it's actually running, TypeScript is is gone by then. And if you want to check the data rid. As you are running it in development mode, let's say you are taking in data from a form and passing it in, and that data is not what it is expecting.

Wes Bos

Rid. A prop type is gonna throw an error and say, hey, you you gave me a string here, and I was expecting a number. Although, If you if you coded it right, TypeScript would also catch that at at dev time. So there's that. And then there's also another benefit to prop types is that they're a little bit more flexible. You can run, rid. Instance of queries. You can write regexes. You can do functions to check the data. Remember we were talking a couple episodes ago about, rid. TypeScript doesn't have, like, full validation. Like, it has you can you can specify all the possible options, But you you can't like check that it starts with a capital H or has like meets this specific regex. So They are kind of different things. This answer says they are totally different things. I would say, yeah, because like with all of that said,

Scott Tolinski

I don't write prop types in React when I'm using TypeScript anymore because it's it's good enough for me. I think it I've never been bit. Have you? I I Before TypeScript, I use prop types. After TypeScript, I stopped using prop types. Yeah. Just felt redundant. And honestly, again, I'd much rather focus my time on having that stuff available in build time than

Wes Bos

Totally. Yeah. Than You only got so time. You only have so much time to do this stuff. And, like, sometimes you feel like you're like you're typing all this stuff in, like, yes, The answer is that there are different things. But you kind of feel like, is this really going to bite me in the butt ever? You know, is this really helping me that much? Or am I just kind of kind of making work for myself. And especially as like, I don't know, Scott and I were smaller devs and we've got stuff to do. I'm like, 2 feet tall. Rid. Run a business? Wow.

Wes Bos

That's a good time. Devs. We're smaller devs. Yeah. Yeah. So just I don't know. Not not rid. Worth it to me in my opinion. I would I would bet that most TypeScript devs would say,

Scott Tolinski

that is the same. Yeah. Yeah. Totally. Alright. Next question from Anan.

Topic 7 26:03

No documentation is worse than bad documentation

Scott Tolinski

What's worse, bad documentation or no documentation? No documentation is worse.

Scott Tolinski

Rid. Because with no documentation, you have to go to the code to see how to even, like, implement the thing at all, how to install it, how to utilize it, how where everything comes from.

Scott Tolinski

So I would say no documentation is worse, but neither of them are good. So yeah.

Scott Tolinski

Bad documentation.

Wes Bos

Yeah. Bad documentation is only bad if it's, like, wrong documentation. Right? Yeah. I run into that a lot where it's just like the docs are just not as good as they could be rid. As the devs are busy actually building the thing that they're building. Right? And like, I find I find myself contributing to docs all the times. Little corrections here or there, little better clarifications, corrections, better examples, things like that. Like, honestly, I feel like that is rid Where a lot of my specialty lies, so why not contribute that back? So definitely bad documentation is way better than no documentation at all Then you just have no idea what the surface area of something is without diving into the code. Yeah. Totally. And you know what? I I think there's sometimes What makes bad documentation is sometimes people like

Scott Tolinski

I don't know. Sometimes I read documentation, and and it's it seems like it's, like, written for experts. Rid. And, typically, the people who are, like, reading the documentation are not the experts. They're the people trying to learn a thing. So it's like, I Sometimes documentation could be dumbed down a lot more into more plain English. And I think maybe some developers are just that's not a skill they have. Maybe they're just rid Very smart, and it's hard to not be very smart. So Yeah. Yeah. Next question from Anan. I have rid. So many dev projects ideas to start, but I cannot seem to stick around and finish any of them properly,

Wes Bos

mostly because I seem to give up And meet stumbling blocks in learning new tech. How do you find the motivation or discipline to follow through inside projects? So this is a really good question. I like this a lot because, rid I don't know. Half of the stuff that I do is I just, like, abandon it halfway through because, like, I've learned what I needed to learn, and and that's totally fine. But then again, there there also something to be said for people who finish things are going to be much more successful in this game because That last 10% is so tricky. You run into all kinds of little, shoot. I forgot about this. I forgot about that. That's Like that last 10% is often like 50% of the actual work. Totally. And people that can sort of, like, push through that, have a whole another level of skill set, in my opinion. So what is the what's the saying? The road to hell is paved with good intentions? Rid. Yes. Hey, that is You know? Yeah. That's what I think about. This type of thing is, like, yeah, you meant to finish it, but, like, actually do it. Like, just rid. Just sit down and do it. Figure out figure out those problems,

Topic 8 27:46

Finish side projects for learning, but don't be afraid to abandon if you've gotten what you need

Scott Tolinski

figure out what you're actually stumbling on, and figure out how to get around them. Because if you can do that, You're gonna level up a whole another level as a dev. Yeah. I think a good thing too is to, like, recognize what your motivation is for doing something. Is is your side project a side project because You wanna make money or because you wanna learn something specifically or because you want to gain notoriety from it? Like, what is the end result goal of your side project. And if that if your eyes are not on the prize, then you very well may like you you you may not, you know, get there. Right? Rid because you need that motivation, and that motivation is going to come from the same thing that motivated you to start the project in the 1st place. But then again, at the same regard, don't be afraid to abandon something like Wes said because sometimes you've gotten what you needed out of the project. And maybe, You know, the the real prize was the things you learned along the way, so to say. So yeah. That's great. Yes.

Scott Tolinski

Alright. Next question here. Where is your head at? From BasementJacks, says, hey, guys. Sick podcast as always.

Scott Tolinski

So I'm having a little headless issue. Hey. You should get that checked. You should get that checked out, basement jacks.

Wes Bos

Your your head? Rid Ichabod Ichabod Crane, is that the guy? Is that the headless horseman? I don't know. I don't know what that is, but I had a similar joke rid. This morning, my I dropped my daughter off at school, and her mask was falling off. She says my ears are falling off. I was like, we gotta go to the hospital.

Wes Bos

That was that was a good one. It hit

Scott Tolinski

rid. Well, that is a good one. Yeah.

Scott Tolinski

So, yeah, Ichabod Crane is the headless horseman, in case anybody was wondering.

Scott Tolinski

So okay.

Scott Tolinski

Enough enough joke. Enough jokes. So I'm having a little headless issue. I need to take an existing Shopify site and make it headless. The issue is I'm Basically, having decision overload, there is a lot of options. Sanity, Prismic, Storyblock, GraphCMS, Strappy, etcetera. I'm wondering if you guys had much experience creating headless Shopify storefronts and what CMS you've used. Any pros or cons? I'm hoping to find the CMS that I can integrate with Shopify and be used to create a page builder like Form8.

Scott Tolinski

Ideally so that the client can click together their storefront with any custom components created by Mio and have Shopify handle the ecommerce junk.

Scott Tolinski

Side note, there are also possible consideration of u r URL control and being able to fully control the URL path and customize it via the CMS. I don't know if any of this has ever cropped up in your travel too.

Scott Tolinski

Wow.

Scott Tolinski

So they're they're they got a lot of technologies kind of snapping together. And I guess the big thing is, like, okay. So Shopify exists already. So that's one of the thing you you need to use. No. I'm not I I've done Shopify headless business stuff, especially with Gatsby in the past. But what I haven't rid. Really dove into a Shopify is the kind of CMS tools that Shopify itself has. The thing I'm getting hung up here in my My explanation of this is, like, what does the CMS tools actually need to do? Usually, like ecommerce sites, a lot of the CMS parts of it are simply the products. Right? And those products are coming in via headless manner from the API. So, like, what exactly here do you need a full end CMS for? Because if if it was me, I probably wouldn't be reaching for another CMS in addition to Shopify, because Shopify is the CMS to me, and then I would do either everything else in code or utilize Shopify to the to most that I could there. So, like, what what exactly are you needing a whole another system for? And when you have these other systems, you have Sanity, Prismic, Storyblock, Grassi, all of these services that you could potentially strap in here, strappy in here. But I I I just wonder if you need it. Like, do you need Another CMS or not. Because the one thing that you're gonna have to think about is the more systems and tools you add in, the more places people are gonna have to log in, the more Places people are gonna look for something if something's, data's coming in or something's going wrong or or or the data is not correct or The training is gonna be more intense. So, like, who's using this thing, and are those people going to want to go to several different places to change things in the CMS, Going to modify it. And and they also say, like, I'm hoping to find a CMS that can easily integrate with Shopify and can be used to create a page builder like. So this is intense, and I don't I don't know. I don't I don't I don't know because you're gonna end up having so many different services kind of working together. I could I could see connecting multiple CMSs to Shopify being a big disaster. You know what I would probably end up doing is is if you do need it, I would probably just use headless WordPress and then Shopify together. Use all the product stuff on Shopify and then any sort of data and page stuff in WordPress.

Topic 9 33:54

Regenerate package-lock.json on merge conflicts rather than resolve manually

Scott Tolinski

It. That would be my call, but, I don't know. It sounds kinda scary to me if you're if you're asking for my honest advice.

Wes Bos

It well, I seem to To see from looking at online stores is a lot of people will only kick you off to Their Shopify store once it's time to actually do the shopping and then the whole marketing, SEO, all of that. And It seems like Shopify will do that, all of you all for you. But from what I'm seeing, a lot of people will pick either, like, a page builder, Squarespace or whatever, or they'll they'll build something that they'll take something like next year and they'll they'll use the sanity or graph CMS or strappy or story block or Prismac or any of those. Right.

Wes Bos

Rid. And, like, I guess it depends on on what you need to do. I think what I will tell people, and I guess question all the time, is don't try rid. To build your own online store if it is very complicated. Like, for example, when I use my t shirts, rid Sold my t shirts. I have an entire ecommerce platform that I used to sell my courses, but I did not use that to sell t shirts because there was Shipping and sizes and permutations and putting those things together and shipping to different countries and quotes. And that And then there was a certain number of every product that needed to be decremented every single time someone bought 1. And it's all very complicated. So I always tell people, like, no. Don't try to build your own online store unless it is very simple, like selling stickers or having a couple of products or you add the card and whatnot. Because once it gets more and more complicated, then you go, oh, man, There's a there's a lot. There's a reason why Shopify is, like, the one of the biggest companies in the world is that it's very hard. Yeah. Yeah. I I do my own my own ecommerce

Scott Tolinski

For selling t shirts when I first started level up tutorials because I was like, I I'm building this thing for the subscriptions. It probably won't be that much more to build in products. And I kept it for, like, 2 years before removing it because it was a constant source of stress. It was a constant source of pain in my rear, and it just did it it was not fun at all whatsoever. So, yeah, I totally agree with your sentiment there.

Scott Tolinski

Sentiment

Wes Bos

sent sentiment. Sentiment. Sentiment. And you totally you totally could if you want. Shopify has, like, their own I think it's called the buy button, which is their version of Stripe checkout, where you can check out with that. So I wouldn't really have a really good answer to this is that rid. It depends on how complicated your actual store is. If if it were me, I would probably do a full blown website and a full blown Shopify And then some integrations between the 2. So, one of the we'll use Sanity because we're going to have we're going to have a Sanity sponsorship after this. So this is This is a paid recommendation here, but you could make a I'm sure they even have it a sanity input on, like, one of your websites. Let's say you have a marketing page, and on that marketing page, you could relay a product and that could hook up to The Shopify API and then pull in all the details of that so that if the name changes or the colors available changes, rid. You're only updating that in one place. As soon as you have something that has changed in 2 places, then you're in a world of hurt. Like, I see it all the time with Wise.

Wes Bos

Rid. Wise with the the camera company, they I think I forget what they use. They use Shopify for Canada. They have their own store, and then they obviously have a marketing website.

Wes Bos

Rid. And then the marketing website says free shipping, but then the store doesn't give you free shipping. Everyone's always mad at that. And it's like there's obviously rid. A disconnect between those 2 systems, and they something got lost in translation between those 2 systems. Right? And that's probably an email that didn't get answered or whatever, but then you don't have a system to save your butt in that case. So as soon as you start going across multiple platforms, it can get a little bit to be a pain in the butt.

Wes Bos

Let's talk about what you could use. Again, totally spot moving from a question to a totally paid sponsored rid. Spot right here is Sanity. Sanity is a structured content CMS, and Sanity has these things called starters. Let's talk about that. Rid. They have a headless Shopify starter powered by Next. Js Insanity. So if you want to be able to use these all these things together, you want to build your own rid. Website for your SEO and your all all the content on your site, and then you also wanna use Shopify as well, you could use. It's called Haul. They have the entire Shopify starter. You just go to sanity.iocreat.

Wes Bos

They have templates rid integrate with it all. So you could just click a whole bunch of buttons. You sign in with GitHub. You sign in with your Vercel. You can deploy it to them And bing, bong, boom, you are up and running. It works with, has tailwinds animation with Framer Motion. They have a Shopify Buy SDK already rid. Hooked up real time inventory check. That's what's important to me is that, like, when the t shirt sells out, you got to be able to Check if there's any left before you sell another one. Right? So they have real time inventory check for products, SEO features, accessibility features, all kinds of really neat stuff. So Check it out for your next website or online store, sanity.

Wes Bos

I0/syntax.

Wes Bos

So that's where you wanna sign up, and then you wanna check out this, Shopify starter, just Google Sanity Shopify, and it'll come up for you. Sick. Alright. Next question from Ringo

Topic 10 39:19

Sanity.io provides tools to build headless Shopify sites

Scott Tolinski

Starr.

Scott Tolinski

Ringo asks, hey, Scott and Wes. A question for Wes. On your stickers website, boss.af, you have a Question mark token equals query param and some token value for it. Could you explain a bit more what this is For and how it works. It looks very interesting, and I've never seen it before. Yes.

Wes Bos

So those like anytime you see, like, a token in a URL. It's usually being used to pass information from a link rid. To the actual system that is running. And that's good because, like, you you talk about state managers. If you wanna hold a piece of data, the URL is a really good place rid to hold data. Right? And it's just question mark token equals a, b, c 123. So in my specific course platform, it's probably one of 3 things. So rid. 1st one is, probably the most common. It's a PayPal callback URL. So somebody you go to my website, advanced react You buy the thing. You click on PayPal. You gotta go off to PayPal. You pay the money and you come back, and then you finish up. There's a couple other piece of information I need to grab from you before you're done.

Wes Bos

And that token is passed back From PayPal to the website via the URL.

Wes Bos

And then I can grab that token via the query params rid. And and actually push it through, meaning that I actually charge it because PayPal will say, alright. It's good for $60 or whatever.

Wes Bos

Rid. Then you gotta finish up and actually charge the card or, in my case, take the money out of PayPal. So there's that.

Wes Bos

Stripe checkout works very much the same way as well.

Wes Bos

I don't use Stripe checkout in my URL platform or my course platform at the moment.

Wes Bos

So there's that.

Wes Bos

One thing about that sometimes is that people I have to, like I had some share buttons on there once, And people were sharing the token URL because it just defaulted to the window URL. So I had to write some code to strip that out there. It's not a big deal because those tokens are rid. Inert once once you're actually done, but that's why it's there. The next one is, drip custom URL. So if if I send rid. A link in an email. My email platform is is I use Drip.

Wes Bos

Drip will automatically append Individual unique identifiers to all the links, and then they use that to figure out which links you've clicked and if you've opened the email and things like that, I should probably actually turn that off because I don't even use I don't use that information. You know, like, some some people are crazy being like, oh, they click this link on. Now let's hammer them with, like, a coupon code For that specific link.

Wes Bos

I don't do that.

Wes Bos

So there's that. And then the third one is Google Analytics tracking.

Wes Bos

Rid so I have this built into my platform, but I don't use it a whole lot. But if I wanted to, rid Tweet a link to one of my courses, Instagram a link to one of my courses, email newsletter a link to one of my courses, and then, like, put a link in the syntax show notes on my courses. And I wanted to see who is buying it from where, you know, rid. Then you can put UTM source equals email. Mhmm. And then what happens Is that when someone buys it, I mark it in Google Analytics as paid, and then I can go into my Google Analytics and say, this is someone Someone actually bought something, and this is where they came from. You know? And for those, I actually scrub those out of the URL. So if you visit one of my websites rid. With if you you can even test it. Just go to my one of my websites, put the UTM in the URL, hit enter. And after the page loads, I use push date to update the URL and take those out of the URL because they're ugly, right? They're good for tracking and figuring out where your customers are coming from, But they're very ugly to have in the actual URL.

Wes Bos

So what I do is when the page loads, I check if there are any in the URL and then I'll just scrub them rid Out of the URL, and it's it's pretty handy. So it's one of those 3 things usually when you are visiting my website. And

Scott Tolinski

The drip and the Google ones should be scrubbed, and the the PayPal one shouldn't be scrubbed because you need that information for for checking out. Yeah. That's interesting. You know, the query primes too, they they can do so much stuff. I I underutilized them myself. I think we only really use them for affiliate codes. But, You know, you also see them in things like YouTube when you're copying a YouTube link, and it will have the time stamp if you wanna share a YouTube video with the current time stamp. So, again, it's like just for sharing rid. Essentially, information, via a link. So I I think you nailed it with that one. Next question from Brian Kitchman.

Topic 11 43:35

URL tokens allow passing data like PayPal callbacks and tracking codes

Wes Bos

Have you thought of selling syntax.fm ready to help support your podcast.

Wes Bos

Some of us listeners would be happy to give you our money and share the word.

Scott Tolinski

Yes, we've rid. We've talked about it a couple times. We should probably do that. I think that would be really fun to have a syntax shirt. Yeah. I'm wearing a a West Boss sweatshirt right now. I gotta say I love this thing. I would I would actually I would love a syntax one very similar to this. Yeah. Those sweatshirts

Wes Bos

are the best. Like, I rid. Maybe 3 years ago, I made these sweatshirts just as Christmas gifts for people who had helped me out that year.

Wes Bos

Rid. And the I was like I was like, give me the heaviest hoodie ever.

Wes Bos

And they were so expensive to ship because they're so heavy.

Wes Bos

Like 800 grams or something like that for the hoodie. So, but I we should look into that again. So answer to that is is yes.

Wes Bos

I have the whole infrastructure, so why not? You know? Oh, I didn't even say that. Last time I used when I sold my T shirts, I used Snipcart, and I integrated into my Gatsby website. And that that works really well. Mhmm.

Scott Tolinski

Yeah. Yeah. I I'll be down for that too.

Scott Tolinski

Yeah. We should we should do something. I bet that's the same thing. We're, like, oh, yeah. We should get a new, theme song. We should There's always so much time in the world. Do you know? Seriously, yeah. And and I got a dev job, and I run a business, and I have 2 kids, and yeah. It's it's a lot. There's a lot of stuff to do. And get this, Wes. I gotta do the dishes every night by hand because our dishwasher broke, in October. So I've been doing a family of Four of dishes every single night, and it just takes forever.

Scott Tolinski

Oh, brutal. Ever with all those, like, kids bottles. They take not bottles. They're they're Our kids call them buzzers. Sippy cups. They're sippy cups. Yeah. They they yeah.

Scott Tolinski

That's it. They came up with that. I don't know how. But, yeah, the Washing the Bubba's takes time, man. It takes various time. That's why I can't do T shirts, Brian, is because I'm washing Bubba's. Who's washing Bubba's? Next question is from Stefan, Longtime listener from Norway. I'm making a website with React and using Express for my back end. While developing, I have both running at the same URL and port with package dot JSON proxy setup so that I can set HTTP only cookies for storing session tokens for authentication.

Scott Tolinski

I am looking to migrate my dev project to Next. Js because now I have a need for SSR and SEO for my website.

Scott Tolinski

Can I migrate my express routes to Next JS's API and get the same HTTP only cookie workflow? What are the advantages and disadvantages for next JS API versus a stand alone expressed back end? I am only familiar with the dedicated rest back end. I don't know enough of serverless to see if it's suitable for my project. Okay. So, rid. I'm gonna let you answer some of these things that are more specific to Next. Js West, because I haven't done a ton with Next. Js's API endpoints, just kind of the the basics.

Scott Tolinski

But if you're wondering maybe, like, what the benefits are, you know, we actually have our own API separated.

Scott Tolinski

And I do kind of wonder If occasionally, I kind of get into the mode, like, I kinda wish these were together. But at the same time, there's some really nice things about having a separate API where you can Push updates just to the API, or you can have that service be its own thing and and control it and scale it separately, rather than if it's altogether. No. I don't I don't know how Next. Js deals with that if there are specific things for scaling your API separately, rid. Within the Next. Yes. But, Stefan, if you're wondering kind of like, how do you have that HTTP only workflow, it's really going to be the same as your your Express setup as in you can set and delete and do anything with those cookies only from the server side, And you're going to treat your Next JS endpoint as if it were just like a normal express endpoint in that regard. So whatever you're using to do to rid. Your cookie already.

Scott Tolinski

I I can't speak to Next. Js's specifically. The way I do it personally is we use a Mercurius cookie package that is For dealing with HTTP only cookies. So I'm sure there's lots of examples out there for Next. Js authentication cookies. But, again, You're only gonna be setting these from the endpoint themselves, exact same way you would do it in a normal setup. Yeah. It's there's not a whole lot of difference. You need to, rid. Like, be reminded that,

Wes Bos

serverless functions are still on a server Despite the name.

Wes Bos

And you can still set headers. Like, at the end of the day, HTTP only cookies are just a header that's replied Mhmm. With rid a, with a response. So whether you're send you're sending back hello in text or some HTML or some JSON or GraphQL endpoint, You can always set a header with that reply, and that header will be accepted by the browser when the browser is old. There's a set cookie header. Let me just put that sucker in the, cookies, and it's marked as a should be only. So make sure it's not rid. Accessible via JavaScript only via the server side. So not a whole lot there.

Wes Bos

Next. Js also has now has middleware, Which is like so my entire course platform is on Express, and I heavily use middleware. And I'm I always think, like, oh, it would be nice rid. To move it, not necessarily just the Next. Js. There's no difference between the Next. Js serverless functions and, like, standard Lambda, rid. Ones. There's there you can get, like, helpers and whatnot, but all the serverless is essentially the same.

Topic 12 49:22

Next.js serverless functions can set cookies like Express with proper headers

Wes Bos

So, yeah, there's not a whole lot of difference there. Myself, I'm thinking, like, should I move it over to serverless? It would be nice to have, like, faster builds rid And whatnot. Although my builds are beginning really fast lately.

Wes Bos

So, like, I think, like, should I I use a lot of middleware now that they have middleware. I wonder, like, I use a lot of connect Middleware, which is connect. Middleware is like, connect is like, I don't know what you call it, but basically rid. Express.

Wes Bos

And, what's the one that you use? Fastify.

Wes Bos

A a lot of these, like, API things will be able to use connect middleware, meaning that they're rid. All standardized on connect, and and it doesn't matter which one you use. You can always use it. Like, I use one for rate limiting. Like, if someone tries to hammer my rid. Sign up endpoints that will stop them.

Wes Bos

All kinds of stuff like that. So I think, like, should I do that? But then I'm like, rid. My website is very cheap and easy to host right now. Like, there's there wouldn't be

Scott Tolinski

A whole lot of benefit other than my own enjoyment of of moving it over to serverless either. Yeah. That is interesting. There's There's that, like, analysis you have to do. So, like, if you have your own express server already, like, is it really going to be that much better for you to move it On to Next. Js and have to deal with that. I don't know. I I personally have not had that that I I haven't had the feeling like that would be enough of a benefit even though I have kind of occasionally looked at the same to do with, like, SvelteKit endpoints instead of Next. Js endpoints. But, yeah, it's it's tough call. At the end of the day, I think we're both more in the camp. If it isn't broke, don't fix it. But,

Wes Bos

rid. One more thing is that, he he talked about session tokens, storing them on the server side.

Wes Bos

Most likely you are already storing those session tokens somewhere.

Wes Bos

I specifically I store mine in MongoDB.

Wes Bos

You can also store them in very popular places. Store session tokens is in Redis.

Wes Bos

So if you are by chance Putting your session tokens in memory, that's not gonna work for serverless.

Wes Bos

But you generally shouldn't be putting session tokens in in memory anyways rid. Because, you can overflow your memory very quickly that way. Good call. Beauty.

Wes Bos

Let's talk about our last sponsor now, which is FreshBooks.

Wes Bos

FreshBooks is the cloud accounting software built for business owners. It is awesome. I use it myself. I have for rid. I think I looked it up. I think I've been using it for something like 12 years back when Ben Vinegar was employee number 5 or whatever.

Wes Bos

We interviewed him the other day and it is awesome. It's really cool because you can look at all of your invoices, all your expenses, all your clients, all of your projects, you can get a there's all kinds of reporting around FreshBooks. You can see how your business is doing at any given time. If you need to estimate Where you're gonna be at in 6 months from now, you can do that.

Wes Bos

It's just a great way to run the books for your business. Check it out. Freshbooks.comforward/ syntax.

Scott Tolinski

That's gonna give you a 30 day free trial. Thank you, FreshBooks, for sponsoring. Sick. Cool. Well, this is a a part of the show where we're gonna get into sick picks, things that We like things that we think are pretty sick. Wes, do you have a sick pick today? I do. So this was a bit of a joke pick,

Wes Bos

rid. And then it turned out to have a, like, cult following. So, we use the stuff in my house called working hands. It's a hand cream for for for working hands. And I always joke with my brother in law is an actual farmer, and I always joke about how my, I have programming hands and, like, so I put a little thing on Twitter, Levine.

Wes Bos

Like, finally, they made a, rid Like a a really hard, really good hand cream for extremely cracked and dry hands for us programmers, you know, like, working with our hands.

Wes Bos

Rid. And, but then, like, I don't think anybody realized that that was a bit of a joke, but everybody's like, that stuff's the best. Or, like, I bought some after you posted that, and it's amazing. And, like, it actually is very, very good. It's it's the best hand cream ever. It's not It doesn't get, it's more like waxy than it is slimy or oily, which is good if your fingers are slipping all over the over the keys after you put Hand cream on. And I don't know about you, but Canadian winters really, really take a toll on your hands. So It's a good one. You wanna check it out. It's called the Working Hands from O'Keefe's.

Scott Tolinski

Yeah. It's so dry here that my my skin overall in the winter is just a It's a mess.

Scott Tolinski

Just dealing with that dry skin hands hands specifically too as well. And you know what? I gotta say that, man.

Scott Tolinski

I'm going to I'm going to double up your sick pick on O'Keefe's, and I'm going to sick pick O'Keefe's rid Lip balm.

Scott Tolinski

Keith, get at us here. I bought this thing in, like, 6 packs because my My my lips, specifically, in in this winter or Colorado dry climate have just been getting destroyed, and I've really run the gamut on All the different types of lip balms. I've tried the lip bag, you know, the little circle egg thing. I've tried the Yeah. Yep. I've tried lip bag. I've tried, rid Busax blizz Blissdax, not Blizzax. Blizzax are top notch.

Scott Tolinski

I've tried Blizzax. I've tried, Lip bag. I've tried all that stuff. And let me tell you, O'Keefe's lip balm is the only one that's, like, actually made a difference where I'm not having to put it on Every single day, 247.

Scott Tolinski

And so I'm gonna I'm gonna do that, and I like the cooling one with some, what is that? With the menthol. Get It's a peanut alcohol in there. So spicy? Yeah. So I'm gonna I'm gonna sick pick O'Keefe's lip balm with menthol. We're just going straight on rid. O'Keefe's today.

Wes Bos

I got all of this stuff. I'm gonna pick up some of that hand cream for myself too because that looks wonderful. It's good stuff. It's good stuff. We're we're talking about this on Twitter because It's really funny sometimes you talk about stuff on Twitter and, like like, everybody nobody talks about lip balm. But then once you start, everyone's everyone's got tips and stuff. And We got one more tip is, if you use lanolin, which is lanolin is meant for your nipples when you're breastfeeding.

O'Keefe's hand cream and lip balm recommended for dry cracked skin

Wes Bos

And

Scott Tolinski

I'm sorry. You said nipples. I was laughing. I didn't mean to laugh.

Wes Bos

Like, one of my daughters gets, like, awful, rid. Super chapped lips. Like just like to a point where it's like like red and stinging. And we finally figured out you can just buy lanolin straight up in the Baby section. Oh. And that stuff is apparently, it's the active ingredient in a lot of these lip balms.

Wes Bos

Rid. And, man, that works super well as well. But it it comes in it's kinda messy, and it comes in the thing, but you just want, like, a nice lip balm to put in your pocket. I'm going to get some of this O'Keefe stuff because

Scott Tolinski

it's good. Yeah. It's pretty standard lip balm, you know, size fair, whatever. It's an easy to apply. Yeah. I always like

Wes Bos

the the Burt's Bees for the longest time had the circle tins.

Wes Bos

I love that because I would put it in my, like, salvage jeans and that you get like a rid. Circle in the back in your back pocket.

Wes Bos

And people because it's like a thing in salvage gene world to put a a pack of chew in your back pocket and to get, like, a perfect chew ring. And, like, I don't I don't chew tobacco.

Wes Bos

Yeah. I don't like a lot of guys just get an empty tin and put it in to get the luck guy. Rid. But, like, I'm not. I like the little thing, but they stopped selling it in Canada.

Scott Tolinski

I still have a couple. I bought them all when they stopped selling it. And somebody They told me in the in the UK, they still sell it in a tin, so I gotta take a flight one day. I don't do the tin. I no. You got me, like, a tin of some fancy lip balm at some point. I was like, what am I supposed to do? Rub this on my finger and then rub it on my lips, and then now I got a little ball on my finger? Finger And then I lose it in there. Yeah. Yeah. Yeah. Come on. Rid. Come on. Oh, man. Tim for life. We've moved past that, Wes. We have we have the deodorant stick style thing where you just twist it, and it comes out. Yeah. That's fair. Yep.

Wes Bos

Let's move to shameless plugs. I'm going to shamelessly plug all my courses at Westbost.comforward/courses.

Wes Bos

I'm going to specifically plug the course player, which has been totally rewritten and updated. So we updated the entire progress tracking. You can now check videos on and off if you want to watch them again. That was a big request that we had.

Wes Bos

Rid. And the it now uses CSS aspect ratio instead of the Position padding tag. So it's, like, so much better on mobile and, Position sticky for scrolling through the videos and just just a well needed update to the course player. So it doesn't look a whole lot different, but rid Every line of code in there has been rewritten, so check it out.

Wes Bos

Westboss.comforward/courses.

Wes Bos

Any course that you watch, free or paid,

Scott Tolinski

We'll, we'll have the new player. Sick. I'm going to shamelessly plug the latest course on level up tutorials.com and specifically because because I'm gonna get specific with it just like you.

Scott Tolinski

Specifically, we just released a new course on Svelte three d using Svelte cubed.

Scott Tolinski

And we did our very 1st course drop where, Caitlin, who does our marketing, she interviewed me about the course and asked me a bunch of questions. It's like an audience surrogate to say, like, you know, what's the job market like for this type of thing? And and just in general. And so we we did a fun little course drop video. So I'm gonna Shamelessly plug that specifically. I'll link it up in the show notes. If you wanna learn more about Svelte and three d on the web, just watch this video because she asks a ton of good questions, And I give a lot of good answers, and we kind of dive into the course itself and what you'll learn about it and some of the examples. It was a lot of fun, and it was our 1st time doing this. So, let us know what you think, and let us know if, if you like the course drop. You wanna see more of them. We're gonna be doing every every month from now on, and we we'll do giveaways too. We did A giveaway of a free month of LevelUp tutorials pro. So, yeah, check it out. Leveluptutorials.com, as well. Rid. Just throw in all the URLs.

Wes Bos

Beautiful. Alright. Thanks, everyone, so much for tuning in. Appreciate all of your questions. Keep them coming. We'll keep answering them, We will catch you on Monday.

Wes Bos

Pete.

Wes Bos

Peace.

Scott Tolinski

Head on over to syntax.fm for a full archive of all of our shows, rid. And don't forget to subscribe in your podcast player or drop a review if you like this show.

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