you know that you're ready to apply for your first UX design role when you thoroughly understand the hiring process. Are you prepared? The time investment associated with this is actually significant.  So the typical process looks like the phone interview, the design challenge, the on-site one-on-one interviews and then the offer. But there's a lot of companies that do more than that. So just to clarify...


Do do do do do People would watch this watch our reaction to it and expect that we hate this movie or something When it pops up and you've had movies they probably be like, what the fuck?   We should all just go to new zealand together one time and check out the things We'll have to hold zealand. I love the idea that they were like This is so cool. Let's show it again. This is how cool this was That was Gandalf's message to say use the eagles you idiots and they never did Well, he did tell them to not use the eagles after last time Joe Sanding makes messengers Gandalf This is still part of his trip. He's just pretending this is all happening And his career as a wizard is pretty eventful when he's not smoking weed then again Pretty much is when you smoke and weed.   So in the book what happens is there's a stairwell that goes all the way back up and Gandalf pretty much just he's still fighting the balrog and like Fighting way up to the top of the mount.  I don't know where else to go And then they have to fight and then he dies. Look the elven rope Oh, that mist doesn't look so thick anymore Yeah What's in this? It's his box of condoms It's very special that I think there actually is an edit where he opens it up in the condom in there I thought maybe you and I would you never know mr. Frodo Now when you said seize the chicken What exactly? Still recovering from that last trip huh Frodo I wonder what tolki would have thought about the whole eye on the tower thing The eye on the tower is taken from Apart in the book. There's not a physical eye on top of it. There's a line But uh, well, he looks into the uh into Galadriel's mirror and he sees an eye reathed in flame And they just kind of put that on top of the tower to give sauron a more physical presence since he doesn't have one in the book I'm okay with it because they do take a part of the book and just repurpose it for film My god, it's fringy. How much do you think fringy's gonna hate us when we release this and everyone starts sending him However, none whatsoever. He won't watch this Fringy's got better things to do.  He's got the plague doctor going for him. Oh, that's true He proved himself against the golem memes beforehand. Oh, we can still make it work Oh, yeah, what's something that fringy holds dear so that we can make the my precious things still work kangaroos, maybe You know, I don't think I've even heard him say that word which is a shame This is what happens after you inject one marijuana not even once You want the top stuff even think about doing there?  They might have been caught way earlier. Perhaps it's a good message of how you should take advantage of people and then kill them It's crazy how good this still looks That does actually look pretty good That's the nice thing is they put the CGI budget to good use rather than wasting it a bunch of other shit We let him go you'll lead us right to a spider Also, I want to point out this movie was made on a budget of 90 million And the last Jedi was made on a budget of 317 Jesus It's funny the Game of Thrones season eight was made on an estimated budget of 90 million Each of the lord of the rings movies was 90 million roughly.  You know, yeah, because there wasn't really any good fantasy before this That's some Produces that were like this is a shill hit originally They were only going to be cleared for two movies But one guy was like no and they gave them like a year to prepare before they even started filming Totally different story with the hobbit though because they were given no prep time and peter jackson only came on because they Weren't going to film in new zealand didn't want he just he wanted to save it from being terrible He was kind of forced into it. He didn't want to do it There's also a lot of studio meddling like the whole Toriel romance thing was a studio decision Yeah actress was like not on board if there was going to be a love triangle that they just had with anyway Yeah, it's really shitty what they did with those movies But they just feed him look like blood In the books, it's like basically orc liquor. It's really rough, but it keeps you alive, I guess That's grog Neat, but the work of the drink both the drink. I'm grog and this is grog I make it.   This looks expensive Fun fact about this running shot or these running shots is a vigo This was after he broke his foot and it was after legolas broke his rib by falling off a horse So this whole time is like in horrible pain. I think the idea that they do it for the movie He told them that is like by the way guys, uh, we left all the running shots to loss Get some rest because tomorrow you get up right and early to do some running scene Less than a day ahead of us With walls and natural sprinters very dangerous over short distances Love how much this movie fleshed out in their characters more because fellowship focused mostly on uh, Frodo Yeah, and gala split up a bit, you know, they can Get focused on something strange. Yeah, I can fit a T wool I couldn't do it. Yeah, let's say. No, it's an SJW movie That's racist. Why'd you have to say that? He just say what do I see Make a isn't guard great again. Saruman really gave all these orc jobs They're even pulling people out of the dirt to give jobs, man. They're proactive. This one's teeth aren't very good Maybe he's inspecting. It's like as if you have any standards Saruman looks slightly to the left and sees a forest right there Yes, that orcs like um, I guess I didn't think of that You gotta fight with that hand later. He wouldn't cut the back He always cut the front. Hey, he's got typical uk Dental care. Oh sweet. Do they get do we get representation in this film? I surely do So you're dentist that didn't like game of thrones. She like painted your teeth brown and like vastumen with a hammer and Said it was good, right? Well, that's standard. You can get the premium. Which is just you have the mold removed That's too hygienic. It's true. You have the mold removed and then put back in upside down So it you just see the roots Oh god, that sounds kind of scary actually that that would actually be kind of terrifying Hey, he was in tube Oh, no, this is another way what are those like perfect casting choices. Yeah Then he did alien resurrection after this. That was also a perfect casting choice.  Is he dead? I just a good question.  It's like the aragore never responded to him But like a last later is like did were you like offended by that? That's one sexy orc That was a bear one orc. I bet it was hard pulling him out of the dirt. He was like I want to stay I want to do five more minutes I'm still cooking guy. He's such a gross looking orc. He looks way better than basically every single orc in the hobbit I mean, yeah, this probably took a ton of effort to make but look how it paid off I know and it's done forever now Now one's gonna save you now.  Oh, look proper use of cavalry Red sun rises blood has been spilled this night Aragorn's like is that a real thing? Seriously, really don't people die like every day in middle-earth Yeah, so every time The I see a red sky in the morning.   It's so cool We killed the children just like Daenerys.    So like it hit the grass So it might have been like Buffalo no one. Yeah, they probably just thought it was a hoof and they're all like in the zone So they might just immediately Broke his foot Riptoe. I just love that Peter Jackson like kept that in he was like, man, that was a great take Vigo and then your reaction was so your reaction of pain anguish is so real. How do you do it? That's genuinely what he thought too is that he's put on a really great performance and then it's like, no, no He just broke his foot Looks so good.  Hi guys. Hey He seemed disgusted. I know I love that It's talking Mary the tree is talking tree I am no tree It's like calling it indian and pakistani. It's just you don't don't do it.  Yeah, yeah Not very well read you don't read books from out of trees muller kind of fucking read books Why would they not be able to read books if they were made out of books? No, it's It's like reading a it's like reading a book that was printed on a scroll of dead baby skin.  Yeah, so, uh He's led us into a swab. Just one of my favorite like red group memes because we watched this as a group About two years ago And they were just like, how do you not know that?  It took him a while to process it.   Hey golem if you can sit at a hairdresser It looks better than uh, patrick willams hair That's a golem trying to make a cobova with all that You know like in a year, that'll be what h bomb Just a moment where you have to be like, all right going bald is the best thing for me Some people like floris look better bold than they do with hair.  He hit me. What does it be your friend, dude?  I must be smoking the same thing you are the mist here.  I'm like, bring them on bring on the board movies. I'll watch them I'll take boring over bad any day even though the idea is gonna say No friend to table value probably like I'd rather watch the room than something that's well written like a guy doing his taxes Insistently would be really boring. Yeah, but who's gonna make that kind of movie. Yeah, this is the problem That's the boogeyman. They're like see it'll be that it's like it wouldn't be that It's like no one has ever made that it's the straw man by idiots.    He's so high. Well, Gandalf. This is legless and gimly and I'm are you frightened?   Yeah very racist The coming of maryon pippin will be like the falling of small stones that starts and have a laugh The coming of maryon pippin It's an event in middle-earth history Gandalf you really like these kids, huh? I think Tolkien would think of the tonal dildo means You would approve that for sure Did you have mushrooms in your face? Is that like are you gonna use those shrooms? He's casually peeling the buffy.  Is this all I have to you? What do you know good lighting at night? How cool are those names by the way or thank and baradur? It's like Tolkien. How'd you go out with so many cool names?  I think you like took a bunch of names from then changed like one letter Oh more than that but two letters He was like trying to create an entirely different language And uh, well he made a really cool sounding one. I feel bad for the guy who made the dothraki language I feel bad for anybody involved with game of thrones Yeah, I guess that's true. God, we this is what I mean about the whole like we have this lucky So we have to be thankful these movies went fucked by the second or third lucky enough to get one good movie But three in a row like And they're like some of the best movies ever made on That and made by a guy who really had no right to have made such good movies That's what I mean about the luck element There's so many things that should have gone wrong, but didn't the way they filled this I'm kind of confused as to how the stillings didn't see them already Yeah, I guess the implication is that they're a bit behind a hill and they have to go around the hill to find them And yeah, and you can kind of make them out with this. Which is why I kind of like it Like I kind of believe that's not a rock the cloaks act more like the box in a metal gear solid We're gonna just walk through the front gate Yeah, not a well thought out plan, but I guess they were just desperate because like we're right here This is it. Are you saying there's another way into Mordor? That's not literally through the front gate while they're all watching. Yeah I mean you could assume there's high walls everywhere else Golem stop feeling him up Mr. No, no fro I like the idea that tree beards would have walked here Looked around and been like, oh guys, they're gone and left and then they just die under the tree Oh, this is so gross like now is not the time dude I can't something about me Can believe the idea that Grima is awkward with men. Yeah. Yeah, I think I can see what are you talking about? He's a stud. Look at me. He chooses literally the worst possible time to talk to it Like if she was on the toilet, it would be more suitable And the way he frames it too, it's like your brother deserted you, but I can take it She's like I was there when you gave the order to banish him, dude I'm not retarded.  He was a boss. Yep.  It's like a special move. Someone has the Wog jumps into it bites it. This is like, what the fuck?  It's probably sweat, right? Maybe it's a dead guy in the room, right?    People argue with that.  Martin actually said that they're not there's an interview on youtube He can watch actually says they're not that intelligent not compared to like smalg or anything Even smalg probably would have put that together. He'd be like wow.   No, not old tug it.  Whatever.     Yeah. Yeah, it's awesome If I go failed him dies Payback for the spinning Just felt the need to touch his buddy there And he looks so much better pretty good Ah, this movie did the de-aging thing way before captain They did it with samuel jackson and everyone was like, this is so cool And it's like they did it 20 years ago. That tells you something that all everyone everyone could talk about was the de-aging tech It's like what else is there like these comments from the special effects people say that was the most difficult thing they'd done And it was impossible to get it right and stuff And I was just like well at least you guys tried seems to be a running theme with Anything nowadays everyone but the writers are trying either that or the writers really are trying and we just live in a really sad world I don't want to believe that they're not trying at all I'd prefer that world Do you know they actually had a forge in the studio to make these swords and shit? Really? So like these are real swords?  He's like how much xp is that? It's like one. He's like what? range damage Ever since gandalf killed the balrog single-handed lees would Be back but then aowyn goes and kills the witch king and Just pisses off like this. He comes up at the top of his screen while he's running around 10 000 xp He's like what? Leveled up Just keeps spabbing notifications. He's leveled up leveled up leveled up level. She was on zero Just imagine it cutting to legless like sitting down and screaming Look at all these helmets and all the chainmail and scale mail and All the armor and the weapons and it just looks so I mean, it's got this great aesthetic to it this dark green brown norris kind of look to it But it's just so awesome. I love that if you really look closely at every single place they go, even between the elves in Keras Galathorn and to Lothlorien, they don't look the same. Like every single culture in these movies looks different. But you have Elagost is the Ranger type guy that you meet. He's your...  Pretty sure he's Duna Dain, isn't he? I'm not sure. I haven't played the game in eight. It's co-op. We should play through it together. It's Duna Dain. Gosh. Duna Dain. Well, A.I.A. Duna Dain. I don't care how some guy pronounced it. Duna Dain sounds cooler than Duna Dain. No it doesn't. Totally does. Dain. Great Dain.  Duna Dain. I know what it is you want.  How do I do them? They were disgusting these huge issues. Ghibli's like...  He goes well with my foot. Look at all the foodies. Sanadun. Not Aragorn was king of Rohan. Alright, Jesus. Fine, fine.  He wipes his mouth for this beard.  I have beard to light my beard. I like that Gilmy. Ghibli is the last dwarf that actually looks like a dwarf.    That really annoyed me. Philly doesn't even have a beard I don't think. Or is it Kelly? I can't remember. The one that the girl dates. He's literally like Aragorn but short. Just so dumb. Shadow Facts is like I'm above these other horses. You realize this?  What have you done to me Gandalf? Listen, I need you to understand this is not acceptable. What's happening right now? I'm keeping myself level. I'm doing this for you, Kev. I'm about to go into conniptions. This is unacceptable.  Thank you so much. Let's go.  Gandalf, they tried to speak to me. How dare they? He's trying to get out of there so fast. This is the Gandalf. This is Shadow Facts.  Oh my god. Mountain Jesus.  Bring it back. We wanted to make fun of him.  Things he's so much better than us. With like a lisp like My name is Thaddle Facts. I'm one of the horses. You guys have to bow. Bow. Heracles like I'll take care of it.  He flings across the room. He suplexes the horse.  Just kicks him in the face, snaps his spine. And there he's gone. Heracles fought bravely. Dude, there's a scene in John Wick 3 where he uses a hook to kill. I haven't seen it yet. I haven't seen it yet. It was fun, but it was dumb. You describe in the second one. Like I told you, I don't even remember a single thing that happened in the second. Bring his perpetually salty that I didn't like that film. Listen, the pigeon lord Lawrence Fishburne. Oh, God. Stop, stop. He's not happy with your commentary.  When he's like, I will give you seven bullets. Me and Alex are like, why? You've got really fancy lamps. Oh, yeah. They're awesome. I want them. You stink of horse. One of the Duna Dine Rangers, I thought. You pronounce it the same way Grima Wim tongue does. What a villain. He bore a strange ring. One devouring the other crowned with golden flowers. I love that. I love that not only did he real like get such a good look at the ring that he was able to perfectly describe it, but he's got a book that has this thing. Let me call a buddy of mine. He's an expert in Lascawn during the years. Let me get my two seven ring book. Yes. I'm ready. Bring my horse. Bring my horse. Sorry, sir, just for clarification. Can you say that one more time? Just just so we're clear because it's a very important distinction. I know that basically just halterian. If they didn't like, no, they are one in the same. Like, I know Grima was mostly bad for you, but he actually freed all of your horse. He's like, oh. SJW Boban since Lord of the Rings are two towers. The suspicious amount of women in this scene are playing. Women did not use swords. They were unable to. A shield maiden of Rohan.  I do not think so. Has anyone soiled your flower? Are you unspoiled? Shall I take you to the Black Tower of Isengard? Oh, God, the flower thing. He just reminded me of all the really awkward sex scenes in the Game of Thrones books. Isn't the most awkward sex scene from a book, though, the one in it? Oh, God, that's not just awkward.  Why do you write that? That was during the cocaine years. For everyone to understand, that still doesn't explain it. I would argue what's worse, the fact that he was coked out of his mind and wrote it, or the fact that someone sober kept it in. I would argue the latter is worse. Like, that made it through sober Stephen King at some point, right? And his publisher. They will have women and children with them. Children? Can you imagine what the direction must have been like? Andy, we need you to, like, roll around in the river and chase after a CGI fish. It's not going in the movie. I just want to see what I can make you do. I'm going to stretch your Lord the Rings knowledge. You know who the boss of the wogs is. His name? No, because it's never spoken in the movies and I haven't played the games. Yeah, it's all over the games, actually. He's like a consistent boss, shaku. Not as cool as Lertz. I like that Lertz isn't even in the books and people, like, recognize him as one of the best villains in the series. He doesn't even have a line aside from Saruman. But he's so cool. I know he's cool. His name's not in the movie. The only reason I know about it is because of people talking about it in YouTube videos. I was like, oh, that's his name. What about Gothmog? Is that said in the movies? Not that I remember. I think you were the one that told me his name was Gothmog. No weird how that works. Like, you can learn so much lore by accident because they don't make those names up. They have to go get them from, you know, sources or whatever. How do I get their names? Pull them out of the ground. I'm sure Saruman names each an individual one. At the christening. He has a graduation ceremony. You will be Lertz. You will be Franklin. He's like, can I have the name? Once you get a thousand down the line, you're like, Frank, you are Franklin.  Like, how do you come up with the planes of Gorgoroth or the Numenorians? Rohan? Minas Tirith? Minas Morgul?   That's on dumb. Minas. That could have been it. We could have believed it. Tinas Mirith. I mean, we wouldn't know any different. George, I'm looking forward to Helms Deep right now. And you know what I want to reference when we get there. Man, a lot of people tried comparing disease in a battle of the bastards to the battle of the Palinor Fields. And it's like, no, no, don't compare them.  Yeah, I like it too. But God, even if it was smart, it doesn't beat Palinor Fields. Nothing beats Palinor Fields. Palinor Fields' scale is huge. I just love that shot where you see them like slowly coming over the rock. Since it's like, oh God, they're here.  Quick, take his wallet. And the dwarfs just spring out of holes in the ground. I haven't seen my niece smile for a long time. How would you know? She was a girl when they brought her father back. Yeah, it's been a while. She watched her mother succumb to grief. Aragul's like, do you have to be a dourna, dude? You're just watching Gilly fall off his horse, man. And now here you are talking about dead people. He's like, I get it, your son died. But that was like yesterday. You gotta get over it, man.  I mean, people argue that this is like sexist or something. What, that the woman can't cook? Yeah. Isn't that the opposite? It's like women shouldn't be in the kitchen. Apparently people argued that this is intensely sexist. And it's like, oh, it's not. Swallow it, Aragul, swallow it. Swallow. Spit, don't swallow it. You gotta wonder, like, what did she do? If it's like, tastes healthy. It's good. My uncle told me a strange thing. It's like vinegar's hands. I could just feel the nutrition sliding down my throat. I probably won't have to eat for another week. Or poop for another week. I think he's going to be shitting for quite a while.  She says, doonadine too, see. Right, you got Grima Wimtong and the woman who can't cook on your team now. I'm sorry. Please eat. No. He's got to smoke himself into a stupor later to wash the taste out of his mouth.   Hello, Gandalf.  I gotta forget that. I like that Vegan of Mortensen's aged about 600 years since this movie. I mean, he was already getting up there for this movie, right? Was he like in his late 40s? He's older now than Ian McKellen was when they started filming this. Man, wow. Which is funny because he's aged a lot better than Ian McKellen, but you compare him to this and he looks really, really old. What does she know about his comment about, what do your elf eyes see? She'd have to sit down and be like, all right, Aragorn. What do you mean by elf eyes? Do you not like the size of my eyes? He's like, are you jealous that elves, on average, are 10 IQ points higher than men? Is that it? It's kind of weird how the orcs look like a cross between like bears and lions in this. They're like hyena lion bears. Yeah. But in the hobbit, they're just straight up really big wolves. You're right.  Oh man, that was the guy who let Gandalf keep his staff. He just screams we're under attack and everyone panics. What is this Aragorn?  A suspiciously large amount of dwarves. I can fight. No. You fight as well as you cook. Ah yes, with physics no longer works. Oh yeah. What? Yeah, that's all. No. I would not want to be a horse in this scenario. Oh man, that was so hit. That works self-preservation instinct really did not kick in.  So what if he was just on one of those stones like, hey.   We got places to be. When they have seen it from up on that hill.    I know I told baller this, but regs, did you know that there was actually like a delete scene where there was supposed to be orcs down in the caves that shows a when battling them? I didn't know there was a deleted scene for that. The scene wasn't like put together or anything. There's just a few shots showing like the beginning stages of it. And they didn't really do anything with it. I would have been fine with that. That would have been cool to see. It would have been an SJW moment. It was suspiciously too many women in these caves. It's like, I'm sorry. How many women? They're littering caves, too. Of course they are. So few of you have returned.  He's like, all right, don't rub it in, Jesus.  You want to fight one? You don't find one.  Where is he? He fell. Yeah. He said his stomach was bothering him right before the battle. Maybe that was it. They say it's explosive diarrhea.  And that was the end of it. Luckily he was on the enemy lines when this happened. He took a few works done with him. Don't worry. In the meantime, let's weaponize your stew. They fill like the swamp part of this with it. What kind of device could bring down? Dude. Can you imagine if he just lit it up and then... The return of the king. All that just explodes. Fuck. Yeah, it just cuts to the outside.  What do we do now?  Yeah. I like that he's still holding his candle. Yeah. It went out too. Yeah, Grimoire was apparently unaware of that. Grimoire, what did you expect was going to happen when you told Saruman the plan to get in? I wonder if they're blindfolded. They can't be afraid of the Rohan soldiers, and they can't see them. One of the most common fears that humans have is based after the idea of not being able to see. With fear of being afraid of the dark? I guess you just kind of forgot that.  I was in mortal engines. Oh, no. Yep. Man, he even looked good dead.  I assume so.  The fact that we can't tell is kind of like...  Yeah, I just like the idea that... 12 seconds. Every time they were presented with two options and one of them took more like, you know, tie, but F and Tal and Pia Jackson was just like that one. Kind of makes sense that she, like, she loses everything. She just walks down and ends up outside of Mordor.  She doesn't know what to do without a man. Is that it, Wolf? Yes.  I'm just saying women are useless.  I thought you were saying something sexist. No, anyone can cook. Only in your subjective, objective opinion. Hey, they can't be afraid. Wait. Yeah. Fearless. You just made hobbits fearless. It is permanent. If you take it off, they've still gained fearlessness from the experience. Thank you. Thank you. Thank you. They're just passing around the little person. It's like hot potatoes. It was moving someone like, Farmi, what the fuck? Why did you just pick up two random kids? What is this? Why'd you bl- Oh, God, Farmi, what are you doing?  I can't get over that. There's also a giant midget in this movie. It's like, how could you have said that lie? I cannot wait to have the EFAP, like, highlights where I take all of the best ever moments and you just combine them all in a row.  That bit. Like, there's just so many of the best moments of all the Tizmy people we've come in. Dead. How? It's one of his companions. I'd hoped you would tell me. If something has happened to Boromir, we would have you tell us. Oh, he's dead, so. That was an interesting dialogue. He basically just said, you're gonna tell me because I don't know.  There's also that line in Return of the King where Gandalf's like, Lord Sauron has yet to unveil his greatest weapon. You met him before. And it's like, Gandalf might want to rephrase that. Yeah, Pippin's like, so I have met him before? So he's been unveiled then. He hasn't put on his cool mask. Like, oh, okay.  Oh, yeah. Yeah, I always felt more sympathetic for Boromir after these scenes as well, because he's so loved and leadery and courageous.   Plus, he's also really nice to Faramir when Denathor isn't.   Oh, man. When he sends Faramir off, I remember just being like, yep, you need to die horribly now.  Preferably by fire and gravity. And this scene is so good for Boromir, but I can see why they cut it because it doesn't do of anything going forward really. Yeah. That's why people always say watch the extended editions. And unlike other extended editions, like the BVS extended edition that adds nothing of value and makes the movie yours. These are really only cut because the movies are so long that they wouldn't work in theaters otherwise. A chance for Faramir, captain of Gondor, to show his quality. I trust this mission only to your brother. The one who will not fail me. Then he proceeds to fail you. Then he's accepted. You know what's cool? What if Faramir moves as in the third age when he fights to do his Faramir's quality? Oh, that's great. That's a great touch. I think he gives a buff to the whole team. It's like a defensive thing. You made that up. I thought this was just a weird outpost that we passed through. Damn.  How different would the story of Ben if he did die here? And Faramir lets them go for it. And he happens to know how to get into Mordor with you. I like how Gollum's like, hey, I'm the one that usually tricks people. What's going on?  It's this guy like possessed.  He's like...   God damn. Fuck, man. Kind of baffles me when I went to go see Endgame. Like, I wonder if the theater came in. And he was like, all right, guys, this is gonna be three hours and there's no breaks. And it's like, I'm watching the Lord of the Rings trilogy extended. It's like, well, you're like, do you know who I am? He's like, what do you mean? I run a podcast where we don't have breaks for like eight hours. By the way, Aragorn is right next to him. He's now going to buy horseback, get to Helm's Deep, possibly like a good half day before they do. Then you have Game of Thrones Season 8 that has Ayer and the Hound leaving in the morning and then Jon's army marching in the afternoon early night and yet Ayer and the Hound arrive after them. Like... I'm pretty sure Jon and everyone else was marching too, so... It's just like, none of...  Like the really easy things and now we get to see how much they care about each other.  Okay. Can you see in my arm, dude?  She brings over more soup. He's like, no. He pours it on his wound and it starts to... Corturizes it. They make 10,000 Urukai seem terrifying in this while... Do you remember 20,000 Golden Company at the front of the King's landing gate?   It was like a thousand at most. I don't even think it was that much and they all died immediately. Yeah. One blast from fire and they were all dead.   Remember Euron said I have a thousand ships in my fleet. He says it twice in season eight. He's got like 50. Yeah. The elf thing is the only thing out of all three of these don't like. They, first off, weren't in the book. They kill a character that didn't die in the book and on top of that they didn't add anything like they didn't do anything that they couldn't do themselves and they all die and they're all forgotten. They also provided a lot of archers. It doesn't really change anything that wouldn't happen if they didn't show up anyway. They could just have all of them archers. Yeah. I mean it's not really a problem. It's just a kind of silly thing. Like why include them if they're not going to do anything with them.  The battle's done. And even that's just small thing in the long run. They love you. Yeah. I mean we're like friends, you know, but I've only known him for like a week or two. I have a beer with this guy. He's like, hey. Hey, what up? I just imagined what a new card game is called Solitaire. You have to see. Oh sweet. Jeff just came out with a new card game. I got to go. I'll catch you later. Look at them. They're frightened. Well, like, maybe you should keep your voice down a little. They're all the darker dire. And I shall die as one of them. Everyone's like, what do you mean? We're going to win right now. You're King Theodon. Do you trust your King? Not when you're talking like this. I'm pretty sure there's a there's a supercut where it's like a horror movie trailer or a lot of the rigs like Theodon's losing his mind. That is no orc horn. He goes outside. It's just an army of orcs. He's like, oh, maybe they added this because they had that part. I was going to say our winner talking about oh, there's no help. Dude, is it because they don't save enough of a purpose that it annoys you off? They're not nothing to do with why they're here or how they're here. There's enough room where you can be like, okay, maybe someone could have sent word either Gandalf or somebody else. It's just that they don't add anything. So it's like, well, why even keep them? Personally, I'm okay with them all mostly dying to save Helms Deep. The part that I do actually agree is kind of a problem is I don't believe anyone ever mentions their sacrifice. Yeah, they don't add anything meaningful to the battle and they are completely forgotten after it's done. So it's like, well, if you took what have changed, you could have picked a better spot. I just think you could see them going all the way back the trail and then that director was like, it's, it's scarier when you can't see anything. I don't know what they're doing behind the castle wall. Shouldn't they be outside in front of the trench with the trebuchets? I love that the rain on the helmet sounds just so good. Yeah, I'm sorry. It kind of broke my mission. Like, why aren't they bringing their back to the Urakai bent over? Well, you know, they do like to spoil their enemies. Shall I describe it to you or would you like me to find you a box? That reaction makes it.  Nice shot, though.  Hey, look, it didn't puncture the armor. He hit it in the neck. In the neck, yeah. Yeah, I guess a complaint I'd have is that they wait way too long just been shooting it. I don't know why they wouldn't just be constant. Oh yeah, there wouldn't be volleys at this point. They'd just be fast as you guys can shoot. Just keep going. Oh, this is so cool. This shot right here. It's awesome. All the Berserkers are at the top of them.  I was sure that must have been a movie invention, but that actually was in the books where they're keeping score of how many kills they have. Yeah, I would not feel safe climbing the ladder.  We never say anything unless it is worth taking a long time to say. Jack St. would hate this guy. Dude, trivia is the quintessential long man bed. Yeah. Is this all you can conjure Saruman? Have you heard the criticism that they should have done this way earlier? Yeah, probably should have. I'd happily assume that they were trying to get these explosives in safely from the back like they wouldn't have them frontline. Oh yeah, absolutely. You're invaluable. Yeah, that makes sense. I would assume that they would have the guy with the shop a little close. And if he died, they'd just send another. That's the thing. I've never taken that drama seriously when they're like, damn it, if Legolas only killed him, it's like, it wouldn't make a difference. Someone else would just pick it up. You know, they got a lot of torches there. What if you got impaled on one of those pikes? Right up his crotch. Oof.  Thank you, sir. I've disarmed him. Riga Mortis is set in. He's not let go of my throat. Don't tell the elf. What if he didn't throw him far enough? He just smashed into the bridge and fell. Yeah, like it's safe to assume those kinds of things take time for the Uracata set up. Yeah. Get to the frontline. I really want to know how many died from this.  Gimli's gonna be upset. Gimli wins, though, by one. I thought that the competition ended with Legolas shooting the guy who's twitching or whatever. Yeah, but then he like moved his axe and he was like, he's twitching. I got my axe back and I was nervous. Yeah, so it's it's unconfirmed who really won. I vote Gimli. I vote Muba Kill Cowards more than one. He wins for this movie. He doesn't win for the next. It always freaks me out how close the Uracata are in this shot. Yeah. Yeah, they're right there. Like I love that pan. They're pouring in and they're on the staircase that Aragorn and Legolas are heading towards.  Just cut that scene for more theatrical. What was the lesson of the scouring of the Shire? Mostly like finding their freedom and sanctity of which I feel like they were able to perfectly convey with the changes that they made while allowing for ending that would fit cinema better. I'd have more of a problem if they didn't learn the same shit but they still get the same thing out of it without having done it. I remember still making the argument that I think it was important to keep it because it was supposed to be thematically relevant that the hardships are not over just because they beat Sauron. Oh yeah. I think they were able to explore that a bit with his PTSD. Hmm. I understand why they made the change because to fit for a movie you can't make a movie the same way that you make a book especially one is filled with subtext as rings. The only problem with Mary and Pippin is like they do get the same thing out of it with the Ents but it's unfortunately at the cost of the Ents kinda looking like idiots. You win some, you lose some. So they're not objectively perfect movies. They're for something they were perfect. They were absolutely flawless in every single way possible. I remember you said that. Yeah. I pointed out flaws as we were watching it. Yeah. Suddenly a narrative change. I think you just agreed with ours so you could fit in with your friends. There's like how much he's the only good looking Ents.  Like why don't they just use guns? Oh yeah. I always found that the fact that there's a way out of the Aves was like they should totally have started taking that route even where the fight started. But then you could just go with the wall. Yeah. I can understand them not going at first. Dude I was like we'll definitely not lose Helmsdeep. Well once the wall explodes he should have been like maybe we should make him go. I am concerned. Let's make a neat and orderly line towards the back of the games. Imagine trying to be that guy to organize it's like everyone we're leaving. Please guys follow, follow. We have signage and appropriate areas for your viewing. It doesn't mean that we're losing. This is just a corporate thing. It's out of my hands. A part of it does make sense because David is kind of shown to be pretty full of himself in this game. Yeah like I said I think he's undefeatable or undefeatable. Yeah it would be undefeatable. This is his second wind. Rich Evans is undefeatable. This is kind of a silly thing because then you gotta be like where the horses come from? Well they they kept the horses in the back.   It's working guys just as soon as we get to the end of this bridge though I'm considered and I've always been sympathetic with Saruman here as if he didn't know much about the trees and he's just like beyond fucking confused as to what's happening here. Like okay when they come from why are they doing this what are they?   Dude I think he might have like opened his mouth closed and gone back inside and went up to Griman but like okay what's happening. He like slaps himself a few times. It seems that the trees are attacking us. They're led by two hobbits. Just the idea that their report to him is like so we've lost our entire orbit and he's just like ow. You know in the video game you get up to there and there's a tree trying to open the dam but orcs are firing arrows at him and he's going and you have to kill the orcs to let him open the dam and it's just funny because of how quickly he does it in the movie I'm just like why does he need anyone's help.  Just flies away on an eagle like I was just doing different things somewhere else. Everyone always finds that funny isn't it. Yeah it makes sense to me. That's what I've been doing. Dude imagine working down there like oh what what.   Just goes full tights hammock on everybody.  It's so great. Everyone's like old non and scrambling. Yeah I was going to say that looked really good. I'm not even sure how. Yeah so much work was put into the little guys running away. Just because like could you could you cut me out of this like ever. Without the scouring of the shire it is kind of weird to think that a lot of those hobbits have no idea any of it happened.  But it does kind of go along with the idea like they come back everything's normal and they're they're changed. Went through yeah. Yeah it goes along with the world building like most people don't even know that hobbit. Yeah the insts don't even know about hobbits and they've been around for how long? A billion years. Random review for the new X-Men by some guy like you know professional reviewer person. It says it's B-movie bad intimately hilarious if only someone had told the filmmakers. He was twitching cause he's got my axe embedded in his nemeson. Grima's like I just woke up I love the idea that Saruman has continuously been moving from one side of his little balcony to the other just looking shocked like I would not want to eat anything floating in that water.  He grabs a chicken turkey. It's like I get that you like to eat but Jesus Christ the weed. I'm surprised this looks this way considering orcs had control over this area. Maybe it was Saruman's private stash his alchemy stockpile if you get one. In fairness he did have those human people with him. I smell some dink weed in there. I can smell my brother. Would have been kind of weird slash neat if Farimi was like this is the most important mission that is happening right now I'll go with you. If he and Sam assaulted Kyrithon together. If he and Sam assaulted Gollum together regularly.   They just stay like glared and he's like no reason. My God this is really all our hopes now lie with two little hobbits. They did like what? Like metaphorically right our hopes are like little hobbits crossing over the mountains like you gave them the ring.  We've left out one of the chief characters Samwise the brave I want to hear more about Sam. Sam the brave strongly beats meagol. Reggae. I was being serious so was I.  Just admit it already. Call me Samwise the brave Samwise. I'm sure after they filmed this Peter was like you're suspiciously good at this. Everyone gives Heath Ledger the credit for playing the insane person but Andy Serkis did it play before he did. That's what we're doing.


Welcome to my talk entitled How I Learned to Stop Worrying and Love Unit Testing. I'm Valerie Woolard, Trini Vossen. I'm a software engineer at Panoply, where I help build tools for your favorite podcasts. You can find me in the hallway later or on Twitter. My handle is Valerie Codes for podcast recommendations. But right now, we're going to talk a little bit about unit testing. Before we get into the talk, I also want to take a moment to appreciate our location here in the beautiful city of New Orleans and to borrow an Australian tradition called the Acknowledgement of Country, which is something I first saw Pat Allen do at Nation Ruby, to acknowledge the native people who first lived on this land. I take time to acknowledge the Choctaw, Huma, and other tribes, the traditional custodians of this land. And I extend that respect to other indigenous people who are present. Thank you for taking the time to appreciate their contributions to this land and this culture with me and for coming to attend this talk. Let's get started. I'm happy to be kicking off the testing track. I hope that this can teach you something if you're already doing testing and to give you an idea of where to start if that's something that's new to you. I chose this gif of Kermit the Frog, partly because I love Kermit the Frog and it made me laugh. But the other reason is that I love the carefree nature of Kermit the Frog. I think that a lot of the power that testing gives us is confidence. And good tests allow you to be confident that you won't accidentally break something. Good tests allow you to verify that a change in your code isn't actually changing the functionality of your program. And good tests let you worry less. And maybe they don't let you be as carefree as Kermit, but I'm hoping that they can come close. So let's start right off the bat with what are tests even for in the first place? Some of you may be fairly new to software and just know that testing is probably something that you should do without really knowing why. I talked a little bit about confidence. And one way you can think about tests is also as an act of kindness. When you write a test, you are taking the time to verify that your code works. This is a favor to your teammates and your future self. Think of it as an investment. Coming into a new code base or starting on a new project often feels familiar in certain ways. Maybe it's a language you're familiar with or a kind of program that you've written before. But there may be little gaps or assumptions that you make that are incorrect. It's kind of like playing croquet with a flamingo and a hedgehog. There are ways in which things might seem familiar, but there are ways that they are really not at all what you expect. Your old assumptions may not hold true and you have to figure out where the gaps are between your understanding and reality. And tests can help you bridge that gap. Who are tests for? So let's take a moment to talk about that. There's a bit of a story behind this quote. My parents are both in the art world and got me this book written by a friend of theirs about being a professional artist. I'm pretty sure they were hoping I'd be a professional artist. I'm not, but I really love this book. It's called Art and Fear because I think that it's incredibly relevant to programming and all sorts of creative work. I'm really obsessed with it. This will not be the last time I quote it in this talk. I have an idea for this talk where I just lecture about this book in the context of programming, but that's for another day. I had to sneak it in somehow. So to all viewers but yourself, what matters is the product, the finished artwork. To you and you alone, what matters is the process. In the context of software, the process of creating your artwork is often a collaborative one. So it's definitely a little bit different from being a solo artist unless you're just working on a side project by yourself. That said, writing tests is part of the process of writing software, not the finished product. A user of your application doesn't care about your tests as long as the product works. You should care about writing tests because they will help you build a product that works. If you're a user, you'd probably rather use a product that works perfectly and has no tests, but as a software developer, you'd much rather use a product that has some issues but is well tested. So the first and perhaps most obvious function of tests is protecting against bugs or at least catching those bugs before they make their way to production. The software that you're working on is likely to be a very complex system. You're probably not going to be the only one modifying it and it's not going to be possible to keep track or understand what's going on in every part of the application at any given time. A test therefore can serve as an audit trail of how something is supposed to work or used to work. When a test fails, you should have some proof or paper trail of when that test used to work so that you have an easier time identifying what broke it. You can use tests to prove that your code does what it says it does when you write it. Ideally, you can use a continuous integration process that will test your code every time you make a new commit. That way, when your test is green one commit and read the next commit, you can be pretty confident that some code that you changed in between those two commits has broken it. Good tests coupled with continuous integration will allow you to pinpoint and quickly correct any code that breaks those tests. Another great asset the test can provide for you is documentation. You may be more familiar with writing documentation in the form of comments or internal wikis, but that can get out of date very quickly and cause you some trouble. For example, here I've written a method that always returns the number four and I've written a comment talking about my method that only returns the number four. However, let's say I change this method like this. So now it returns the number five, but there is nothing that is going to force me to now update that comment to make it reflect the actual state of the code base. And if I return, change the return value of the method, the comment remains there as this terrible blatant lie. If you're using continuous integration, tests that have to be updated when they fail. So they're more likely to reflect the current state of the code base than your comments. Take, as a counter example, this test that I've written for this same method that always returns the number four. In the above example, nothing forces the comment to be updated when the output of the function is actually switched to five. And in a less trivial case, this could lead to comments giving future developers, including yourself, misleading information about the actual state of your code. Another good one is the comments that say, talk to so and so before you change this and so and so hasn't worked for the company for six months. Good tests can serve as an introduction to your code. Well-written tests along with well-named functions and variables should explain the desired behavior of your code as well as testing its functionality. Tests can also help prompt you when your code is getting too complex and help encourage good practices. As Sandy Met said in practical object-oriented design in Ruby, tests are the canary in the coal mine. When the design is bad, testing is hard. Writing tests as you write your code will help give you an idea of where the complexities in your code are. If you're not sure how to test a method, that method might be too complex and you need to be broken up into smaller functionality. If you find yourself having to write lots of scaffolding in order to even run your tests, that can help to signal that you may have too many external dependencies. The law of Demeter in object-oriented programming states that each unit should only have limited knowledge of other units and that a unit should only talk to its immediate friends. So unit testing is a great way to sort of enforce that methodology. How much does your class actually need from its neighboring classes? And if it's too much, then writing unit tests will be more complicated, which should serve as a hint to you to go back and simplify the code that you're testing. Another thing that tests do is allow for confidence and refactor. If you've got some code that's written in a way that makes it very difficult to reason about, you can't rewrite it if you can't reason about it in the first place. How are you going to preserve all that functionality without knowing quite what all that functionality is? Without tests, it's impossible to make changes to your code and ensure that you haven't broken other things. You are indeed living very dangerously because your only conception of how your code is supposed to work is within your own head and you have no way of verifying that this actually lines up with how it actually works or how it was originally intended to work, which could be three completely separate things. Efficient refactoring is only possible with a well-written test suite. This is an example of how taking the time to write good tests will save you time in the future. Refactoring is a hugely important part of writing good code, just as revision is an important part of writing. Remember in high school when you were writing an essay and you would type and type and type until you reached the word count and then you would print it out and never look at it again? That's not the way that you want to write code. You're not only depriving yourself of the chance to introspect a bit more about the code you've written while it's fresh in your mind. You're depriving future developers of more insight into how your code is supposed to work and how to tell if it is working. This knowledge is essential to making changes later. Here's art and fear again. This quote struck me in the context of testing because I feel like it's also kind of about refactoring. You make good work by, among other things, making lots of work that isn't very good and gradually weeding out the parts that aren't good. I think this is absolutely true about programming as well. I do most of my work by just putting my fingers to the keyboard and reasoning out the problem at hand in whatever way first comes to me. This is often pretty repetitive and sometimes needlessly complicated but this rough draft and starting point is essential to growth. Being able to edit and make improvements to your code over time is an essential part of improving as a developer but you can't remove the cruft without understanding exactly how your code is supposed to work and crucially when it stops working. That's the insight testing gives you. When you write tests, that gives you a chance to look through your code to get a sense of how you feel about it. Are the variables well-named? Is the logic clear? Do you feel like you're doing something hacky? Do a gut check and make changes where you see fit? After all, you've got some tests now so that shouldn't feel quite as scary. So these are the things that tests can do for you but what exactly makes a good test? Obviously not all tests are created equal but what differentiates them? A good test suite really only has to do two things. It needs to break when code that you've changed has broken your app and not break the rest of the time. Both of these things turn out to be much easier said than done. As it turns out, it's very difficult to predict what parts of an application are most likely to break with future changes and write tests in a way that exposes those things. It's also quite easy to write tests that break in ways that don't actually indicate failures in your code like a copy change or a timeout because something takes too long or the change in formatting of an output. You should also be wary of tests that might be prone to timeout or assume anything that could change such as say the year or anything about the environment that it's being run in. So this talk is about unit testing but we haven't really differentiated the different types of tests and what they really mean. You'll hear slightly different definitions from different sources. These are the definitions that are used in the Ruby on Rails guides. There are unit, functional, integration, and system tests. A unit test tests the smallest functional unit of code that it can such as a single method on a single class. In integration test, test aspects of a particular workflow and thus test multiple modules and units of your software at once. You might create an integration test to make sure that users can log in or create accounts. Functional tests look at controller logic and interactions. They are testing that your application handles and responds to requests correctly. This is, for example, tests on your controllers in a Rails app. System tests allow test user interactions with your application, running tests in either a real or a headless browser again in the case of Rails. System tests are like an automated QA script and probably most closely mirror the way you would perform manual QA in an automated environment. So out of all these types of tests, I'm choosing to focus on unit tests, so why is that? Of the test types I talked about, you'll notice that unit tests are by far the simplest. I like them because they're easy to write, easy to run, easy to reason about, and also help encourage modularity and cleanliness in your code as we discussed earlier. Individual methods are probably the things in your code that you have the best understanding of, making them easiest to write good tests for. And if your code is clean and modular, well-tested units should lead to a functional application. Unit tests are also very fast to run since they have the fewest dependencies and don't require spinning up something like a headless browser. That said, there will be times when you have to write other types of tests, but you should be thoughtful about when those times are because of the overhead involved. It's probably a good idea to have integration tests for the most critical workflows of your app, for example, or in the case of a company, the things that would be most likely to lose you a lot of money quickly if they were broken and shipped to production. System tests can be used to test important workflows, but can be slow and brittle, so it should be used with caution to supplement a robust unit test suite. So here are some of the things that you might be interested in testing. This is by no means an exhaustive list and there's plenty of documentation to be found online as to how to test different things, but these are some of the things that I find myself testing for most often. The most important thing to keep in mind as you start testing is to keep things simple. Each test should look at only one very small thing. Each of the bullet points I've listed here and the most common one, at least for me, I've given an example for, they're examples of what are called assertions. You're establishing an idea of what your code should do and when you run the test, the computer will tell you if it actually does or not. I've added in an example of using RSpec to run a few tests in just a simple IRB console. It may be a little too small to read, but these slides will be online if you wanna take a look. It's basically, I'm saying expect two plus two to equal four. That returns true. I then expect two plus two to equal five and I get an error, expectation not met error, expected five got four. So that's kind of the syntax that you'll be looking at. So the first time I run the test, it passes and when the test fails, the failure message includes the expectation that was not met, the expected value and the actual value. It's important as you first start testing to make sure that you glean as much information as you can from these error messages because they can tell you a lot. Don't just say, oh, my test failed, go back to the drawing board, really take a moment to think about what it's trying to tell you. You can see, or for example, you can test the exact value of a return value. Incidentally, you can also use array matching greater than, less than, includes the whole deal. You can make sure that a method causes another method to be called. You can check that a job is enqueued. You can check that a database object is created or destroyed. You can see if something is truthy or falsely or whether running a particular bit of code throws an exception and the content of that exception. This is, as I mentioned, not an exhaustive list but instead meant to get you thinking about how you might start writing unit tests for your code. So what is a unit test? As we noted, a unit test looks as the smallest possible unit of code. In the case of Ruby, that's a single method on a single class. In unit testing a method, you should think about all the reasonable inputs to that function as well as how the method should respond to invalid inputs. If your method uses branching or conditional logic, you should have a unit test that hits each possible branch or combination of branches. Here's an example of how I might approach unit testing this method that I wrote called greet. It's a fairly trivial method. It takes someone's name and says hello to them. If it gets a weird input like anything that's not a string, it just says hello and mentions that it didn't catch the person's name. That's a design decision on my part. I could also throw an exception or just call to string on any input that I received. The code examples here use RSpec but the general ideas should be applicable to whatever testing framework you're using. Because I have two possible conditions in my return values, as I mentioned, I wanna at the very least test every branch of any conditional logic that I'm using so I know that I need at least two unit tests. If I wanted to be especially thorough, I might test for other edge cases like different types of non-string input. You can see how if you have lots of branching logic that this can multiply and get complicated very quickly so let that serve as yet another incentive not to nest too many conditions in a single method. I've written a simple test for each of the possible conditions in this case. I've written two unit tests, one that calls the method using the expected input. This is something you might see called a happy path. I call the method using my name and it says hi Valerie and then I call the method using the number two and I make sure that I get the response saying hi I didn't catch her name. Just as a syntactical note here, I apologize for having to use a ternary operator here. I did it so I could fit everything on the slide. If folks are not familiar with that syntax, basic idea is that it's just an if else statement with the if part behind the question mark and the return value for the if right after that and then the return value for the else condition after the colon. So the site better specs has tons of resources on testing best practices and also ways to write your tests down to like the grammar of how they should be written in order so that the print out of like what failed and passed in your test suite is easiest for you to read. The same principles of readability that apply to your code are probably even more important in your tests. My general rule is that an English speaker who doesn't know Ruby should be able to read your test and have an idea of what it's doing. In our spec, things are named very deliberately to allow for this. You'll notice that the test syntax is it and then a string do and in the string you can give an English description for what you're actually testing for and then the syntax here expect this thing to equal this thing should be fairly easy to parse. The less readable your code is, the more straightforward your test should be although both should ideally be as straightforward as possible. So we've talked about what's good about tests and why you should write them but we've probably all been in or will be in the situations where test writing is skipped or overlooked. So why is that? What makes testing hard or causes it to be passed over? A lot of the challenges around testing boil down to time. Developer time, computational time, passage of time, writing tests take time. The first time you're writing something you're probably testing all your code manually in a development environment. You've convinced yourself pretty well that it worked and it doesn't seem like it's worth it to write tests then. Why write automated tests? That takes time that you could be spending writing your next feature.  This can make it more frustrating to push say an urgent fix through, especially if those tests take a long time to run or have spurious failures. You can also mitigate this by writing fast tests such as unit tests as we talked about, keeping those tests simple and using tools like Zeus to help load your tests faster. Testing anything that involves time can also be challenging. Let's say you wanna check that a timestamp is correctly recorded but fractions of a second elapsed between the time the object is saved and the test is run so the matching test actually fails. What if your test server is on a different time zone than your development and production environments? These issues can be mitigated by using gems like TimeCop which allow you to freeze time in your testing environment and the final aspect of time that can be difficult is knowing at what point in the process to write your tests and if you're waiting to write them until the end or trying to write them long after writing the code under test, it can be hard to remember what exactly you were doing and what things are most important to test. We tend to overestimate our own abilities to remember things and you're likely to forget the context for your code and decisions very soon after writing it. I think we've probably all experienced the moment of coming to a piece of code that we wrote maybe six months ago and not remembering anything about it or the state of mind that we were in when we wrote it. Even if you're not using true test driven development you should be writing tests alongside your code and writing out an idea of what you want your tests to look like before you begin writing code can be a helpful exercise in thinking about how you wanna structure your code. Another really challenging part of testing if you're faced with an app or code base with no tests is trying to figure out where to even start testing it. Instead of trying to take on the monumental task of writing tons of tests at once instead make sure that every new piece of code that you add is well tested. You can choose a testing framework and use tools to get an idea of your test coverage and then you can just start chipping away at it. I like to think about the Boy Scout rule where you leave your campsite cleaner than you found it when you got there and leave the code cleaner and better tested than you found it with every pull request. Are you fixing a bug? Stop before you fix it. Write a test that exposes it and fails. Now go and fix the code and turn it green. Are you writing a method? Make sure that you have a test, a separate test for every branch of its conditionals. Think about edge cases as we were talking about. Let's say the method gets passed in nil value, a string instead of a number, a negative number, zero, a really big number. Think about the ways you want that method to respond in those conditions and write tests that validate that behavior. Favor tests over comments as a means of explaining your code to future engineers. Get everyone on your team to agree that testing is important and agree on a strategy. You can use tools like coveralls to give you feedback about what code is and isn't covered by your existing test suite. Once you have a starting point, you can set a goal. For example, to increase code coverage by 5%. You can also decide, for example, that all PRs need to include tests in order to be merged. Now another thing that's really hard to test is external systems or dependencies. Let's say that your code makes a call to an external API and then parses that response. It's inefficient and clunky to actually make that call every time you run your tests, so what can you do? You have a few options. You can mock out a valid response in your tests and just make sure that you're doing the correct operations on it. You can use a tool like WebMock to construct fake HTTP responses or a tool like VCR to make a real request once and record the result, performing all future tests from the recording. Keep in mind that both of these methods rely on the current state or your interpretation of the current state of the API response format and if that changes, it has the potential to break your live app but not your tests. And with that, I hope that this talk has given you some ideas for how to start testing if you haven't already and has given you some ideas and things to think about in terms of your test suite if that's something you're doing already. Feel free to find me later or on Twitter with any questions and if you're interested in working for my company Panoply, we're hiring and I'd be happy to chat about that as well and go forth and conquer.


All the shareholders are coming in right now. Exxon knew about the cost they inflicted. They knew. And they need to pay. I say to Exxon, pay for the destruction you've done. Taxpayers and insurance freight payers shouldn't be the only ones paying for repeated and increasing extreme weather and rising seas you're causing. Pay your share for a just transition to renewable energy. The devastation was not just the homes and other buildings. It was the uprooting of the community itself. Over-profit. People over-profit. We're fighting for our actual lives. We're fighting for clean air. We're fighting for clean water. We're fighting for generation nips. Exxon! You need to pay.


Hi everyone, welcome to probably the last session of the day. Before we head to Boothcrawl and poster sessions, what are we going to talk about here? So as you might know, this is the steering committee of Kubernetes and this is the maintain a track session. So we'll be going to talking about some updates from what we have been doing in the past few months and something which is a surprise, which is related to the title, we'll come to that later on in the next part of the presentation. So I'm Nabarun. I'm Park Hoshi from Dark Cloud and I'm a newly elected member of the steering. Thank you. So the steering committee is a body of seven people and the people are spread across the globe from a lot of different companies and the committee usually goes through election every year where almost half of the committee rolls out or changes every year and is up for election. Half of the seats change. Before you go on to what we do, why do we need this committee even? The reason is we are very big. We have almost 85,000 plus contributors, contributing Kubernetes in the lifespan of the project. Currently we have almost 1200 org members. We used to have a lot until a few months back, but what we aim to do is we aim to prune org members every year who are inactive in the last screening duration. We have almost like 350 plus repos and 30 plus community groups. Community groups are essentially sakes, working groups and committees like the steering committee. We are the fifth largest open source project by developer Velocity, but last year I think we were second just after the kernel. Enough about why do we exist, but what does the steering do? So we are essentially the governing body of the Kubernetes project, making non-technical decisions about the project. And we also oversee the operations of the other community groups and if they are conforming to the charter that they decided to work on. And we also decide on if the updates to their charters are good for the long-term sustenance of the community. We also handle things related to financial planning. We tackle things like if any of the groups requires money for, let's say, giving out some swag or subscription to some service which will help them in fulfilling their work. And we define the project values and structure. You might have seen the Kubernetes project values that is upheld by the steering committee. Now, a few updates. Since, in Chicago, it's just been like three months, but we have progressed on a few things that we identified are very important for the community. One of them being annual reports. So these reports are supposed to be submitted by each community group every year to signify the health of the project, to give updates about what they did in the past year. Now, until last year, there were almost eight or nine questions of them, like most of them could have been generated data. Like how many caps did you work on? What caps did you work on? What is the status of the cap? What did you ship in the last year? Or how many contributors were there to your subprojects? And in last year, what we saw is we saw that eight groups didn't file the report, whereas 22 groups did file the report. Now, this made us go back to the drawing board and think, what is wrong? Why aren't one-third of our groups not even submitting the annual reports? And what can we do to make the process better for them? So we went ahead, talked with the community members, the chairs and tech leads, and we talked amongst ourselves, the standing committee, with the goal of making the annual reports better. So what we did is we collated or coalesced all the questions down to just two important questions and moved out all the generated content out into like separate things that we can generate any day if you want any community metrics. So the questions are, the first being what work did the SIG do that should be highlighted? It may be something which is in caps already or it may be something which is not captured by caps because caps only hold record for technical decisions and technical stuff inside the subproject. Nontechnical things usually don't show up in Kubernetes enhancement proposals. So it's important for the SIGs to highlight the work that they did across the year. And the next point is probably the more important one. What are the areas that the community groups feel that they need most help with? This has like far-reaching implications. First, if the signal that we get to know like which areas are understabbed, which areas have less number of maintainers and which need more curation or some more directed efforts like mentorship groups to grow more owners or grow more contributors in that area. And this also helps people who make decisions in companies to staff open source contributions by making sure that the areas which are understabbed and if they care about those areas in their products, they can stop those areas and make the sustenance better. For the groups, if you are a chair or a tech lead, two important dates. May 1st to file the PR to update the annual reports for review and we need to merge them by May 22nd. If you're not a chair or tech lead and if you contribute to any of the community groups in Kubernetes, I would highly recommend you to go ahead and help the chairs and TLS build that report. We have had very good examples in the last year where contributors were not the leads of those groups actually write the reports with the help of the leads. And that also makes them very good candidates for knowing more context in the groups and the future leaders of the groups essentially. So if you want to grow, that's also one ways that you can contribute. Now, while reviewing your sakes or working groups, if you're a SIG, I would highly request everyone to consider like adopting Subproject Leads. This is a new role, that new governance role that we introduced last year to ensure that there is a good stepping stone from a contributor to someone who owns code in a Subproject to a tech lead. Now, the Subproject Leads, you can look at the Subproject Leads when you want someone else to step in as a technical lead in your SIG and that is very important. And if I put annual reports, one thing that we did was going back to the context of financial planning, there were two reports that we usually maintain, the Steering Report and the Funding Report. The Funding Report usually used to have tickets for like request of resources. For example, if you want to get a subscription to a service like Buffer, you would request like, I need XYZ amount per month for this. Or if you're a Subproject or some area of Kubernetes where you need infrared resources, you can ask there and then we essentially look forward the request to CNCF through ServiceDex. Now, what we're seeing is having two different reports really did not make much sense. It's better to consolidate both into the same, so you consolidated funding into Steering. So if you in future need any help with resourcing, you have to create an issue in Steering. Now, I talked about the elections and how do we rotate every year? Elections are coming up in September, just before Q1 North America. I would highly recommend anyone who wants to make a difference or who sees that they can make a difference to the project, come and raise their hands for the elections, write a manifesto what they want to do and just participate in our process. That's one of the great ways to provide an impact to the community. Now, coming back to the title of where we've started. Like, where is the project going? It's the 10th year and we wanted to basically know what did our Emeritus Steering Committee members thought about their whole journey from day zero of Kubernetes to day 10 and what they feel about the future. What is going to come in Kubernetes or what do they see Kubernetes going towards in the next decade? So we asked a few concise questions and thanks to all of our Emeritus Steering Committee members for responding back and answering our questions and giving us the time and the space to actually know better what the intended Kubernetes to be and if they still think like that is the goal and if it's changed, what's their goal for the next decade? Now, we collated all those answers into a few themes like eight or 10 themes. We'll just go through some timelines of themes starting with the unexpected success of the project and what do they think about it right now? So Tim mentions that the most significant thing right now is the sheer scale of the community and how big it has become, which is also emphasized by Paris who mentioned that it was probably one of the first projects to reach 10,000 contributors and we are at 86,500 contributors last week. Maybe we have grown by 100 more as we see the velocity by now and it has become grand. And because of the sheer scale of Kubernetes, we have, and the composability of Kubernetes, we built a grand ecosystem around it. You are here for Kipcon and CloudNativeCon. So on one side, there is Kubernetes and on the other side, there is the whole CloudNative landscape of how many? I keep forgetting, I think it's 180 plus projects at this point in the CNCF and everything is built around Kubernetes. So this is what has been built and probably nobody expected it to be this big back in like 10 years back. And with that, we have a worldwide spanning community with Kipcons happening this year in four different locations. I think this is the first year when Kipcon is happening in North America, Europe, China, and India, which is showing up as the new entrant to the Kipcon org. Or now with the unexpected success, there's a cost. What is it? Almost half of the internet depends on Kubernetes. No pressure, right? Might break a release or two. The internet might break, maybe, we'll see. Having said that, it is also critical to make sure that because of the popularity of the project, things don't break and we ensure things like software supply chain security or whenever you deploy apps to Kubernetes, things are fine. When you run critical workloads on Kubernetes, things should run as usual. But there's a positive point. We will adapt to run workloads of the next decade. We started with like stateless applications, then went to stateful applications, then batch workloads, periodic workloads, HPC workloads, event-driven workloads, and the new age of AI workloads. But with the hidden success and the cost of popularity, there's a hidden cost too. And more so in the context of steering, it is hard work and it's not at all fun work. At many times, it's grunt work, be it like, I talked about the annual reports, 34 or 40 groups come up with the annual reports, collating them to a annual report called Scienceive Annual Report. Thanks to Paris and Bob. We did see that in 2022. I mean, many of us have used that annual report to convince our bosses to fund us to work on open source. Not just this Qtrip or anything, but day-to-day activities, doing things like Qtrip, doing things like steering, doing things like release. But it's not fun work at all. It's really hard work. And I thank everyone who has been doing this for years and years. Now, the stuffing situation, right? We have, the common theme has been funding of open source. But how many do fund open source? We haven't talked about this extensively in the Contributor Summit as well, in both the AMAs from the steering committee as well as the CNCF staff. The main trend which is being seen right now is since everything is like a well-oiled machine, Kubernetes releases are consistently coming every four months.  And what we've seen across time is the stuffing is reducing over time. We can see that in DevStats very easily, that the number of unique contributors across time had reached a peak back in, I would say like 2021 or 2022, pardon the numbers, but it is decreasing right now. And that is a grave situation. And that is a cost to us. And we need to make sure that we don't go beyond the criticality where the community will just break. Now, some challenges. What were the challenges across this 10 years? And some of the challenges will also be relevant for the next decade. Paris mentions that being the only woman for a while and not having her voice heard was one of the big problems. And even if you saw the current committee members, you would see a common pattern. This needs to be changed or we need more people from different set of backgrounds to come and join the community, to show interest in the community. The steering committee as well as the Kubernetes community so that people from everywhere feel heard and they can put their voices equally out in the open. The next step, Clayton mentions that things will keep on continuing to be heard. And I think this is the general theme. Things are not going to be, not going to get easy anytime soon. But what we need to do is make Kubernetes easier to consume. Make sure that people are able to use Kubernetes time to time. And there's one more thing about community is once people rotate out of the community, often the context gets lost. It's very important for us to keep documenting things that run the community. It's important to keep things updated. For example, when I was the release leader of Kubernetes 1.2.1, things were drastically different from what they are right now. And when I was there, I'm pretty sure that things were very different when people were releasing or Josh was releasing Kubernetes before <IP_ADDRESS>. Josh, I believe that was that or what? Oh, wow. So the importance of evolution of documentation and keeping context is very important. Things change, things keep on changing and we should not lose track of knowledge, experience and culture as well. What Joe mentions is on a different tangent as well. Too many choices. When you consume Kubernetes, there are a lot of things, lot of options that you have, but have we standardized on something? When I was talking to Joe, he mentioned that things like QADM, which made cluster bootstrapping a standard, we should have brought it up to a much bigger level and coalesced on all the different, 100 different ways to bring up a cluster, 100 different ways to consume Kubernetes. What if there's a standardized way? And with change, Derek mentions that we have to be patient with everything. I remember a sentence from Kristoff, who says like, we have to take a beat of the situation whenever we face a problem. When there is a problem, we should pause, sit down and think like what the community thinks about this, take a step back and then try to solve it. And finally, I think if any company or if any person is sitting here who consumes Kubernetes and has been consuming Kubernetes over time, upgrades is a pain. Upgrade, I believe like there was a report from some analytics company who mentioned that the major users of Kubernetes when we released 1.26 were still like 1.22 or 1.21. I don't remember the exact numbers or exact versions, but it was like when we released certain version, the most used is still like minus four or minus five, which probably are already out of date because we support only three at a time. And that's all about the challenges and I'll hand over to Paco to talk about the next part of the presentation. Also, I want to take a break for the upgrades because it really hurts many users. Years ago, when we released a new version, they asked me what's the new features and they are very curious about the new versions. But recently, I find that many users ask when we release a new release, they ask me why. A new release needs upgrade, there's a lot of work and they want no action required upgrades, not the current one, I think. And also Jordan has mentioned that in last QTS in Europe about that we want users to not have to look the details of their tree logs and upgrade. But it is so hard for us, I think. And so there are challenges here. And also we build the LTS team group to work on how to make this better experience for users to upgrade and there's many talks and also it will take many efforts from our maintainers. And here's the maintainer burnout. And firstly, the biggest challenge here is that mentioned Nikita, that many employers to found the consumers, I think recent several months, some of the maintainers did not leave the community for some, for job reason. And this is quite a big problem, I think. And also, maintainers at the earlier days, they can know everything about their project. But now it is bigger and bigger and not all maintainers can know everything. And so there are so many sticks. And sometimes we need to work across sticks and things become worse now, I think. And for a new beginner, when they want to know more about communities, they find it so hard. And so many things is updating and to catch up with those changes is very challenging. And also, we still have a lot of work to be done. Mr. Baijoi, and also he asked a lot of questions and thinks there's many things to do.  So there's a lot of work we can done. And also Clayton mentioned that there's the, I think it's the baseline that we should keep the SLOs and something like that is very important. And Dimps also mentioned that we can, we should leave it sustainable and in better hands than you're in early form. And later we will talk about, so next, you can listen to Dimps and team Hawkins talk tomorrow, I think. And this is about the current maintainers status. And another part is the clear boundaries. First, currently Kubernetes call is so important and we should make it sustainable call. Tim Pepper mentioned that. And also, we need to define a clear boundary between the core Kubernetes and the six sponsored new sub projects. And also we update the charts about the sub project leads. And this may help to our sub projects leads to grow and be recognized and we can in the sub projects, contributors can be very new ideas can test new ideas there. This will help the community to grow. And this one I think this is what we should do and the most important part is people is the most important part of our community. Contributors and also users. We should make sure everyone's voice was heard and respected mentioned by Clinton. And we should remember that we should give focus to people and find the empathy, find ways to translate and bridge the cross conflicts. This is quite important. And the Kubernetes has always been about the people and other previous member, I think most of them are so respect every contributions, big or small. And I think the most important part is what, because things change every day. And for example, now the AI is the new trend. And so the steering committee will not decide where the project go, but that's the contributors. We will make it possible to go where the contributor want to. That's very, very important. I think not only contributors, but also community users. And we should thank everyone about the involving in the community and doing things. This really helps us and listen to the community. And also we need to hold the truth to the core values. This is the most important part. And how to get that? We have several, we have done something, like weekly meeting, new users and contributors can show up there to share your ideas. And also this is quite important because when we do the annual report this before, this is quite important part of the, and also we have the shadow programs and currently not only RIS team and also PR and also other parts. This will help new contributors to grow. And we also asked about the next decade, but we cannot predict the future. So here are some ideas. First of all, this is asked by before about do we have the plan for V2? But I think until now I don't know any process about that. I think it is good. And so we will keep V1 going, yeah. And also we, in the new next decade, we should still do the right thing like before. I think this is the keystone technology here. And also we should focus on the distributor to the system developers and empower more people. Maybe 10 times or 100 times, but who knows? I'm not sure about that, but I think AI will help us and we may, as the user group grows so much, I think we may do that in the future. And AI is a new wave and you can see many things related to AI in KubeCon. And in today's keynote, Nikita mentioned that I find this picture is very interesting. The AI is the center of the universe now. And AI is the new wave and we're good to see the infestation in this area is also in KubeCon communities. To argue this, we should also consider building more connections with other communities like Linus Foundation. And we should collaborate with them to make the wave larger. And Clinton also mentioned that communities can be a big part of that, yes, I think. And this is an opportunity to improve those AI jobs on communities platform, on the platform. Yes, the big opportunity for us, also a challenge. So, any questions? Well, I think other steering may share some comments about. Okay, so one of the questions I have is, have any decisions of the steering committee ever been challenged and how do you handle that? Bob. I'll start with this. Honestly, it is quite difficult. We do essentially try and get together and make sure that we can speak publicly with one voice. We might be slow to reply on some things, but it's not always the case. And honestly, I don't think we've had two situations that are exactly alike. So it's really just trying to do our best and work from there. So even internally, when we try to make a decision, we have a rule to have majority consensus so that we agree on some decisions. And even when we try to vote on a decision, we keep a very long soak time in the community so that everyone can come in and comment. So that we understand what is the vibe of the majority. We keep the discussions in public. We keep the discourse in public so that the community as a whole can have enough time to come and communicate to us their concerns. So far, we have had only, as Bob said, like one or two situations where, or probably like, more than that. Yeah, I mean, yeah. That's why we have a private meeting and also another public meeting. Coming to the meetings, we have a monthly public meeting and a monthly bi-weekly public meeting and a bi-weekly private meeting. In the private meetings, we try to discuss any of the stuff which can create conflicts and try to come to a consensus so that it's publicly consumable. And anyone can come to us and raise their concerns in the public meetings or mail us in steering at the rate, communities.io or even privately, let us know their concerns in steering private at the rate, communities.io or on Slack. So they're available through three mechanisms. That was a nice question, though. Any more questions? It's a very hard question.  What happens when a work group doesn't file the annual report? What happens to these eight work groups? For most, nothing happens. For some, for all of them who don't file, we try to see what went wrong or what is going wrong if they have less contributors. We try to analyze the situation, take a beat of the situation and decide accordingly. For example, we have some working groups in the past one year that we saw probably are not relevant or they have sufficed with their goal because working groups are supposed to be not perpetual. They have a goal. If their goal is done, they should spin down or if they are relevant in some other circle, probably they should move there. For example, IoT Edge, that is more relevant at the CNCF level because it's not just about Kubernetes but about other projects as well. And we ask them to move to the CNCF level. So that's why we archive working groups. We have archived CIGIY in the past year. Not in? Yeah, but we were discussing about this because that is not very relevant anymore. We might archive that. So we do take a look at, and even before this discussion comes into the picture, we try to ping 50 times, 100 times, DMs publicly so that we get optimum attention. Any more questions? Thank you all for attending and have a nice good talk.


Hey, what's up? It's the Wing Chun Kid. Today, I'm gonna show you how to use soft versus hard attack. Fuck. All right, so how do you use the softness to defeat a hard attack? And I'm gonna show you how to do that right now. Here we go. All right, in a street fight, people are not gonna control punches and pull back their punch like that, all right? Like, you don't see that in the bar much. They're not gonna go boom, boom, look at that. Boom, jab, jab, jab, punch, right? They're not gonna do that. They're gonna put the whole body weight and do hand makers and stuff like that, right? First to grab or a push. First to grab or a push, and then boom. And bang, yeah. That's what happens, right? Okay, so you need to be able to use softness to defeat that, all right? Because if you're going strength against strength, I'm 135 pounds, you're, how much? Two, two 10. Two 10? I'm not gonna be able to defeat them, all right? I'm smaller, okay? My punches won't do as much damage. I'm just using my strength against the strength, okay? And especially in bar fights, a lot of punches don't land anyway. They're just flying in the air a lot of time.  So what you need to do is you use your body and movement as defense, all right? So for example, a big bunch of company, right? Because no matter where, I need to move out of the way and use my softness to let him just go and just go down like that, okay? So they're giving me the energy, right? Hard energy. So if I meet hard energy with hard energy, I'm gonna bounce off and that. Example of strength against strength is let's say he's punching me or pushing me with a hard push, and then I use my strength to try to push him back. I'm gonna get knocked back because I'm lighter than him and not as strong as him, right? So why do I wanna use strength against strength?  Or even if he punches and I block his punch with this, boom, I'm gonna bounce off. Yeah, I block the punch, but then that energy is going through my body. I'm flying back into the wall over some bar, chair, or whatever, right? Pretty much. And just like the layer you just explained to me, it's like getting shot in the gun with a bulletproof press. Your vessel absorbs the energy, but that still is gonna break your ribs, right? It's better to get out of the way.  Right, so it's better to use softness. So what's up? I'm not relaxed. I feel it in my body and I go backwards. Now I'm relaxed. I don't, I move back, yeah, go. But that's not as much, all right? So that's softness as defense. You're getting your balance better and you actually don't absorb the energy in your body to damage your internal organs or ribs as much. And rather, it actually makes you absorb the energy in your whole body bone structure instead of your internal organs, okay? So that's one way of using softness. Hey, thanks for watching this video. So what did you learn in this lesson, Larry? Well, basically by using soft concepts in fighting, you can absorb and get less damage in a fight and be able to transfer the damage back to that person trying to injure you. All right, cool. So yeah, if you wanna learn more about this internal art, how to use softness to increase your defensive capability, increase your offensive capability through softness, it's really a contradiction, right? How do you use softness to be a better fighter? That's why we use this ancient Chinese art and if you wanna learn more about that, make sure you subscribe to this channel and check out some of my other awesome videos too. So we'll see you in the next lesson.