709

December 27th, 2023 × #javascript#react#css

Potluck × Naming Tech × Generators × Layers Follow Up × Sick Picks Page

In this holiday potluck episode, Scott and Wes answer developer questions around topics like advanced JavaScript techniques, React, CSS layers, designing databases, and specializing as a front-end engineer.

or
Topic 0 00:11

Potluck podcast with JavaScript, React, CSS questions

Wes Bos

Welcome to Syntax. We got a potluck for you today. Lots of interesting questions around JavaScript, React, CSS.

Wes Bos

Somebody has a decent idea of how to use generators. We've talked a lot about that.

Topic 1 00:27

Addendums to previous CSS layers episode

Wes Bos

Re some addendums to the Layers episode and all kinds of great stuff. Looking forward to talking about it. My name is Wes Bos. I'm a developer from Canada. With me as always, mister Scott Talinski. How are you doing today, Scott? Doing good, my man. Just hanging out.

Topic 2 00:42

Holiday train ride with kids to see Santa

Guest 2

Not too much to report. Just feeling feeling the holiday vibe. We took a train in the mountains to see Santa with the kids, And it was an old silver mining tray train, and you take this train through this really just picturesque scene and Santa's on the bore onboard and everything like that, and it was just it really got you into the holiday vibe. Rid. The kids were going nuts for it. They had a great time. So, yeah, just feeling it. Yeah. Well, this this episode goes live December 27th. So

Wes Bos

Merry Christmas to everybody. Hopefully, you enjoyed your time. And a happy holidays.

Guest 2

And happy holidays. Syntex is presented by Sentry.

Guest 2

If you're shipping software and users are using it, you wanna make sure that you have a handle on your bugs before your users hit them. Not only does Sentry give you access to finding and fixing all of those bugs, but they also give you incredibly useful tools like session replay, test coverage, Performance metrics and tons more. So head on over to century.i0.

Wes Bos

Use the coupon code tasty treat, all rid lowercase, all one word, and you'll get 2 months for free. Let's get into the first question here from Gordon Liu. How much of programming I laughed at I laughed at this question, so I put it first. How much of programming is general advanced technical stuff versus fancy complex sounding names for things? Yeah.

Guest 2

Rid

Topic 3 02:09

Many fancy programming names are simple concepts

Wes Bos

Seriously. All the time, I learn about something new called, predicate inference pattern on composition member inheritance proxies, rid when it's just some plain old function thing I've written 10,000,000 times. And I can't agree more. I I see I read this and I was like, There's so many things in JavaScript,

Guest 2

and I have a bunch of names I have a bunch of examples here that we'll rattle rid Oh my gosh. I'm so glad you wrote this because that's the first one that came to mind was Singleton.

Guest 2

Okay. Yes.

Wes Bos

And every time, I'm like, oh, what's that Advanced concept. Oh, my gosh. And then you get into it, you go, oh, that's just a different way to use a function or that's just a different way to Store variables. So let's go through a couple of them here. 1st one is tuples.

Wes Bos

A tuple is a very rid. Scary sounding name for an array where you the length and the item types are known. So if you have an array of, rid a an an ID and a person, and the 1st item is the ID and 2nd item is a person. That's a tuple. It's a tuple. Next one is Singleton. Again, this is one of those ones.

Topic 4 03:20

Singleton design pattern holds one instance

Guest 2

Why do we have to have a crazy name for it? So Singleton, a value That is only created once and reused.

Guest 2

K. Constant.

Topic 5 03:29

Factory makes objects/classes dynamically

Wes Bos

Very, very simple. Factory, A function for dynamically creating objects or classes.

Topic 6 03:35

Dependency injection passes needed things

Guest 2

Dependency injection. This one always gets me to passing in the things that a function needs rid Teran. Yes. It's dependency injection. The the the dependency part I get, the injection, it sounds a little little ready. Fancy. You know? It sounds too fancy to me.

Topic 7 03:51

Mixins combine reusable code

Wes Bos

Mixins combined and reuse code from multiple sources.

Wes Bos

I I tried to, like, summarize these in, like, five or 6 words. And, obviously, there's a bit more to all of these, but at the end of the day, they're just they are simple things.

Guest 2

Simple things.

Guest 2

Memoization.

Topic 8 04:09

Memoization caches results

Guest 2

You remember the results the next time you do not have to recompute it. You you mean you you're caching the result, essentially.

Wes Bos

Rid A a high order function or higher order function is a function that returns a function. Yep.

Topic 9 04:16

Higher order function returns function

Guest 2

Yep. That's it. Man, It it doesn't have to be this hard. These things can be described in such easy ways. But, again, sometimes sometimes the language used is scarier than the concept itself. And I think that is you know, you gotta name things.

Guest 2

So things have to have names, but couldn't be simple names, or Friendlier names? Who knows? There's probably a long history for a reason why that is. Also, this question was asked by Gordon Liu who, I gotta say, I don't know if Gordon if this is your real name or not because, this is the name of a very famous Kung fu actor. And I'm wondering if the OP of this question knew this. This is the the actor from such fine films as the 36th Chamber of Shaolin, you know, a very famous,

Wes Bos

kung fu film there. So, next one we have here from Travis Hubbard.

Topic 10 05:14

Found use case for generators

Wes Bos

Rid this is the interesting one. A little advanced. I spent, like, 20 minutes before the episode trying to understand, and I I get it. And this is, rid. Dudes, I've done it. I found a nontrivial use case for generators. So, a little bit of backstory.

Wes Bos

Rid We we talk a lot on this podcast that, like, I can't find I we we've have a couple good examples for generators.

Wes Bos

But, like, in practice, I've never actually implemented a generator in my code base.

Wes Bos

So this was Travis has has stumbled upon something in his code base, and I thought it was really interesting. So I'm going to read through it and then sort of sprinkle in some explanations as we go. So imagine you are creating a Jira or Trello board experience with multiple columns, and each column has an array of cards in it. So to do, progress, whatever. You get it right? You have 3 columns. Each column will have 3 cards each.

Wes Bos

I have 1 service called a card data service that holds the data from the server for each card. So example, a card would have an ID, title, description, etcetera.

Wes Bos

I have a separate service that takes in a single record of card data and interpolates that into various HTML JSX components to build out the visual card for the display view, right? So it takes in data, returns some templating out. So if all of this were a single service, you'd have a ton of nested loops, right? I need a loop to loop over every column, Then a loop for every card data element in that column and then a loop for React to actually render it on out. Rid. And then I've bolded this part right here. It gets wacky to reason inside of nested loops like that because anywhere you need to access rid. The full card data again, you're duplicating loops. I thought this is interesting. Yeah. If you if you want to be able to like, you get data from the server And it returns an array of 3 columns and each each of those columns you have arrays of cards.

Wes Bos

Any time you need access to all of those cards. Maybe you want to display a list of them, or maybe you just want to find a specific card in that.

Wes Bos

Rid. You find yourself writing multiple loops to sort of get access to them all. So this is what Travis says. In my card data service, the card that holds the data, I have a generator function. So this is a function called cards data. And inside of that, it has nested loops. The first one loops over the columns. The second one loops over the cards inside of that column. Right? And the important part here is that Finally, inside of that nested loop, you yield the data for that specific card. Now this generator function is now just a function that contains all the complexity of looping over those nested values and returns to you or sorry, doesn't return, it yields each piece of card data. And the important part about yielding there is that you can then Use a generator function in, anything that accepts iterable. So a for loop is probably the most most common.

Wes Bos

Now he simply just has to use a single for loop to be able to iterate over every single rid hard without having to go through it.

Wes Bos

So I thought this was pretty interesting, and I sort of summarized it here. A complex loop can be made flatter or simpler anytime you need to access all of the cards as generator function will give you a nice simple loop without having to worry about the complexity of the way the data is formatted.

Wes Bos

So immediately I was like, well, why not just Like, why not just use array. Flat? Right. Like, why not reduce it down into a single value? And I think Probably, in most cases, I would still reach for a flat, but it might not be as simple as that because flat assumes that it's not a synchronous operation. Right. What if in every single iteration of that you need to do some sort of a sync away, you need to pull an API for that specific item.

Wes Bos

There's a lot that could possibly happen there, right? Or there might be cards that are added to the end of the array as you are parsing earlier cards. So there might be some sort of logic that says, all right, well, if this card has something in it. We need to add something to the end of it. So a generator is helpful in that case because a generator doesn't know When it will be done, it will simply keep going until you no longer yield any data.

Wes Bos

So I thought that was kind of interesting.

Wes Bos

I, again, haven't haven't run into that specifically myself, but I think that's, like, the first, like, solid use case of a generator function that,

Guest 2

we've heard here. It it it's still a bit of a mystery, to be honestly. I was I know that was a really good explanation, and I get it. But, like, in the same regard, I'd still yeah. I just don't hit I guess I just don't hit that that situation, but interesting, man. It makes me just wanna it makes me want to explore them more. You know? Makes me wanna do just more research. Yeah. I think I think the the important part here is, like,

Wes Bos

rid Know what it is.

Wes Bos

And at some point, like, Travis here, you're gonna hit something where you go, sure. This is a pain in the ass to rid Do this double loop inside of it. And I have this weird little the way that we do it is a little bit weird, you know, and a generator would Would be a good use case there. If you have a use case for a generator that you're using, please send it to us, tweet us, syntax. Fm, send me an email.

Guest 2

I'd love to hear it. We would love to generate some content from that.

Guest 2

Next one is from Phodiman.

Topic 11 11:11

External CSS could override internal layers

Guest 2

Phodiman says, In episode 698, you talked about CSS at layers. For some sites that statically link in styles for dependencies That aren't using layers, those styles would be a applied atop of your layered styles.

Guest 2

This could be one reason why no one is really using layers yet. For example, imagine including styles for Bootstrap. You want to overwrite those styles to match your theme. With layers, you'd probably need to, rid. Be an all or nothing approach.

Guest 2

Else, those external dependencies are almost treated like import rules, overriding your styles and layers. What are some solutions to this problem? Yes. The solutions to this problem is, 1, just bring that CSS in house, wrap it in a layer. That's what I do. I pretty much if I'm using a third party CSS solution, I am putting it into my layers earlier In I I forget which type of layer you would put that in. It could be, like, part of your base layer, but maybe the next one out.

Guest 2

Rid. It could be that your third party layer, your system, or your layout layer depending on what that is. And I'm gonna I'm gonna copy and paste it, or I'm going to use the Import with the layer in the import.

Guest 2

Either way, my most general solution to that is to copy and paste that CSS into my CSS And wrap it in a layer. In fact, we did do that on the Syntax website for CSS that is coming in from a third party. For instance, the MediaChrome CSS, they came in for our video player. We wanted to override that with our own properties, our own theming stuff. We put that into a layer in that way.

Guest 2

So, yes, this is also a a good reason, you know, why this exists is because, you know, we don't want CSS that's not in a layer to get overwritten by CSS. It isn't a layer Because I think that that scenario would be way more confusing than you do all your layers first and then you apply everything else on top of it. But, again, my solution is to bring that in house anyways. And I would do that even if I wasn't using layers just because I don't typically like to link to third party CSS hosted elsewhere.

Wes Bos

Yeah. That whole, like, CDN linking external CSS, I sell some sites that do it, but I haven't done it in probably 4 years or so.

Wes Bos

If you're using Bootstrap, Probably better to NPM install it and include it in your bundle.

Wes Bos

The benefit to linking it off of a CDN rid.

Wes Bos

Is and was that if another website same with jQuery.

Wes Bos

If another website had already loaded that, Then your your users doesn't need to redownload it. Right? Like, you go to scott.com.

Wes Bos

He loaded jQuery and Bootstrap.

Wes Bos

Go to wes.com.

Wes Bos

Oh, I need the same version of jQuery and Bootstrap. Oh, it's already in my browser's cache. Doesn't need to to redownload it, but rid. It's in most cases, you just import it. There also is a you talked about you can use at import URL.

Wes Bos

You could import the CSS In your CSS with the at import rule. The downside to that is you have a waterfall request so you can fix that with a link Rell DNS prefetch in your head. And that will tell the browser, hey, I'm going to need this at some point.

Wes Bos

Start go fetching this thing ahead of time, and then you can give it a layer after that, like you said. But there also is a proposal.

Wes Bos

Ready. Looks like Miriam, Suzanne and Brahma, Past Show, Guess, a couple other people Are sort of going through the standards process right now to add a layer attribute to a link tag.

Wes Bos

This would allow you to rid Say, alright. Link in Bootstrap, but throw all of the resulting CSS into the layer of rid Bootstrap. And that solves that problem right there. So, yeah, let's hope we get that. So hopefully hopefully I'm actually surprised that that that didn't rid Make its way

Guest 2

into the initial spec because, yeah, that's a that's pretty common use case, you know. Yeah. Maybe it's just one of those things that you know, sometimes things slip through the cracks, or maybe they thought about it and couldn't get it in. So wasn't important at first.

Wes Bos

Next question from Nils. Some episodes ago, you guys mentioned something with a database prefix that allows you to use the same database for multiple projects. Can you tell me what that was? Because I cannot find the episode, and googling is not helping me love the podcast. So first, I cannot wait to get the The AI embeddings going because that would be such a simple thing to say. When did one of them talk about database prefixes, and it would find the actual part where they had talked about it.

Topic 12 16:09

Database table prefixing

Wes Bos

But I don't know. Scott, do you remember what this is? If not, I have some notes on other other possible ways. No. And I I honestly have no idea what what this person is talking about. So I think What you are referring to is the idea when you create tables with your ORM, You often have the ability to pass it a, a prefix. So the most common example of this is WordPress.

Wes Bos

If you have 1 MySQL database and you can only put 1 WP underscore posts table in there. Right? And if you have 2 WordPress installs, you point them to the same database, They're going to both use the same tables. But if you want them to be separate, but in the same database, for whatever reason, You can change the wp prefix in your wp config file and set that to rid literally anything you want. A lot of people do that just for security reasons. If your database was ever exposed, a lot of the robots would just automatically check for the wp underscore whatever tables.

Wes Bos

But that's not really that's a bit of a security by obscurity thing. So you could just ready. Prefix all of your tables with a specific prefix when you build it.

Wes Bos

That makes me a little Nervous, though, putting multiple projects in a single database.

Wes Bos

Yeah, I think if you're trying to sidestep paying for databases. I can maybe understand that, but maybe if that's the case, learn how to host your own MySQL instance.

Wes Bos

Because if you have 1 MySQL instance, you can have multiple databases in there. Yeah.

Guest 2

Yeah. That's a, Yeah. It's an interesting thing. It's not something that I ever do personally.

Wes Bos

I would just be scared that you would accidentally, like, delete something and, rid. Like, you would have, like, 1 project that you press, like, oh, restart this project, and it would just wipe the entire database.

Guest 2

Yeah. Yeah. I typically tend to do a 1 you know, try to get compartmentalize that stuff as much as possible.

Guest 2

Next question is from Mila. Is it better to be a generalist or a specialist as a front end dev? Now I think this answer can go 2 ways. It's better to be a generalist if You would like to do more.

Topic 13 18:22

Generalist vs specialist front-end roles

Guest 2

I want to be able to build a site that does this and this and this and has a back end and has this all by myself. I want to work on this thing, and I just want to, create.

Guest 2

Right? Being a generalist gives you a lot of freedom in that you rid Have the abilities whether or not you are in-depth with those abilities, but you have the abilities to do a lot of different things.

Guest 2

And, therefore, you can create more without having to spend a lot of time looking up other things or instituting other people in there to help you.

Guest 2

If you're a specialist, you obviously can go deeper on a specific topic. You can become an expert. And oftentimes, if That expertise is needed.

Guest 2

You could get paid more for being a specialist. Right? As long as that specialty is maybe A rarer skill or perhaps a skill that's in demand. Right? You have the whole supply and demand of skills here. If you are a specialist of a skill that is in demand, you can bring in a lot more money than if you're a generalist. But if you're a generalist, You can do anything you want. You have total freedom, but you might not be able to command anything that is, you know, a very specific nature.

Guest 2

Now, again, it depends on what your goals are. If your goal is to get hired by a company and that company is looking for a specialist and you are a generalist, they will toss your application out.

Guest 2

I'm I'm a good JavaScript developer. I'm not I'm gonna toot my own horn there. Right? I I can do a lot with JavaScript. And if you put an Angular one project in front of me And said, hey. Get this to this point. I can get it to that point, and I can do it very well.

Guest 2

But if I were to Apply for an Angular one job and they were to say explain that this aspect of Angular one, I would say, Hey. I can't. I can't do that off the dome. I I just straight up can't.

Guest 2

Mhmm. And, therefore, I might get overlooked for that opportunity. In fact, I would, and that has happened to me. So you have to understand, like, what is it that you're after in this industry and go for that based on what you need there. I like being a generalist more because I am a tinkerer. I like to get my hands dirty with a lot of stuff and make fun things for myself. Rid. And, Wes, I know you're very much the same way. Right? Yeah.

Wes Bos

I think that like, people always ask me, like, are you a generalist or a specialist? And I don't really know the answer to that. Like, I'm a generalist web developer, meaning that anything that encompasses web development.

Wes Bos

So node back end, literally any of the other JavaScript back ends, React, Svelte, vanilla, CSS, all the parts of JavaScript from rid. Audio synthesis webcam all the way over to working with the dom and Crypto, you know, like, not not every time we say crypto, I have to say, like Yeah. Not Bitcoin, crypto, the stock or package. Rid.

Wes Bos

Yes. So, like, I'm generalist in that. Like Scott said, you could put most of the stuff in front of me, and I would be able to figure it out. And That is a very good thing to have on your resume because you're a bit of like a bingo player. You know, you go through a resume. Oh, this person has worked with X, Y, and Z. But I specialize in web development. I don't know Python.

Wes Bos

I don't know Go, Rust, or any of these other languages. I could probably figure a few things out here or there, but if if I saw a resume where somebody rattled off, rid. PHP, Python, Go, Rust, JavaScript.

Wes Bos

You know? I I would look at that and say, yeah. Right. You know? Like, there's no chance that you're you're

Guest 2

Really good at all of those things. Yeah. And it depends on how much you zoom out. Right? Because you could almost say the same thing about somebody who says, I'm good at Angular, React, whatever, Svelte, because you could be good at all of those things. But there are people who who know the React Code base inside and out. Right? They know the actual, all of the nuance there or you could just be effective with it. And I think it's important to say that being a generalist doesn't mean that you are not skilled or less skilled.

Guest 2

It just means that your area of Ortiz is wider rather than narrower. So, you know, some people see a specialist and a generalist as, like, somebody who knows rid. A little bit about a lot versus a lot of bit about a little. And, sure, it can be that way, but, you know, sometimes generals know a lot of bit about a lot too. Next question from Josh rid Collinsworth.

Wes Bos

Hey, guys. Just noticed I can't find the sick pics page on the news site. Any plans to bring that back? I found it super handy for myself, so I didn't have to dig through Hundreds of episodes wondering when did they talk about that thing? Especially nice to have around the Christmas season.

Wes Bos

Yeah, I have an open issue on GitHub for this, so I forgot who it was. Somebody wrote the Sick Picks page from the old website, and they literally just wrote a regex That was resilient enough to figure out what is the data below the sick picks rid h two, and it says sick or picks, and then stop before you hit the next h two. They just parsed them on out. So the show notes haven't changed. So theoretically, we could go back and grab that code to parse the show notes. I have an open issue. If anybody wants to work on it or reimplement that, that would be really cool. But I would, yeah, I would love to get that page back up and running. Yeah. Yeah. Agreed. We gotta get that going.

Guest 2

Next one from CL.

Guest 2

I'm a woman full stack engineer working at a major video game company, and I'm very proud of what I've achieved in my career.

Guest 2

However, I work extra hard because not only it's not easy for us women to succeed in a man dominant field like software development, I've also been struggling with anxiety, depression, and ADHD.

Guest 2

Can you give me can you guys give some advice on How to grow and improve as developers struggling with ADHD? Are there some specific learning techniques you can recommend? Thank you so much. I love the show. I hope you can bring more women on in the future. Yes. We are.

Guest 2

A lot of plans there. You know, one thing here I think that's important is go back and listen to We did an episode with, my wife, doctor Courtney Talinski, on ADHD. She gives a lot of really good advice. That's episode number 532.

Guest 2

She gives a a lot of great advice on managing your ADHD and understanding it.

Guest 2

I think there There's definitely a lot here, especially developer wise, and understanding, like, what works for you and what doesn't work for you. Because, honestly, I get presented Some documentation pages where my eyes just glaze over. But, you know, what I can do is I can select all that text. I can have it read it to me, And it can pipe it into my ear. And for some reason, I just handle that better. I get less distracted. Right? And that distractibility, paying attention, and, like, really understanding what pulls you away, what doesn't pull you away, what pulls you in, What engages you can really be a big factor in in growing with these skills.

Guest 2

I I'm I'm even struggling lately, Wes, With compile times and stuff, I've been doing a lot of compiled languages, working in some game development stuff, been working in some Rust stuff. I'll compile it, And then I'll I'll tab over to something else even though that compile step takes a second.

Guest 2

I'll compile it and then get distracted in that compile time. It's Absurd.

Guest 2

So, you know, I I've been struggling this with my myself. I think one of the biggest things you can possibly do is to schedule, Schedule, schedule, and keep yourself on that schedule. I make a firm to do list. Whenever I'm feeling scattered, I make that to do list. I put it on my schedule. I make the the things that are here's the highest priority. Here's the lowest priority. And I start with that highest priority, and I just keep grinding out of it until I knock it out. Those are some of the the biggest things for me. But also, again, like, understanding how you consume your educational material.

Guest 2

Like I said, I do better at video and audio. I can put on a video, listen to that, and understand more than I can via reading a a blog post. And if I can get that blog post in audio, I can get that even better for me. So, you know, it's it's work. I'll tell you that. It it's it's work. So, check out that episode. There's a lot of great techniques rid And and tips inside of there. Yeah. For me, it's,

Wes Bos

it's about a couple things. First, like, the to do list is massive for me in terms of, like, what do I do next? Rid. But specifically, you're asking about, like, learning techniques here.

Wes Bos

For me, it's 100% about doing something that I am interested it in. If I'm bored or not interested in, I'm not going to learn anything. But if I'm, like, super excited about I built ready. This thing the other day and I wanted to learn how to use the AI GPT Vision and this, like, voice synthesis APIs.

Wes Bos

So I built, like, this thing where Tim Cook announces rid. Me and Ricky from Trailer Park Boys takes a photo of me and roast how I look.

Wes Bos

And like, rid. I was glued for probably, like, 5 hours straight on that, and I learned so much about how that works.

Wes Bos

Why? Because that's super fun, and I just sort of followed my energy with that type of thing. Whereas if I were sitting there following the tutorials on the website.

Wes Bos

I wouldn't be as stoked on that type of thing. So you really got to try stuff and figure out what you enjoy,

Guest 2

and you're gonna eventually find some systems that work for you. Yeah. I do love that, letting your excitement drive you. Like, I I mentioned I've been doing some Fun game development been trying out Godot and learning the scripting language there, which is very Python esque. Right, Wes? You can pick it up pretty easily.

Guest 2

And You know what? I I did the tutorial, and, yes, I noticed that as my attention was starting to drift in that tutorial, I pulled it back to the code itself and said, alright. I now have made enough where I could get this this Sprite on the screen rotating and moving.

Guest 2

That's enough where maybe I should take a break from the tutorial and just See what else I can make it do. I know code. I know, I I now understand how to make thing move when I press Key, what other things can I do? Can I make it go forwards, backwards, rotate? Can I have a driver on the screen? Next thing you know, I got a little Sprite car driving around the screen. Why? Well, I just I I was getting I was getting that that point where I was feeling like I could feel my attention drifting, And it's it's nice to be able to recognize that, but oftentimes,

Wes Bos

you don't even recognize that it's just gone. Right? Next question from Jesse Pence. Any chance you could make an embeddable player? I'm a blog author and would love to be able to put something right in the middle of an article. Bonus points if You can add a query per end that lets me link to a specific time. Yes, this is on our list of things we would love to do because Like if people are guests on the show and they want to embed it into their website, if you have a blog post, you want to be able to embed it, like even further, It would be really cool to be able to like clip something like have like you said, add a query param for linking to a specific time, but also pulling the transcript in and maybe visualizing that at somehow there's so many ideas we have around that and An Embeddable player is is the front I was looking into the like, what's the there's like an open embed spec. Oh, yeah. A lot of places support rid Open embeds and all all you have to do is, like, submit your website to a specific who is it? It was the TL draw. TL draw supports embeds, And they use some service that approves and denies, embeds.

Wes Bos

And then

Guest 2

Things like WordPress, you can just do a short code, and it will embed it right away. So I think that Or Discord or Slack? Yeah. Yeah. Discord, Slack. I think about, like, Yeah. Spotify has that that kind of stuff. Yes. This will be coming. And, you know, since this episode is coming out December 27th, you know, I think there is a good chance that this thing could rid. Be well on its way if not done by then, but, yes, it's definitely in the in the pipeline here. We're working on it. Next rid one here from Nick. This is a supper club suggestion.

Guest 2

The people behind Cards Against Humanity always do interesting Black Friday promos. This year, it was a pseudo social network called Yowza.

Guest 2

In years past, They've auctioned off ridiculous items.

Guest 2

All these have necessitated a website or app. I'd love to hear from their team and working on And working for such a unique company.

Guest 2

Yeah.

Guest 2

I would love to do that as well. How do you feel about that, Wes? Gotta if if, any of those devs are out there listening to this, hit us up. We would love to have you on the show. I I I think these kind of things are really super neat In terms of, like, these are the types of projects that as a developer, I think you should get excited for because they are unique one off opportunities.

Guest 2

You can really flex some of your skills without having to be like, is this thing a long lasting Web service that a 1000000000 people are gonna use, or is this a fun experiment that's going to get attention? In fact, I was just looking at, rid Man, Stripe Press just released a really cool site called the Poor Charles Almanac.

Guest 2

And I'll share this with you, Wes.

Guest 2

And, again, it's the type of site That is like a one off kind of you do it, you flex some skills, and you show off a little bit. And I I I do love that. So,

Wes Bos

CardSkin's humanity folks, yeah, let's, let's get you on the show if we can. Who who knows? I I always find this stuff super interesting as well where It looks like the Yowza social network is just a Mastodon instance that they spun up, which Which is pretty nifty. I also went into the the auction stuff is really interesting to me because even when I was selling t shirts, rid I would I had, like, a limited number of t shirts.

Wes Bos

And if 2 people buy the shirt at the same time, rid. Then you ended up with negative inventory because, like, if 2 people add it to the cart, A lot of times, as soon as it's in a cart, they'll take that inventory off the shelf so that somebody else can't. But A lot of other places, my cart included, was just alright, well throw it in your cart. And then when you check out, Then you pay for it. So what happens if both people pay for it at the same second? You know, There can be issues there. I'm always curious about that with, like, online bidding and auctions and things like that.

Wes Bos

It's a it's a tricky thing. So I'd love To talk to somebody, if anyone knows anyone at Cards Against Humidity, I even went I went deep. I was like, what are they they using, for this thing? And it looks like They built their entire own fulfillment company called Black Box, blackbox. Cool.

Wes Bos

And They they do their own fulfillment for all their stuff, and it's basically built an entire fulfillment company to do the Cards Against Humanity.

Wes Bos

And, I'm sure they have a really nifty web tea behind all of this stuff. Word. Next question from Thomas Eckert. Thank you both rid For putting on such a fantastic show, I am a developer working in the United States. And next year, I will be moving to Ottawa for personal reasons. I have my permanent residency, so the job field there is open for me. While I have a job I can continue doing from Canada, As I continue my career, I will be doing so in the wilderness of the Canadian job market.

Wes Bos

What are some of the differences rid. Being a professional developer in Canada versus the United States, is it easier to become an indie dev in Canada with universal health care and the social Safety Net. What what might I find surprising about being a dev in Canada? What you will find surprising about being a dev in Canada is, It doesn't pay as well as the jobs in the States. We have a real problem.

Wes Bos

It's called Brain Drain.

Wes Bos

And a lot of a lot of our talent, Ben Vinegar, Manager of Syntax, he went down to San Francisco for I don't know how many years. He's back now. He lives in Canada, but he he went down there. A lot of Lot of new grads out of some of our big tech schools go directly down to Silicon Valley or whatnot and work in jobs there, so rid They certainly don't pay as well. However, you're moving to Ottawa, and you know what's in Ottawa? Shopify.

Wes Bos

Rid they are okay. A big problem. I've talked to a lot of people in Ottawa. It's a big problem trying to hire good devs in Ottawa because Shopify rid. Snatches them all up. It might be maybe a little different now that they're a little bit more remote, but that certainly was an issue Or the pandemic. I thought you were gonna say the Ottawa senators.

Wes Bos

Oh, they're there too. Yeah. It's very cold in Ottawa, so Buckle up.

Wes Bos

What else about Canada? Canada is very expensive.

Wes Bos

Housing is silly. Housing is is rid. Is out of control in a lot of places in the world right now, but Canada is It's certainly out of control in Denver. Yeah. There's the thing about Canada is there's not rid Really anywhere you can go right now.

Wes Bos

In the states, it's always interesting seeing how people move to Move to Denver or move to Portland or move to Austin.

Wes Bos

And in Canada, we don't necessarily have And you're good to go.

Wes Bos

It's pretty much you live in BC, you live in Southern Ontario.

Wes Bos

And then, Of course, there's lots of other places, but flights inside of Canada are silly expensive. So you don't see a lot of People move away from where their families are because it's just it's prohibitively expensive to go fly and see your family a couple of times a year, like a ticket For us to visit Saskatchewan, my wife's family still live there would be like $800, $900 for a return ticket, and You got 5 people in your family. That gets a little bit too expensive.

Wes Bos

So telecom, really expensive. I was just praising telecom the other day. My cell phone bill went from $99 a month Canadian to $45 a month, and I went from rid. 50 gigs to 55 gigs. And I was like, this is amazing. And then I got all these people being like, in India, you get 1,000 gigs for $6, and then people are like, in Europe, we get unlimited for €19, and, just Just not the same. I realized Canada is a big a big country, but the it seems like our telecom and groceries are ruled by a couple, evil evil beings.

Wes Bos

Yeah. I don't I have a smaller point here, but what's it like living in in the states As a developer,

Guest 2

you don't say a as much.

Guest 2

Yeah. I don't I don't know. I've always lived in the state. So Yeah. Initially from Michigan, now in Colorado.

Guest 2

I gotta say, Michigan was definitely more Canadian than Colorado is. Colorado is way more like Cowboy country. Yeah. I I don't know. It it's not too hard for us to go back to Detroit area to visit family. Not hard at all. You know, hop on a plane or driving is no fun. So Yeah. Long drives or whatever like that is is probably not super good. But You know what? I I I don't know. I've always worked remote from wherever I am in in the States and haven't had to do much of rid. Anything else in the tech scene, though? Talking about being indie dev, that's the probably the biggest benefit here is

Wes Bos

so our doctors are covered by the government or or by our taxes.

Wes Bos

So it's hard to find a doctor, very hard to find a family doctor here. But If you can find 1 or you can go to a walk in clinic, they will pay for that. Medications are not covered.

Wes Bos

I always think back to the Simpsons episode rid. Where Homer went to Canada, and there's just pills dropping from the sky. And I always think, like, that's not true. You still have to pay for your medications.

Wes Bos

Rid. If you are under 25, the government will cover it if you don't have insurance.

Wes Bos

But over, you got to pay for it yourself. But rid. That said, I'm self employed. And a large reason why I am self employed and a large reason why I've been able to do what I can do is because, Health insurance, including dental, medications, all that stuff, so much cheaper. I've heard like stories In the states where people pay 1,000 of dollars a month just for their own insurance, where in Canada, it's 100 of dollars a month. Yeah. And in that regard, I've always,

Guest 2

You know, I've always leaned on my wife to have her insurance when I was working for myself simply because I did not want to deal with that. I just didn't wanna deal with it even as a, even as a s corporation owner, rid My company wasn't big enough to really get any good health care options, and I was doing it through Gusto even.

Guest 2

So, yeah, always leaned on my partner for that. It stinks that your health care is tied to your job. That Yeah. Doesn't make a ton of sense to me.

Guest 2

Next question here from Trevor Goodchild.

Guest 2

Trevor is the goodchild.

Guest 2

Is HTML over the wire awesome or Super awesome.

Guest 2

Wes, do you wanna talk a little bit about HTML over the wire?

Wes Bos

So this is In response to a lot of the JavaScript frameworks going server rendered.

Wes Bos

And what is now happening is as somebody who is rid.

Wes Bos

A Avid scraper and dev tools inspector. I've been noticing this quite a lot lately is a lot of websites are going away from the whole JSON API and simply just returning JavaScript.

Wes Bos

It's funny because that was the way a long time ago, and a lot of these websites still return jQuery.

Wes Bos

But Now we're starting to see, oh, you want to refresh that component? Let's just render it on the server and send the results in HTML over the wire. So Is it awesome? Yeah, because you don't have to do the whole like fetch requests and data in the client. That can be a benefit.

Wes Bos

It can be downside in some cases, but can be a major benefit.

Wes Bos

As a scraper, I'm a bit sad because it means that rid. If you wanna pull data from a specific

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