Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
What CSS is Jason Lengstorf bad at? image

What CSS is Jason Lengstorf bad at?

Bad at CSS
Avatar
1.5k Plays1 year ago

We promise that after this episode you'll never forget the three parameters of the clamp() function ever again.

Transcript

CSS Clamp Function and Accessibility Issues

00:00:00
Speaker
See, this is why I joined this podcast is because I knew that you were lying about being bad at CSS. These are these are crutches. These aren't like, oh, hey, because I know how this works or you compliment me. First off, let's start with the basics. Only use clamp for font size. All right. The font because it goes.
00:00:17
Speaker
That's what I wanted to do. There's an accessibility danger with starting there if your man doesn't have one. Don't worry. That's the whole crux. Don't worry, Adam. I got it covered, all right? All right, Dad, just calm down. Clem's got three values. You got the min, you got the maximum, and then the preferred, the item, and the value. You know what? That's kind of how it works, to be honest with you.
00:00:46
Speaker
The middle one is the one that does that, isn't it? You stinker. Jason, we are bad with

Guest Introduction: Jason Langsdorf

00:00:57
Speaker
friends. Today, we're bad with Jason Langsdorf, the creator of the Learn with Jason show. Streamer, dreamer, creator, singer, egghead, front end master, booper, and friend. Welcome to the show. What you bad at? That was great. I'm bad at whatever that was. I don't think I could do that one.
00:01:17
Speaker
What are you supposed to do? I don't know. Oh, I love that. That was, that was outstanding. I don't, I, I think we're done, right? We just, that's it. We did pack it up. That's excellent. Best part about a standing desk, you can disappear. I need to get back to a standing desk. I've been working seated in this temporary studio and.

Standing vs. Sitting Desks Debate

00:01:44
Speaker
I don't like it. It's really hard to be animated when you're sitting down. I, I actually, I have like a little standing like faux desk and I have not been using it. And every time I'm like, you need to use standing desk. And then I use it and I'm like, I hate this. And then I sit down and then I'm like, I hate this too. And then I'm like, uh, maybe, maybe I just don't like to work. Is that the problem? Yeah. Yeah. Yeah. I get that.
00:02:12
Speaker
I should get butt implants, so sitting on my butt is more comfy. Do they make those comfy inserts? Are you reaching the advanced stage where your butt disappears and you've just got bones? No, just me and all my friends got bulging discs. It's like, hey man, how's your disc still bulging? How's your disc? It's bulging.

Posture and Screen Time Humour

00:02:37
Speaker
Let's talk about CSS
00:02:44
Speaker
that it's sitting, that it's sitting that posture, that a posture is actually, is that super real? Yeah. All in full shrimp pose. I'm actually realizing I'm kind of in shrimp pose right now. Yeah. Sometimes I look at old people that I'm like, they didn't stare at their phones for their past 30 years. They still look like they have been though. So maybe, maybe it's just how I was born, you know? Oh yeah. Newspaper for sure. Yeah.
00:03:11
Speaker
It's a printed word. That's the, it's the end of all of us, right? That's what they were saying, right? Yeah. Well, uh, did you come prepared with things you're bad at?

Learning Processes and Efficiency

00:03:23
Speaker
I'm so bad at so many things. Let's see. One that immediately came to mind though was I'm bad at knowing what is available. Like one of the things that I'm really good at is learning one way to solve a problem and then just never re-examining that ever again. Which I think is like one of those double-edged swords, right? Where you, on one hand, you,
00:03:50
Speaker
aren't spending a lot of time like revisiting things, so you just get work done. But on the other hand, you spend a lot of time being really inefficient because the choice you made was like the right choice 15 years ago and is now like there are a million ways to do better things.

Understanding Container Queries

00:04:05
Speaker
Like I'll give you an example. I still don't know what a container query is.
00:04:09
Speaker
Nobody does. It's fine. It's just, I, I hit up, uh, I hit up me, uh, um, to, to come on and teach me how they work. She's going to be on the show here in a couple of weeks. You know, I thought I'd get intercourse just when you look at the milk and you're like, when do you expire? That's exactly. That's what I thought.

Self-Promotion Challenges

00:04:29
Speaker
I would say that Jason, you're also bad at bragging about yourself because you are a person who has a show where you learn things and then you're like, I'm really bad at trying new things.

Mentorship vs. Tools in Learning

00:04:42
Speaker
I just tend to not do that too often. I'm very set in my ways with my
00:04:48
Speaker
a variety show of new topics and new technologies that I have been on. And I watched you do things live that I was like, I don't know that I watched you use the form API like that. And I'm like, that's, you know, you know, I guess it's somewhat old, but I was like, no, everyone does that. Like, that's, that's my, that is my hammer that makes every problem into a nail. Good hammer.
00:05:13
Speaker
That is web development. It's forms and then more forms. That's a good hammer. If you're going to hold the hammer, the funny guy. This is a great example of how I tend to work because I had been doing forms
00:05:28
Speaker
in a very specific way that was really convoluted for a long time where I was parsing the event and grabbing things out and doing all this looping and other stuff to get these values. I was on stream and I was doing that and Suze Hinton was watching and she said, infinite shout out to Suze because I think she's been responsible for several life-changing moments in my career, including this one, where she said, did you know the Form Data API would remove all of this code?
00:05:58
Speaker
And I went and I looked at it and I tried it and I've never been the same. Like I think this is one of the things that is really indicative of like how I work is I figure out a way to solve something. And then I just kind of don't really feel the need to like re-examine those

Motivation Behind 'Learn with Jason'

00:06:14
Speaker
things. But then when somebody shows me a tip and they're like, Hey, this thing works better. And honestly, that's a lot of the motivation behind why Learn with Jason is a thing is because like,
00:06:23
Speaker
it's how I get those tips, which is, okay, you ready for a tangent? Oh, yes. It's basically a tangent podcast, just like you didn't know.

Remote Work vs. Apprenticeship Learning

00:06:36
Speaker
Okay, so I've been thinking a lot about like learning and why people get so up in arms about like return to office and why people have all these big opinions about like, oh, well, you can't be productive remotely, blah, blah, blah.
00:06:50
Speaker
I'm starting to realize that i agree with them but not for the reason they think because i think that one of the things that we lost with remote work is this idea of like the apprentice model where you would you would go and you would watch somebody do their job who has a lot of experience and you would sort of
00:07:09
Speaker
See it you'd be able to ask clarifying questions. Why'd you make that choice? Why'd you do that thing? And you would kind of absorb the not the like mechanical understanding of like what you can pick up by reading docs, but the the sort of nuanced like efficiency tips and like ergonomic tips and just general understanding of like how this like the magic right the the style that makes somebody from a you know a reference
00:07:39
Speaker
Like, you know, I'm regurgitating what I've learned in the docs to like, I'm creating something and there's, you know, there's feel to it. Um, and when you watch somebody, it's the difference between watching somebody like kind of sound out something on the piano versus somebody who can sit down and just play. You can feel that expertise coming out of them when they sit down and just play. And I think you learn that by, by being paired up with somebody who can just play and you watch how that

Importance of Mentorship in Tech

00:08:06
Speaker
happened. Right. Um,
00:08:08
Speaker
And that was a huge motivation to learn with Jason is trying to recreate remotely this apprenticeship model where I can watch somebody who's excellent at something. And a lot of times the thing they're teaching me might be something I already know, but I do learn a ton by watching them do the thing because I see them, you know, Oh, what was that little
00:08:26
Speaker
What was that little move you just did? Wait, why'd you do it like that? And all of a sudden, you're learning all

Nostalgia for Office Culture

00:08:31
Speaker
these little things. So I don't know. I miss that. I think there are two things I miss about office culture, that and team lunches. Yeah. Yeah. Team lunch. Yeah. Food is always the first thing you miss.
00:08:47
Speaker
That's like a tangent within a tangent, so I'll hold. Actually, I have a bit of a story about this. I once worked with this guy. His name is Evan Martin, and he was on the TypeScript team at Google, trying to make TypeScript a blessed language at Google, which was a success. And I was on one of the very early projects on that, and so he was giving me
00:09:12
Speaker
white glove service to make sure that all my development was great and everything. They wanted this project to succeed. And I could tell by working with him that he was very, very good. And there was all these little things I just picked up on. I would, I'm like, I'm not, we're going to say, I didn't know what that was. I'm just going to be like, Oh, okay. Okay.
00:09:29
Speaker
And then one day we went to go to TJF, which is on Thursdays at Google. And I saw a friend, and I was going to introduce Evan to my friend. It was Alex Russell. And I went, hey. I was like, Alex, this is. And he goes, oh, Evan, how's it going, man? I go, oh, you two know each other. He goes, yeah, yeah. Evan made Chrome for Linux. And I was like, I knew it.
00:09:52
Speaker
I knew it. There was something, something about it. A guy's super humble. He goes, no, no, it just wasn't me. And he was like, you, there were two people on that team. And he was, and I just knew it. Like you could tell I was picking up from lives from this guy and he was amazing. And I learned so much just by watching him have keystrokes. I was like, Oh, what's that? What's that? Okay. Write down a ton of notes.
00:10:16
Speaker
I got to add to this too. I love it so much what you're saying. It was actually something I forgot to rant about when we were ranting about TypeScript in the last episode. But when I led a lot of development teams, what I saw was as we added automated tools that judged our code quality, that formatted our code, that linted our code, all of these layers that we were adding, they got sold to me by another developer. Well, I am a community for lots of reasons. But one of the main reasons this developer was like, he's like, we can't scale ourselves.
00:10:44
Speaker
So we have to build in our intelligence into the tools so that these folks can learn beyond us without us sitting next to him. And I was like, oh, that totally makes sense. And then I observed what we'd done. And what we'd done was removed the human connection between all of us in the same spot at work.
00:11:02
Speaker
So, instead of someone asking for a question, they just sit there in silence and bang against all of the different rules that we'd set up. And if they just asked one of us over, there were two leads, I was one of them, asked us to come over, I could give you a reason that that linter rule was there. I could give you an explanation and we could break it down. And instead of you just bonking your head and finding the green checkmark finally shows up,
00:11:26
Speaker
And moving on, there was a human interaction that was needed. And so what I observed is all of these tools try to strip the human connection away, and you can't. It is, if you take that away, you lose a whole lot of stuff. There's so many moments where like an in-person thing can save tons of time. And I remember personally learning that when I sat down with an expert JavaScript developer who was like, oh, you just wrote those six lines to do that? Watch this one line.
00:11:52
Speaker
I'd be like, oh my God, sit with me more. Every minute I sit with you is a year in school. Can we please do more of this? I loved that, especially the senior-junior relationship. You can't just punt juniors through your gauntlet of tools and expect them to somehow magically get a lot better. You have to spend time with people. All these devs are like, I just don't want to talk to people. I'm like, so sorry.
00:12:16
Speaker
I don't, I don't care how many types you put in the system. You're still going to have to have a conversation about the contract between two functions. You're still going to have to. So like, anyway, that you got me. TypeScript, TypeScript

Critiques of TypeScript

00:12:27
Speaker
is always catching strays on this podcast from Adam. Just always like, always. I just like to show the other side of it. So many people are like, look at this side of it. Isn't it delightful? And I'm like, yeah.
00:12:38
Speaker
Why don't we talk about the other side a little bit? It's always a double-edged sword. There's no single-sided sword in WebDev, all right? They all swing back the other way and whack somebody somehow, and you've got to be watching. I think what you're talking about is interesting because I find like ESLint and TypeScript and some of these automated checkers, the double-edged sword of it is that it
00:13:02
Speaker
I've watched a lot of teams where like you need uniformity, right? And so having something that says like, hey, you can't ship an image without an alt attribute. Like that's a good use of the lint role or, you know, TypeScript gives you autocomplete so that the team member doesn't have to go digging into the source code. They can just hit the dot.
00:13:24
Speaker
and then they see everything that's available in that object. Those are great uses of tooling, because you don't really want somebody to have to tap a shoulder and be like, hey, can you remind me what's in this object? That part doesn't matter. What I start to get, where I feel like we fall apart, is that as engineers, we're sometimes obsessed with completion, and so we think that if the tool can help with some of the job,
00:13:51
Speaker
it can help with all of the job, right? And so we start reaching for like, well, if TypeScript can help with this kind of code understanding, maybe we can apply it to the rest of the code and then we'll have a perfect understanding of everything. And I saw that, you know, the same thing with ESLint, like the now infamous Airbnb ESLint config that was like draconian in what you couldn't, couldn't do.
00:14:15
Speaker
And those are, like you said,

Over-Reliance on Tools and Learning

00:14:17
Speaker
Adam, I think the big challenge that I see is that when you look at a tool as a replacement for mentorship or coaching or co-creation, collaboration, you really rob the team of something.
00:14:37
Speaker
If you use it as like, here's the base, these are the things that just need to be true, right? Like you can't, you need your alt tags. You need to make sure that you're providing these things so that the code isn't unstable. But when it gets to something like the, maybe the robots don't need to judge your cyclomatic complexity.
00:14:55
Speaker
Right. Like I understand why a rule like that would exist. And if it's me, I want to remind myself not to do cyclomatic complexity because I know what that is and why it's important. But for a junior on the team, they're like, well, I just I was doing a couple of loops and all of a sudden I've got this squiggly line and I don't know what it means. And I looked it up and it used a bunch of computer science words that I'd never heard before. And then I looked those up and now I'm five hours into this rabbit hole.
00:15:20
Speaker
trying to understand what the heck this ESLint error means. And I'm like, no, no, no, no. That's where I should catch that in code review, right? Like I should be talking to you about this code and like kind of coaching you on how you can unroll these loops to make them a little less complicated. And like, it's just stuff like that, that we need that human connection. But I do love that the tooling can cut some of the like baseline stuff. Like the QA checklist should be done by a robot. The quality checklist should be done by your team.
00:15:48
Speaker
100%, trade-offs everywhere. And yeah, again, there's just no silver bullet. So you can't go all in on tooling and you can't go all in on a human thing. These things don't scale. You gotta weave and move and look to see what your team needs and be there for them. And yeah, dude, awesome points though. Love it so much.
00:16:06
Speaker
One of my favorite quotes is, Sunil Pai once said, I'm being told that silver bullets only work on werewolf shape problems. And I love that. Although we have to translate Z. Oh, I was like, we got a CSS reference here too, this silver bullet. Y'all remember the silver bullet in CSS?
00:16:24
Speaker
No, no. Okay. Before we had will change, uh, the way to signal to the browser that you were going to change something, uh, so that it would prepare it in the GPU was to put translate. Well, there was two, the original one was translate 3d zero, zero, zero, I think, or maybe you have something like that. And I always shortened it to translate Z zero. I was like, you don't need to specify X and Y to get the silver bullet to apply.

Evolution of CSS Performance Tricks

00:16:48
Speaker
You just need to give it some Z anyway. So like you give it a little bit of a 3d transform, even if it's none and the browser goes,
00:16:54
Speaker
This should be sent to the GPU. And then you're like, yes, it should be prepared yourself for animation. And so that was the silver bullet. It was supposed to make all of your animations more performant. The silver bullet animation thing was to prepare with the translate C or translate, you know. That's a world change, doesn't it?
00:17:11
Speaker
I don't know what will change is. Oh, well, it will change is, is, is still Chrome only. No, I don't know. Is it? Okay. I don't know. For the longest time, we'll change it. Chrome only will change is like a property that I know of because I get to hang out with people like Adam. Otherwise in my life, I would, I can't sit here and be like, Oh, my CSS master. No, like will change is one of those things you, you hear people saying like, Oh, okay.
00:17:34
Speaker
Oh, okay. That's what that is. And basically, Will Chain says, hey, when this animation happens, look for these properties. And like he's saying, and it prepares it, sends it to the GPA, tries to be more performant on what will change.
00:17:49
Speaker
Yeah, that's one of the things you can do. Yeah, and it is available cross-browser. I just double-checked. It's a hint. It's one of the few hints that you get in CSS. It doesn't really do anything directly. You're sort of like, hey, browser, okay, so the box shadow hasn't changed yet.
00:18:05
Speaker
But I'm going to change it. So why don't you do whatever you need to do to prepare for that to be as performant as it can be when interaction does occur. So like a really good example is like let's say you got a grid of boxes and you're going to rearrange them.
00:18:20
Speaker
with a transform style or something like that. So you go, okay, all these boxes will change transform. And the browser goes, all right. So instead of when you click the filter or the sort and it rearranges everything. And so it has to just in time put these on a layer and then move them around as a layer and then restore them back to not being in a layer.
00:18:38
Speaker
it will maintain them in a layer the whole time, which means you get immediate feedback. The browser doesn't need to take the step to make it a GPU layer. It's already done that work, and it won't undo that work when it's done. So it has one potential edge case, which is if you put it on everything, you're like, I will change all. It goes, okay, let me prepare. And it goes through and it prepares until it fills its brain up, and it explodes, and it has a memory overload, and then it's really shitty instead of awesome. So that will change.
00:19:11
Speaker
Yeah, um, I will change as close as one of those. You can see it in the, what is it? The compositor. Is that what I'm talking about? Where are you? There's that, that layer in the dev tools where you can see it doing, or that tool where you can see whether it's got the layer and all that. And then I remember, uh, Paul Lewis, uh, did a really great video on this a very long time ago with like slacks, um,
00:19:32
Speaker
command palette thing where you like slash and search for people and stuff like that. And he found that there was something like super non-performant about it. And I think, I don't know if you use will change, but he uses very similar philosophy of like reducing the amount of layers. And it went from like incredibly slow to like hyper fast. And it was just.
00:19:49
Speaker
understanding how the browser composites and does all that fancy stuff that you really don't want to learn, those are the times where you want to know it. I'll do all the stuff for the notes on that. I remember going through that and being fascinated by it.

Humorous CSS Skill Downplay

00:20:06
Speaker
I feel like for a podcast called Bad at CSS, that was a lot of CSS knowledge. I think you should change the name to Less Bad at CSS. That's the goal. Or I guess to keep going with CSS developers, Sass Bad at CSS.
00:20:18
Speaker
I mean, there are so many things I'm bad at with CSS. It's like as much, I saw all the things that I'm bad at though. Fortunately, I, I, I like, um, but, but I like them. They don't like me. So like, I love layout. I love, I love, especially when you see a sweet layout, you're like, Oh, that's so.
00:20:33
Speaker
cool. And then you try to make it and you're like, Oh, that's not bad. That's that was not the thing I saw. Or like with animation, I've actually have completely given up. Like I look at a really cool animation. I'm like, that would be cool to have those skills. But can moving on, like they still try animation. I'm like, those people are great. Good for them. I'll never be there. Before we move on, I do just want to call out that my sass joke was funnier than both of you acted.
00:21:00
Speaker
I didn't. It was very funny. I wanted to follow up with less bad CSS. Oh man. Less incest. What? Anyway, whatever. I heard you and just, I had to pause it. This is the second episode in a row where I've missed a joke. Like literally I'm just wrong with Adam and by the way, it's tradition that Adam leaves at least once. My plant lights just turned on like my little automated grow lights. Like I got my avocado tree here.
00:21:25
Speaker
It was just, it just kind of blinded me. So I was like, Oh, I got to turn off the lights. Uh, I'll turn them back on in a second, but I have a lot of plants and I miss at least one joke per and then Adam was like, come on. And then I'll go through the editing and I'll be like, Oh man, he teed it up too. And I was just like, Oh yeah. Okay. Moving on. Bad at CSS and bad at jokes.
00:21:49
Speaker
But so what else do you have any other, any things that you're bad at? So you, you're, you're bad at learning new things. But what are you, what else are you bad at? I, one that I have to look up just about every time or honestly not even look up, just like do the random number generator until it works is the clamp. Oh yes. I can never make clamp work. And I think part of it is that I.
00:22:15
Speaker
I academically understand, but I don't intuitively understand what it does. So like, if I sit down and think reasonably about it, I understand how the client function works.
00:22:26
Speaker
but I don't feel it yet. I feel like with some of the stuff that I've been using for a long time, like if I'm putting together a box shadow or something, I just kind of intuitively know now, because I've done so many of them, about what the spread is that I'm looking for, about what the size of the shadow should be, and then I get kind of close and tweak a little bit. And with Clamp, every single time, I'm like,
00:22:48
Speaker
I don't know, put a few numbers in there, it's gonna look wrong, and then I'll just change one of them, and then nothing will happen, and then I'll change the other one, and then something happens, and all right, now we're in business.
00:22:58
Speaker
I actually have a solution for that. I learned this from Josh Komeo. This is why I joined this podcast is because I knew that you were lying about being bad at CSS. These are crutches. These are not like, oh, hey, because I know how this works. So hear me out before you compliment me.
00:23:18
Speaker
So first off, let's start with the basics. Only use clamp for font size. All right. Uh, until you get, but not like it's the only use for it, but like, just in terms of like kind of getting it, start with font size and then you're like, okay, cool. I can do this. The font because it goes, eh, that's what I wanted to do.
00:23:34
Speaker
And then there's an accessibility danger with starting there if your variance doesn't have one. Don't worry. Don't worry. That's the whole crux. Don't worry, Adam. I got it covered. All right. All right, Dad, just calm down. So you start and get the, you know, Clem's got three values. You got the min, you got the maximum, and then the preferred, the ice and then the Q value.
00:24:04
Speaker
And you know what? That's kind of how it works, to be honest with you. The middle one is the one that does that, isn't it? You stinker. What a great way to describe the clamp function. You've got three values. You've got the min, you've got the max, and you've got the preferred. And that's how it feels for you.
00:24:25
Speaker
And that's where you're going to be spending all of your time. There's the poll clip for, for this episode. Seriously gold. So the middle one you just put in, uh, you start with a view port value for view with. So for view, I just start with four. Don't ask why just start with four, four, eight. I find those are good. Uh, so with four view with, and then you.
00:24:51
Speaker
add a REM, just add one REM and then, and that's, and that was, that makes Adam happy and that makes the text accessible. So if they, if you don't add the REM, then the text is no longer based on the, uh, like if their users scale on their font size and the preferences, it won't do that. So you have to put the one run in there, but as long as you do that, one REM is your, as your preferred.
00:25:14
Speaker
Nope. So for VW plus one REM, so that basically tells the browser like, Hey, we want to like resize it, but there can be REMs in there too. So just like add the up and down stuff to it, you know, this is where I'm going to clamp. And then you got to put a calc inside or does, does it do calc?
00:25:32
Speaker
It auto calcs. And I know that because I used to write calc in there and Adam was like, what are you doing? I'm actually typing that to double check that that's still a fact. Cause I'm not good at CSS. And I'm like, I think you can make the word clamp on the inside. I'm just going to double check it real quick. You don't need calc on the inside yet. Um, I hope not. Or I have a lot of CSS I have to rewrite. I just tested, just tested. Okay. Okay.
00:25:58
Speaker
And then from there you get a nice font

CSS Clamp Function Explained with Humor

00:26:00
Speaker
scaling. And then all you have to do is basically, uh, depending on like what your minimum and your maximum are, it's your, that middle value that whatever the four VW, you're going to need to like increase it or decrease it. Cause it changes the scale. I can never really remember where it is. Like Josh Comrio has a fantastic article on this. Like he, he knows, I don't want, I don't, I don't know if we can have him on the podcast cause he's very good. Shadow knows.
00:26:25
Speaker
Uh, but yeah, that's what I recommend. That's how you fix clamp is you just always remember that you just do that thing and then you just bump up the values until it looks right. And then you're like, okay, I don't know exactly what's happening, but it looks right. And that's how you self clamp. There you go. Nailed it. So memorable.
00:26:45
Speaker
Yeah, that's right. That's like the worst explanation of clamp known demand. I'm like, okay, so you got three values. One is the middle finger. And then, and then when you move numbers, stuff changes and then you are happy with it. That's what I'll tell you what, even, even if
00:27:03
Speaker
I don't retain any of that. I will retain that I don't need to use calculus inside of a clamp function now. And that was a tip worth showing up for. Yeah. And you will always remember that there are three values to clamp. The three values in the middle one giving you the finger is maybe the funniest thing. That's good. I'll never forget that.
00:27:27
Speaker
Well, okay. So do we got, we got any others, any other ones where I can, uh, or actually Adams, you don't want Adam to explain it to you because he does such a good job of explaining it to you that you're like, Oh, that's that's, uh, like I asked Adam how view transitions API works in the first episode and he broke down how flip the flip animation technique works. And I was like, Oh man, I would have been like, so you got this thing that makes animations easy now. And that's few transitions. So.
00:27:56
Speaker
But yeah, what else? What else are you bad at? At CSS? Let's see. Flip animations that hold on. No, it's okay. Last invert. Wow. Nice. Yeah. That is the hard one. Frog. No, first, first, last invert progress. Play.
00:28:23
Speaker
I was like, I'm not helping, but I'm going to try. No, you're totally helping. I read your lips or whatever you're doing with your mouth. I actually forgot invert, so that's really good. That's the hard one. That's the one I always forget. The reason I knew that is because flip is like a descriptive acronym because you're, you're taking the animation and you're flipping it backwards so that you can calculate like from the end point to the beginning point.
00:28:48
Speaker
That was what was, that was what stuck in my brain about it when somebody explained it years ago, but I'm really bad at acronyms. Um, and so a lot of times a lot of acronyms, I just make them up as I go. Like, did you, did y'all see the, there was a big moment on Twitter where everybody was discussing what LGTM means in pull requests? And like without, I don't think most people at first were being funny. They had different definitions.
00:29:19
Speaker
Like there were a few that I think people earnestly believe LGTM means. There's looks good to me. There's let's get this merged. And then there was another one that sounded super plausible. And I can't remember what the, but they were all like, I'm pretty sure this is just what people believe because we've used this acronym so long that nobody actually knows what it means. They just kind of like, it's a shorthand for like, you put that in and it is what it is. But then people started getting really silly and I enjoyed that as well.
00:29:50
Speaker
Sounds like a good thread. Yeah. Let's link that one in the show notes. I'm going to go peruse it for a giggle. Well, um, I love, I love being bad at acronyms too. I used to work for government contracting and that's only acronyms. So, and I'd be bored in meetings. I would, I just love that groan you had there. Oh no. Um, I would, I would just think about, they're like, okay, so the DOD, I'm like department of dogs, got it.
00:30:14
Speaker
And they're like, are going to talk to the DOJ. And I'm like, the camera dog is talking to the Department of Journalism. And they're like, and they're going to come formalize the contract. My dogs are now journal. And again, it's the only way I could like make it, you know, make it by with all that, the acronyms. It's just, it's too much.
00:30:32
Speaker
I like to, uh, in, in talks these days, I try to like come up with a silly, like a bad acronym. Um, and then I just like channel my inner eighties management consultant and like pretend like I'm super earnest about the, the acronym. Like I'm going to use it all the time, but really I just wanted to say a word and it was funny to me. Yeah. Sure. It's the one from Seattle JS. Oh yeah. So I did a, I did a talk at Seattle JS, uh, called a plea for boring tech. And you know, the premise of it is like,
00:31:02
Speaker
maybe don't put that bleeding edge alpha release into production, like your life's going to be hard.
00:31:09
Speaker
But the acronyms that I used is I just wanted to like have an acronym that was chaos and an acronym that was bored, right? And so I just found words that like mostly supported my point so that I could do the acronyms, right? And it's just really fun to try to, you know, I don't know. Talks have a tendency to get very
00:31:33
Speaker
Stiff, you know, and I think that's one of the things that I like my favorite presenters Find ways to sort of challenge the like straight-up informational presentation And so I do it by just steering into whatever makes me giggle Which I don't know if anybody else likes it, but I like it and then you know Adam is like super high-energy and like Eve Porcello writes straight-up comedy acts I
00:31:57
Speaker
I watched Mark Texan do, or Mark Thompson, I guess, to Mark Texan on Twitter. He did a presentation at this dev rel summit where he just had a, like a sheet of paper, like one of those big easel boards. And he was trying to explain, I don't even remember what the concept was, but it was, it was a straight up like,
00:32:18
Speaker
Do you remember Dimitri Martin? He would do the easel, like drawing easel comedy. Drawing with two hands too. You're like, what? Mark, Mark, he did like improv easel comedy and it was so good. Like I just, when you find a presenter who's got that, that vibe, like, or like Anjana Vakil, if you've ever seen her, uh, present is one of the most creative presenters I've ever seen. She did a musical, like Disney songs.
00:32:44
Speaker
and turned them into educational songs about how functional programming works. Yeah, it's a lot to do with recursion. Yeah, it's called recursion the musical. It is incredible. And then she did another one where she taught the lambda calculus in a way, like, okay.
00:33:00
Speaker
I am the first person who will completely glaze over when you start talking about like low level math. Like I know I should care. I know that it would make my life easier. I cannot. I cannot bring myself to care. Just brain shuts off, starts playing circus music like I'm off somewhere else. And somehow Anjana tricked me into learning lambda calculus from scratch. And she's just such a good, like such an engaging presenter at doing things in a way that's off the wall. Right.
00:33:29
Speaker
Anyways, I think we need more of that, more weirdos in tech. Okay, AI is very good at being weird with acronyms. Have you seen texteffects.withgoogle.com yet?
00:33:41
Speaker
No, no, it's a first off the design. I just love it. It's text effects, like letter FX dot with google.com. And there's all these different writing tools. And if you're like a poet or a rapper or a writer, there's like it, it's my first AI tool. I'm like, this is genuinely a human superpower. They packed up for

Creating Fun Acronyms with AI

00:34:00
Speaker
me in a nice little thing. So they have an acronym, a feature in there and I've typed your name in Jason. And here's some of the acronyms that it's come up with. Just another soul obsessed with normality.
00:34:09
Speaker
Just another sexy oriental ninja. Oh my god. Just another starving optimistic nerd. This is rude. That is actually, that one's accurate. It's pretty good. And then I did a style here. So then it said, smartness, talent, youthfulness, leadership, energy, sophisticated, timeless, yet luxurious, evolving. Simply taking your life everywhere.
00:34:38
Speaker
I'm telling you, this tool is really fun and gold. Enjoy. This is horrible podcast material, but it blew my mind the other day. Did you know that if you look at the months of the year, starting with July, it spells Jason.
00:35:00
Speaker
I feel like it's the thing only Jason's would know, but I saw it. It is definitely like a fact that Jason knows. Like at some point you realize that and you go, Oh my God, am I the king of the universe? Well, I saw that in someone like did like a fancy like calendar UI and it spelled out and I was like, why is Jason on there? And I was like, chill August, September, October, November. I was like, Oh my gosh. I was like, I am 35 and I've never seen this before in my life.
00:35:31
Speaker
Jason, have you heard of JSS? Because it might as well just be Jason Style Sheets. Ooh. Yeah, new framework. That'd be pretty sweet. And just to learn with Jason and style with Jason. JSS. Absolutely.
00:35:48
Speaker
There's actually a running joke in my chat that if I start writing CSS, that's what the rest of the stream is going to be because I love CSS. Any time that I get an opportunity to start styling something, I have to set a timer.
00:36:03
Speaker
because otherwise I'll just keep tweaking and I'm like, oh, but what if it looked like this? Oh yeah, I'm going to do this. Oh, what about this? And then I won't actually build the thing that I set out to build because I've just messed with the UI for the whole show. I just realized that messing with your UI in CSS is like messing with the types in your TypeScript.
00:36:25
Speaker
There's like, it's, it's just, it's just play, you know, it doesn't really provide business value. What is it? ABV, uh, let's say ABV is always, isn't ABV adding, adding business value is in your drink. Yeah. It's AV, ABV, alcohol by volume, I think is what that one's for.
00:36:48
Speaker
Oh man. Adding business value and alcohol by volume. Oh, dang. Never, never today. I learned. I guess in either sense, most people are looking for a higher ABV. Higher. Yes. There you go. More, more ABVs for us, please. And I guess not me. I've, I've like switched to, I barely drink anymore.
00:37:11
Speaker
Like I drink, when I drink, I get like the rattler because it's like half a beer and how steel rattlers. Oh yeah. It's great. You can drink them all day. You don't ever feel sick. Well, I feel sick because I can't have that much citrus because I guess that's the thing that happens is you get old. That's fun for me. It's great. Every year now I discover a new thing that hurts.
00:37:35
Speaker
Like a bulging disc? How's your disc, Jason? My discs are fine, thankfully. But no, my new problem is that now, if I don't stay very active, my knees just hurt.
00:37:49
Speaker
Like, I don't do anything to them. They just hurt. So I have to stay in the gym to do specific exercises so that my knees don't continue to hurt, which is just great. I found out that my dad was like, oh, by the way, arthritis is a thing in our family. So at some point, all your joints are going to break down. I was like, oh, man.
00:38:12
Speaker
Dang it. I love it. You keep that to yourself and let me figure it out on my own later. Thank you very much. That's funny.
00:38:25
Speaker
Uh, I guess, sorry, we were talking about adding business value. And then, uh, I, like I said, we are the tangent podcast. Like we sometimes talk about being bad at CSS. Um, I, uh, if you, do you have any other, any other things that you, this confound confuddles you? Is that a word with CSS? I am confuddled by the word confuddled.
00:38:49
Speaker
You should make that word, but wouldn't it be conf or cause confuddled means, you know, you know, fuddled the prefix con is to know, right? I guess confused would mean, you know, you're fused. Nevermind. Now I'm confused. Con is also the opposite, right? Like con, like, or I guess contra is opposite. And concave means against in Spanish.
00:39:14
Speaker
I think it means against in Latin too, doesn't it? Probably. Like it's not the root. Yeah. Spanish is was originally vulgar. Latin was the, uh, the one that was converting over is what it was called vulgar Latin. Probably some store spot for Spanish speakers at all.
00:39:32
Speaker
And then it turned into Spanish Portuguese. That's the, uh, I've been learning Spanish for the last two years and, uh, it's been, uh, you know, so you learn tons of random facts that do not help you learn Spanish. So you don't want to practice your Spanish homework. You're like, let's just learn the history of Spanish. So I don't have to speak it today. This sounds great because it's hard.
00:39:52
Speaker
I've never learned another language except by being in the place where I lose my opportunity to not speak the language. So like I don't speak Spanish. I can't, I'm not fluent in Spanish, but I can navigate. I call it taxicab Spanish. Like I can talk about the present and locations like physical objects. I can't do abstract or anything, but I learned all that by being
00:40:13
Speaker
in Spain and in Mexico because the thing that drives me most up a wall, and this is kind of a universal thing. Watch, I can dovetail this back into CSS. Get ready. I'm ready. It drives me up a wall when somebody goes to another country and they just assume that everybody will accommodate them. Nothing makes me weep more for American culture than when an American goes into Spain and is like,
00:40:43
Speaker
doing what I think they think of as Spanish, which is they're like, I would like a steak, a steak. And it's like, what do you expect to happen here, right? It translates if you get louder. That's what happens.
00:40:59
Speaker
volume-based understanding, yeah. But so I've always tried to like, if I'm going to stay somewhere longer than, honestly, I'm going to stay there longer than 24 hours, I at least try to learn like, hello, yes, thank you, right? And the longer I'm staying, the more I try to learn. And so Spain, I've probably spent a collective almost a year there through various trips and long stays and stuff. So I've just tried to learn enough that I can have like conversations where I at least get a few sentences in before I break down. And I'm like, I'm so sorry, I don't speak Spanish very well.
00:41:29
Speaker
And I think, here's the dovetail, I think this is also a pet peeve for me with a lot of languages, is that if you're building for a platform, I think that there's sometimes an inclination to take the one thing that you understand and then just try to force that to solve other problems because taking the time to understand the other thing
00:41:57
Speaker
is just, it's intimidating, right? Like it's a thing, it's hard, it's time, it's, I don't know it, I already know this, like why don't I just use this? And so I think that that's like something that kind of gets under my skin a little bit is when I don't care if you use CSS and JavaScript. I don't care if you use Tailwind, I don't care if you use whatever you want. What I care about is when somebody says you never need to learn CSS because these things have solved it. And I'm like,
00:42:26
Speaker
And then you watch somebody writing full expressive CSS inside of Tailwind classes, and you're like, well, wouldn't it make more sense to write that as CSS? Or like, that's not CSS, that's Tailwind. Oh yeah, but it is CSS. That's a weird shift in the abstraction where you've literally learned so much about CSS with no understanding of how it would translate back to the original layer.
00:42:54
Speaker
And that is kind of a pet peeve of mine because yeah, use whatever tools you want. Use what makes you faster. There are a lot of great reasons to put Tailwind into a code base. An abject refusal to learn about CSS is not a qualifying reason in my mind.
00:43:11
Speaker
So you, you actually, this is a great analogy you brought up. So like I've been learning, I've been pretty hardcore learning Spanish for the last two years. And I've got, you know, you kind of learn about language learning. And one of the things that you learn about language learning is that.
00:43:26
Speaker
When you are a as an English speaker trying to learn Spanish I just have this complete unfair advantage of the fact that just trying to speak Spanish and you've probably felt this being in Spain people are like oh It's not just some gringo coming in here and being like hello. Oh hola
00:43:47
Speaker
Yo estoy hombre necesito, you know, like, basically, like, but if you walk in, you know, like, almost, you know, like, and you just speak like, Oh, okay, this person's trying.
00:44:02
Speaker
And they are very happy to see that you're trying and doing that. Whereas in other languages, unfortunately, English is one of those where someone starts to try to speak English, everyone's like, Oh, that's not how you say that. That's not how that's done. There's like such a high bar to acceptance in English. I feel like there is that it also exists in languages like programming languages, where if you start writing JavaScript, people like, excuse me, that is a class.
00:44:25
Speaker
And we do not use classes very often in JavaScript. Are you writing this keyword? Are you kidding me? That is not something we do. But if you write CSS, the CSS community is usually like, you did it. Yes. Yes, you did it. You wrote it the CSS. Good. Please continue to write it.
00:44:45
Speaker
Awesome. I don't care with the color. Just you did it. Good. And that's why I love the CSS community. Everyone's just like, Oh, did you write it? Okay, cool. We were happy with that decision. It's not in JavaScript. Okay, good. And I'm not even talking about CSS and JS. I mean, like just doing things in, you know, in JavaScript that even should just need to be in CSS, you know?
00:45:10
Speaker
I believe, you've made that make sense in my head and I appreciate that.
00:45:16
Speaker
Yeah, very nice. Jason, do you have a preferred CSS methodology or like what do you use on your personal stuff for, I don't know, what are you feeling right now?

Preference for Astro in CSS

00:45:26
Speaker
Give us a five, but where you are with your methodology. So I, I write a lot of Astro these days. And so Astro has set up a like single file component approach, which I really like. So you just add a style tag at the bottom and write CSS and, um,
00:45:47
Speaker
it's bundled with Veet or something. So you can use all the latest CSS features. Like I've been using CSS nesting and these things that are like, I don't even think CSS nesting is like a hundred percent supported yet, but I love it. So I use it anyways. And so I I've been just kind of leaning toward like, let's just write CSS and
00:46:12
Speaker
Astro does scope CSS by default, which is wonderful. So you do the single file component and you can just write CSS and you don't have to worry about name collisions and stuff like that because it's all scoped within the file. And then if I'm not using an Astro component,
00:46:28
Speaker
I reach for CSS modules because I feel like before single file components, like Vue has single file components, but I haven't found myself on a ton of Vue projects. So Astro is the first time that I've really seen like a lot of single file component usage in my own workflow. And I love it. Like, I think that's the way that I want to continue writing code for at least, you know, until something even better comes along. But prior to that,
00:46:54
Speaker
I didn't like any of the ways that people wrote CSS and React. I felt like having a global style sheet that you had to import in your route and then now you're into Bemland or you're doing CSS and JS or you're doing something else, I was like, I hate all of this. I don't want to do any of that. That feels, it's too messy. I understand why people don't like
00:47:15
Speaker
regular CSS when they are doing it in a huge project and it doesn't have some kind of CSS management solution in it. So if you're in Webpack 4 and all you can do is import a style sheet, of course you're going to reach for Tailwind or reach for CSS and JS or one of these other options. What's that one? Vanilla? Vanilla is the one where you get... Vanilla extract. Vanilla extract. Yeah. You're going to reach for it because you want
00:47:45
Speaker
You want to not have this append-only CSS file, which is every team I've ever been on. It's too hard to manage the super CSS file. But CSS modules, to me, they hit the thing that I liked about CSS and JS, which was this sort of like, well, yeah, just do styles.wrapper, and it'll just work.
00:48:08
Speaker
But I didn't have to write, you know, camel case JavaScript objects to write my CSS, which always just, I don't know, just kind of fought against. And I'm coming with a lot of context here because I've been writing CSS for 20 years. So, you know, for me, I have a lot of muscle memory built up around just knowing how CSS works.
00:48:27
Speaker
And I also really enjoy CSS, so trying to move away from that to something that's then suddenly coupled to my React components always just kind of bugged me a little bit. And I really felt the value of this recently when I converted, I had my site in a React framework, but I refused to use any CSS and JS stuff or anything. So instead, I just written CSS modules. And when I moved my site from the React framework into Astro,
00:48:57
Speaker
I was actually able to just copy-paste all my CSS, and it just worked. I didn't have to rewrite it, I didn't have to back out the fact that it wasn't a React flavor of CSS and JS, and now needed to be in some other flavor of CSS and JS. It's the platform, it's CSS, it just works, so just put it wherever you want, and it's just gonna continue to work. That was where it really cemented to me, that I don't want to couple my styles to the framework, I want my styles to just be CSS.
00:49:25
Speaker
And then the easiest way to do that, in my mind, is single file components or CSS models if there's not a single file component option.
00:49:32
Speaker
That was awesome. You could work with me because that's what I do. I literally, Firebase blog, it's all CSS modules and JSX components hooked up to Astro pages. So yeah, let me know if you've ever looking to jam together. I'm curious though, and maybe y'all will know what Astro does here. So with CSS modules, one of the really rad features was importing only what you used. And so it could tree shake what you didn't import.
00:50:01
Speaker
Now in a single file component structure where maybe I've got a couple classes that aren't being used on the DOM, do those get omitted in my final bundle?
00:50:11
Speaker
So they're making the naming easy, but they're not actually doing it. In the CSS module world, no. I don't know about the single file component Astro world though, so I don't want to speak to that. It'd be worth looking at because the way that Astro is doing it in the bundler is they use your class names to detect the files and they add an extra class, like an Astro hash class, which means they are aware of what's being used.
00:50:37
Speaker
So theoretically, they could drop anything that's not referenced in the HTML because it's a single file component. And the reason that most frameworks ended up not doing this, like I remember at Gatsby, we were looking at a couple options for better tree shaking, better awareness of where things were being used.
00:50:53
Speaker
And the only way we could have done it would be to literally run the entire app as part of the bundling process to figure out how things were getting generated and referenced and everything. So by scoping it down to a single file, it's actually possible because you can kind of figure this out. And when the single file component is scoped,
00:51:12
Speaker
The anything that's marked global obviously just goes in, but anything else can't be used outside of that single file component. So you actually do have a predictable route to tree shake that. So I would, I'd honestly be kind of surprised if they didn't because if I can see a path to it, they're way smarter than me.
00:51:29
Speaker
Like I've talked to their engineers and like they do some stuff that kind of melts my brain and that one feels like it's, maybe there's an edge case I'm not thinking of, but it feels like it should work. I agree. I think it works with the, it sounds like it can probably work with the single file component one, but I don't think they know about your CSS modules, so to speak. So they just probably let that chill in the file. Like we don't want to strip it out.
00:51:53
Speaker
If you've got a CSS module in a JSX component, they also have a reference. So they should be able to tree shake that as well. Maybe it's something new because I remember trying to check that on earlier versions and it didn't work. Every time I check something with Astro, they move so fast that my assumption of how it works will change completely because of just their velocity is unreal. And I can't even keep up with all the new stuff that they have.
00:52:22
Speaker
And you know what I like about Astro that I have struggled with with some other frameworks is that their velocity doesn't feel like churn. Like one of the things that I've really struggled with is, you know, I'm not going to name names because it sucks to do that, but there are some frameworks that I've worked with where it feels like every time a minor version drops, there's some refactoring required.
00:52:47
Speaker
And that, and it's always like minor refactoring, but it's, it's mental overhead and they move fast. So you've got a new minor every couple of weeks, maybe faster and just a little bit of refactoring. You got to do to accommodate some new thing or other thing that changed an API or that, you know, like deprecated some other API or whatever. And I just haven't, I haven't noticed that feeling with Astro. Like I just did a major upgrade of Astro.
00:53:15
Speaker
And they were like, here are new features, but the other stuff works. I think I've seen maybe one deprecation that was inconvenient to me as an Astro user. And so it feels, I don't know. I think one of the reasons that I'm bullish on Astro in general, and obviously I'm coming with a ton of bias here. I'm working on a course for Astro. I've done work with the Astro team in the past. I'm friends with these folks. So I love it.
00:53:44
Speaker
but I reached out to them to do these things because I like the framework so much because it just felt like it was what I always wanted these front end frameworks to be. You know, like it's mostly the platform and the fancy framework stuff is opt-in as opposed, I feel the other ones are sort of inverted. It's like fancy framework and then we'll back it out to browser standards for you. I'm like, yeah, but what if I just want it to be browser standards? Like, oh, well you can just do that, but you're kind of on your own. You got to work outside of the framework to make that work.
00:54:14
Speaker
I totally agree. I've been, uh, when the Firebase blog project first started, I, uh, Fred is a friend of mine, Fred shot the CEO of Astro. He was like, Hey, you want to show you this thing? And then I was like, Oh, this thing is awesome. And I was like, I'm going to build a site with it. And he was like, like a fun site. And I'm like, no, like a production site. And he was like, Oh, whoa, what? And I was like, see you later. And I did. And, uh, literally before they were 1.0, we like released to production and they're like, Oh,
00:54:42
Speaker
Oh, that's, you're going to do that. Okay. Uh, and I've loved it ever since. And I, I've, I've gone through, I went through all the alpha refactorings, never was that hard. I, I still have stuff that is like legacy from like pre-1.0 Astro sitting on this code base that still works.
00:55:00
Speaker
Yeah, yeah, I think that's to me, that's a sign of a project that's thinking long term, right? Because I don't know, I just get so tired. I feel like JavaScript fatigue is is less about the velocity of production and more about the churn. Like, how often do I have to rewrite my understanding of how this thing works? And if it feels like it changes every every week or two,
00:55:25
Speaker
I got a job, man. I can't be a professional framework journalist. I can't keep up on all these changes. I'm supposed to be shipping features. If what I'm doing is mostly maintaining the refactors that keep my framework healthy, then I'm not building the features that people want.
00:55:44
Speaker
at Seattle JS, this was kind of like what I got into in the talk is this idea of like you want to be productive. Like I never want to maintain anything. Like the perfect website to me is one that I build and everybody's happy with. And then it sits and runs forever until we have ideas for something new to do to it.
00:56:04
Speaker
And I feel like that is getting harder and harder to do with a lot of the frameworks that we have because they change so much that when you go to make that new feature.
00:56:15
Speaker
you're a major version out of date. And when you try to upgrade your whole dependency ecosystem breaks and then you got to spend a half a day or more kind of backing through decisions and figuring out which dependencies no longer compatible with the other dependency and why you're getting this error in your build and so on and so forth. And then it's like not fun to change things. You sort of resist adding features because you'd know the, Oh, I haven't, I haven't touched that in like six months. That's going to be a dependency nightmare, right? And
00:56:43
Speaker
If we can find tools that don't do that, like this is one of the things that I thought was always brilliant about Jekyll back in the day. It's like you never had to think about Jekyll. You would deploy, you would leave it alone for a year, you would come back and write that second blog post after you use Jekyll to build your blog and publish one blog post and forgot about it. And when you publish that second blog post, it just worked.
00:57:04
Speaker
You know, um, but like that, I don't know. It's, it's very, uh, it's becoming more important to me as I, as I get like more advanced in my career too. I always found that the hardest thing about Jekyll was, uh, learning Ruby gems. That was basically it. Like Jekyll itself. Good. Ruby gems. Oh, how do I do this? That was always, that was always my. I built a site in Hugo and I thought Hugo was like the best static site generator ever.
00:57:33
Speaker
And then I wanted to customize it a little bit and I had to write go and I was like, I don't know enough go to do this. And so I might get it off of Hugo, not because of Hugo, but because I didn't have enough understanding of how to like modify Hugo. And I was like, I'm not going to learn go. I don't do go for work. I'm not going to learn go just so that I can edit my blog. Like I need to, I needed to use something that's in JavaScript so that I can understand how it works.
00:57:57
Speaker
I feel like people at NPM install with the assumption that they're going to get a dishwasher. They're going to put it in their kitchen and they're just going to fill it and turn it on and they're never going to have to do anything again to it. But what they actually did was adopt a little child that's going to grow and it's going to change.
00:58:16
Speaker
And every time they come back to it, they're going to have to, and they have to take care of it. Um, it's just, it's like one of those things that, um, I look for this also. So this is like the trade-off that I have with components. I'm like, how much do I have to give you versus what you give me? And if, if my input becomes more, uh, more than what you give me back, I'm like, you are not in my kitchen anymore, child. I'm going to kick you out. Okay. Wait, this is not nice anymore. This is a.
00:58:41
Speaker
I'm going to send you the name of your return as a component. It's such a visual. Yeah, it really is. I thought you were getting a dishwasher. You got a child. Hey, can you help me add this new page? It's like, you're not my real dad. Wait, isn't that what a build error is? Seriously.
00:59:08
Speaker
No, it's true dependencies. Honestly, like I've had to update so many old libraries before. And like, all I want to do is get it on the latest versions of libraries and you update one dependency, but that dependency bumped on another. So then I got to update that one. And then you got to update that one. And then that one's got a new config file format, but it doesn't support the latest version of TypeScript. So you got a, or the, but that one does. House of cards, Hill house of cards, toothpick house. I mean, seriously, it can feel that way.
00:59:36
Speaker
And I also think that this is part of the vicious cycle of like one of the things that makes me consistently tired when I go in and like I'll get consulting gigs with big teams and stuff. And you'll find that they are refactoring something. I'm like, why are you refactoring something? And they're like, well, it was just time, like the legacy code base. And then you kind of do a little bit of anthropology there and try to dig down and understand where it came from. And what you realize is they did a refactor a few years ago.
01:00:04
Speaker
And the person who did that refactor got their promotion and left. And so the people who are maintaining it went to go do it. They hit this dependency hell. They're trying to do these upgrades. They don't get it. And they go, you know what, for the amount of work this is, we should just refactor it. And so you get on this treadmill of like, you have to refactor because the amount of effort to upgrade your thing to the latest version is as high as it would be to just read, to like rebuild the app in a new thing. And if, you know, the person who built it before isn't there anymore, I want to build it the way I like it.
01:00:35
Speaker
Brutal truth. I saw this at Walmart from a consultancy angle. I saw this at so many companies that were, they're like, we refactored to X framework. And it's usually React or something else. And they're like, we expected all these gains. And then there were none. And the people that originated it are gone. And then by then, React is updated. And all their components are in some old format. So they're hiring new people. And then the formats don't match. And the churn is crazy. So the churn is great if you're an agency or a consultancy. You're like, oh, yeah.
01:01:03
Speaker
Yeah, folks, they'll show up and do all the work you ask us to. It's a million bucks or something, but it'll be worth it, you know? I was a consultant and now I get that fee. Deloitte was very expensive. Yeah, yeah, yeah.
01:01:19
Speaker
But, oh man, Jason, we've, we've held you on for quite some time. Uh, and I appreciate every second of it. You are such, I just want to say, man, between your setup, you're, you know, you can all, you can create a setup. Anyone can create a really good setup. You can do, you can go down that re that, that, that, that research and the YouTube video, like this, how you do everything, but your voice, man, just hearing it again. And just like, you got the, if you should, you should really go into reading children's stories.
01:01:47
Speaker
Uh, or like just narrating like sports games. I feel like you could, there's just so much you, you got going there. So if the, if you're one of those people who wants to like, you know, give up on tech and get a farm, no, don't do a farm children's books. All right. Well, I'll work with you. I just, you should do it. I really mean, I'm actually, um,
01:02:06
Speaker
I'm working on the new studio right now and one of the things that I'm putting into the new studio is my friend Jack Harrington built all these sound panels that he doesn't use anymore. And there's a weird little closet in this studio. I posted a video of it on YouTube and TikTok if you want to see it. But there's this odd little closet. It's like eight feet deep and it doesn't go to anywhere.
01:02:28
Speaker
I don't know why they did it, but I was like, well, why don't I just fill that with the sound panels that Jack's giving me and I'll have a vocal booth. So you'll be able to do really clean voiceover work in this, this one little section of the, of the studio. Um, but, uh, yeah, so maybe, maybe that'll, that'll happen. Tell you what you, you write a children's story and I'll read it. All right. Sounds good. It was the story where you thought you were getting a dishwasher, but you've got a child.
01:02:58
Speaker
Jason, thanks for being a friend in low place too, you know, low places. It's just a little.
01:03:07
Speaker
Oh, should we let that one hang? I'm just going to let it hang. You, you brought us in, Adam. Do you want to take us out? You brought us in beautifully, by the way, I'm setting them setting up the stakes for this. Cause it was, it was good. Yeah. Better be at least a bit of a closer, but you know, uh, Jason, it's so good to have you on. I agree so wholeheartedly that your, your voice sounds amazing. You said a phrase today, which was really, it stuck in my brain. It was like cyclomatic.
01:03:34
Speaker
What was it? Cyclomatic complexity and I kind of want to just see if we can finish with a CSS version of that like cyclomatic complexity, specificity, functional pseudo class. I didn't think I was going to be able to say that out loud. You did it. You had all the hard ones. Nailed it. Your insights and wisdom, they're sealed forever in this episode and maybe you go forth and prosper in your new space. Thank you so much for coming on again. We really appreciate it, dude.
01:04:02
Speaker
Yeah, thanks so much for having me and sorry to all the JavaScript developers I made mad. We're used to it on this show.